Is there any way to view the steps that a haskell program goes through step by step? I'm thinking something similar to what I've seen in things I've been reading. For example: foldl (+) 0 [1..10] => (0+1) => ((0+1)+2) => (((0+1)+2)+3) => etc. I've seen these sorts of line-by-line execution steps, but I was curious if there was any way to simply type in a function and its arguments and have ghci or hugs or something print out this sort of visual representation of what's going on. Anyone know of something like this?
On 8/16/07, Ian Duncan <iand675@gmail.com> wrote:
Is there any way to view the steps that a haskell program goes through step by step? I'm thinking something similar to what I've seen in things I've been reading. For example: foldl (+) 0 [1..10] => (0+1) => ((0+1)+2) => (((0+1)+2)+3) => etc. I've seen these sorts of line-by-line execution steps, but I was curious if there was any way to simply type in a function and its arguments and have ghci or hugs or something print out this sort of visual representation of what's going on. Anyone know of something like this?
You probably want to check out Hat: http://www.haskell.org/hat/ I've only used it a bit myself but I think it provides some of the features you're looking for. -Brent
hartthoma@linuxpt:~>cat test.hs import Debug.Trace foo = foldl (\first second -> (trace ( "first: " ++ ( show first) ) first) + (trace ( "second: " ++ (show second) ) second) ) 0 [1,2,3] bar = foldl (+) traceIt x = trace ("\nTraceIt:\n"++show x++"\n") x hartthoma@linuxpt:~>ghc -e foo test.hs first: 0 second: 1 first: 1 second: 2 first: 3 second: 3 6 hartthoma@linuxpt:~> hope this helps. Ian Duncan <iand675@gmail.com> Sent by: haskell-cafe-bounces@haskell.org 08/16/2007 08:20 PM To haskell-cafe@haskell.org cc Subject [Haskell-cafe] Looking at program execution Is there any way to view the steps that a haskell program goes through step by step? I'm thinking something similar to what I've seen in things I've been reading. For example: foldl (+) 0 [1..10] => (0+1) => ((0+1)+2) => (((0+1)+2)+3) => etc. I've seen these sorts of line-by-line execution steps, but I was curious if there was any way to simply type in a function and its arguments and have ghci or hugs or something print out this sort of visual representation of what's going on. Anyone know of something like this? _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe --- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
or actually just... hartthoma@linuxpt:~>cat test.hs import Debug.Trace foo = foldl (\first second -> trace ( ( show first) ++ ("+") ++ (show second ) ) ( first + second) ) 0 [1,2,3] hartthoma@linuxpt:~>ghc -e foo test.hs 0+1 1+2 3+3 6 hartthoma@linuxpt:~> is probably better Thomas Hartman <thomas.hartman+external@db.com> Sent by: haskell-cafe-bounces@haskell.org 08/17/2007 10:52 AM To haskell-cafe@haskell.org, iand675@gmail.com cc Subject Re: [Haskell-cafe] Looking at program execution hartthoma@linuxpt:~>cat test.hs import Debug.Trace foo = foldl (\first second -> (trace ( "first: " ++ ( show first) ) first) + (trace ( "second: " ++ (show second) ) second) ) 0 [1,2,3] bar = foldl (+) traceIt x = trace ("\nTraceIt:\n"++show x++"\n") x hartthoma@linuxpt:~>ghc -e foo test.hs first: 0 second: 1 first: 1 second: 2 first: 3 second: 3 6 hartthoma@linuxpt:~> hope this helps. Ian Duncan <iand675@gmail.com> Sent by: haskell-cafe-bounces@haskell.org 08/16/2007 08:20 PM To haskell-cafe@haskell.org cc Subject [Haskell-cafe] Looking at program execution Is there any way to view the steps that a haskell program goes through step by step? I'm thinking something similar to what I've seen in things I've been reading. For example: foldl (+) 0 [1..10] => (0+1) => ((0+1)+2) => (((0+1)+2)+3) => etc. I've seen these sorts of line-by-line execution steps, but I was curious if there was any way to simply type in a function and its arguments and have ghci or hugs or something print out this sort of visual representation of what's going on. Anyone know of something like this? _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe --- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe --- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
participants (3)
-
Brent Yorgey -
Ian Duncan -
Thomas Hartman