[Haskell-cafe] Graphical representation of Haskell code
Miguel Vilaca
jmvilaca at di.uminho.pt
Mon Mar 29 09:29:17 EDT 2010
Hi,
For Reekie's Visual Haskell, see http://ptolemy.eecs.berkeley.edu/~johnr/papers/visual.html
Also take a look on the CAL language (http://openquark.org/Open_Quark/Welcome.html
"Welcome to the (...) Open Quark Framework for Java, and the lazy functional language CAL."
AFAIK, the CAL language is Haskell alike and have a nice editor!!
Some papers that might be of interest:
VEX: W. Citrin, R. Hall, and B. Zorn. Programming with visual ex- pressions. In VL ’95: Proceedings of the 11th International IEEE Symposium on Visual Languages, page 294, Washington, DC, USA, 1995. IEEE Computer Society.
Pivotal Keith Hanna. Interactive Visual Functional Programming. In S Peyton Jones, editor, Proc. Intnl Conf. on Functional Programming, pages 100–112. ACM, October 2002.
Visual Haskell Hideki John Reekie. Realtime Signal Processing – Dataflow, Visual, and Functional Programming. PhD thesis, University of Technology at Sydney, 1995.
VPF Joel Kelso. A Visual Programming Environment for Functional Languages. PhD thesis, Murdoch University, 2002.
Visual Lambda Laurent Dami and Didier Vallet. Higher-order functional composition in visual form. Technical report, University of Geneva, 1996.
best regards
Miguel Vilaça
A 2010/03/24, às 23:30, Dupont Corentin escreveu:
> 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
>>
>> -- 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/20100329/45f68802/attachment.html
More information about the Haskell-Cafe
mailing list