[Haskell-cafe] Tracer for Haskell showing substitutions
Ezra Lalonde
ezra.lalonde at gmail.com
Tue Feb 2 13:03:50 EST 2010
Hi,
"Hat": The Haskell Tracer.
http://www.haskell.org/hat/
>From the site:
Hat helps locating errors in programs. Furthermore, it is useful for
understanding how a (correct) program works, especially for teaching and
program maintenance. Hat is not a time or space profiler. Hat can be used
for programs that terminate normally, that terminate with an error message
or that terminate when interrupted by the programmer.
"Vital"/"Pivotal": it's dead, but it may be interesting to you anyway.
http://www.cs.kent.ac.uk/projects/pivotal/
http://www.cs.kent.ac.uk/projects/vital/
>From the site:
Pivotal has similar goals to its predecessor system, Vital. In particular:
* Documents are live in the sense that, if a document is changed, the
displayed values are automatically re-evaluated. Thus documents are always
in a consistent state.
* Direct manipulation of ADT values is supported. That is, an end user
is able to manipulate the text of a Haskell module simply by point-and-click
mouse operations on displayed values.
Pen and paper work too.
Ezra.
Ulrik Rasmussen-2 wrote:
>
> Hi all,
>
> I was wondering if someone has written a tracer/debugger that shows you
> how a given Haskell expression is evaluated, by generating all the
> intermediate states of the expression until it is in normal form?
>
> For instance, given the following code:
>
>> take' 0 xs = []
>> take' n (x:xs) = x : take' (n-1) xs
>> exp = take' 2 [1,2,3,4,5,6]
>
> the trace of 'exp' would generate something like this:
>
>> exp = take' 2 [1,2,3,4,5,6]
>> exp = (\n (x:xs) -> x : take' (n-1) xs) 2 [1,2,3,4,5,6]
>> exp = 1 : take' (2-1) [2,3,4,5,6]
>> exp = 1 : take' 1 [2,3,4,5,6]
>> exp = 1 : (\n (x:xs) -> x : take' (n-1) xs) 1 [2,3,4,5,6]
>> exp = 1 : 2 : take' (1-1) [3,4,5,6]
>> exp = 1 : 2 : take' 0 [3,4,5,6]
>> exp = 1 : 2 : (\0 xs -> []) 0 [3,4,5,6]
>> exp = 1 : 2 : []
>> exp = [1,2]
>
> That is, all the substitutions performed when evaluating 'exp' from left
> to right.
>
> I was thinking that something like this could be rather useful when
> teaching or learning Haskell.
>
>
> Thanks,
>
> Ulrik
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
--
View this message in context: http://old.nabble.com/Tracer-for-Haskell-showing-substitutions-tp27421880p27424789.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
More information about the Haskell-Cafe
mailing list