Re: Visualising Haskell function execution
Gregory D. Weber <gdweber <at> iue.edu>
2014-08-09 19:29:02 GMT
On 2014-Aug-09, Jerzy Karczmarczuk wrote:
> Jan Paul Posma <me <at> janpaulposma.nl <mailto:me <at> janpaulposma.nl>> wrote:
> > Last weekend my friend Steve and I did a small project for
> > visualising Haskell function execution in the browser. It's meant
> > to be used in education, and uses a tiny custom parser. I figured
> > it could be of interest for anyone here learning or teaching
> > Haskell: https://stevekrouse.github.io/hs.js/
> Indeed, this is a nice, and potentially useful initiative, thanks.
> I have some observations, though.
> 1. Before its "wide distribution" as suggested by Kim-Ee, it would
> be nice to provide a minimum documentation on the project page.
> 2. It is not always clear what is the relation between the work of
> the system, the expression expansion, and what Haskell REALLY does.
> For, say: (foldr plus 0 [1 2 3 4 5]) the development/reduction
> depends on what you click. You may get
> (plus1(plus2(foldrplus0[3 45]))) or
> (1+(foldrplus0[2 345]))
> and a beginner might have serious problems to understand what really
> happens in a true Haskell program.
> 3. The system accepts typing abominations, say, (foldlplus[1 234
> 5]) and joyfully develops the structure, which cannot be finally
> 4. I don't understand the relation between the typing and the
> behaviour. I tested foldl with my own function put into the function
> editor: const x y = x without type declaration.
> The expression is expanded, but never reduced, const remains in the
> final expression. When const type is declared, it is reduced.
> 5. I tried to define my own recursive function (a factorial) and
> test it replacing one of the standard examples. This breaks the
> system. If it is not allowed, please say so explicitly. If I did
> something silly, please see my point (1).
From the pink error messages I'm seeing today (though I don't remember
seeing them yesterday when I tried something similar), it looks like
the * operator is not supported; the only numerical operators are + and -
> My best regards, and thank you once more.
> Jerzy Karczmarczuk
> Caen, France
> Haskell-Cafe mailing list
> Haskell-Cafe <at> haskell.org
Gregory D. Weber, Ph. D. http://mypage.iu.edu/~gdweber/
Associate Professor of Informatics Tel (765) 973-8420
Indiana University East FAX (765) 973-8550