[Haskell-cafe] Graphical representation of Haskell code

Dupont Corentin corentin.dupont at gmail.com
Wed Mar 24 19:30:55 EDT 2010


Hello,
Very interresting.
Visual Haskell seems to be very close to the thing i imagined.
Mihai what do you think?
Unfortunatly i cannot find it on the web!
There is something for MS Visual Studio but i don't think this is the
same...

Corentin



On Thu, Mar 25, 2010 at 12:07 AM, Miguel Vilaca <jmvilaca at di.uminho.pt>wrote:

> Hi all,
>
> Concerning INblobs, it's again online; a fire damaged the cable that links
> the university to the world!!
> I don't update the tool for a long time... but I'll take a look on that.
>
> Concerning visual functional programming, see this small chapter of my
> thesis about some of the existing languages.
>
>
> There are more subtleties on the visual side than those expected!!
>
> If you also consider debugging tools, take a look on Ghood
> http://hackage.haskell.org/package/GHood
>
> best regards
> Miguel Vilaça
>
> A 2010/03/23, às 05:31, Ronald Guida escreveu:
>
> On Mon, Mar 22, 2010 at 7:02 PM, Dupont Corentin
> <corentin.dupont at gmail.com> wrote:
>
> Hello, I’m relatively new to Haskell.
>
> I’m wondering if it exist a tool to graphically represent Haskell code.
>
> ...
>
> Let’s try to do it on a simple example, as an exercise:
>
> f = Map (+1)
>
>
> Your graphic for "f = map (+1)" seems much more complex than the
> corresponding code.  I would agree with Ivan Miljenovic:
>
> I'm of the opinion that unless you just use it on small snippets,
>
> the generated images will be too large and unwieldy.
>
>
> The first question I would ask is /why/ would you like to visualize
> some Haskell code?  If you want to see the high-level structure of
> a complex program, try SourceGraph. (I have never used it though.)
>
> On the other hand, if you are trying to visualize Haskell as part of
> your efforts to learn the language, then I believe it would be best to
> draw diagrams by hand, rather than relying on an automated tool.
> The kinds of things that you'll want to depict are probably going to
> vary considerably, depending on what you're trying to understand.
>
> Consider a few different implementations of the "map" function:
>
>  -- version 1: recursion
>  map1 :: (a -> b) -> [a] -> [b]
>  map1 f [] = []
>  map1 f (x:xs) = (f x) : map1 f xs
>
>  -- version 2: fold
>  map2 :: (a -> b) -> [a] -> [b]
>  map2 f = foldr ((:) . f) []
>
>  -- version 3: continuation passing style
>  map3 :: (a -> b) -> [a] -> [b]
>  map3 f xs = map' (\x y -> f x : y) xs
>    where
>      map' k [] = []
>      map' k (y:ys) = k y  (map' k ys)
>
>  -- version 4: list comprehension
>  map4 :: (a -> b) -> [a] -> [b]
>  map4 f xs = [f x | x <- xs]
>
>  -- version 5: list monad
>  map5 :: (a -> b) -> [a] -> [b]
>  map5 f xs = xs >>= (return . f)
>
> These all do exactly the same thing, but each one uses different
> techniques.  If I'm trying to learn (or teach) Haskell, I would
> probably need a slightly different visual "language" for each one
> in order to capture the most relevant concepts in a useful way.
> How would you visualize them?
>
> @Mihai Maruseac:
> I think a visual debugger would be a wonderful idea.  You may want
> to consider how a visual debugger would work with each of these
> versions of map.
>
> :-) You might also consider several versions of factorial :-)
> http://www.willamette.edu/~fruehr/haskell/evolution.html<http://www.willamette.edu/%7Efruehr/haskell/evolution.html>
>
> -- Ron
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100324/375224c3/attachment-0001.html


More information about the Haskell-Cafe mailing list