Jay Cox wrote: > > > Any referal to a paper describing the differences between HNF and WHNF > (yes, that includes yours Simon PJ!) would be appreciated. Actually, > I really, really want that reference to at least read that > bit about WHNF.
I found "Functional Programming" by Field and Harrison (ISBN 0201192497) useful: An expression E is in HNF if: 1. E is a constant or a variable 2. E is an expression of the form \x_1.\x_2...\x_n.M, where expression M is not a redex, n > 0 3. E is of the form P E_1 E_2 ... E_n, where P is a function of arity k > n, n >= 0 and E is in WHNF if: 1. E is a constant or a variable 2. E is an expression of the form \x.M, for any sub-expression M 3. E is of the form P E_1 E_2 ... E_n, where P is a function of arity k > n, n >= 0 In other words, as I understand it, the difference between HNF and WHNF is that any lambda abstraction is in WHNF but only those lambda abstractions that have irreducible bodies are also in HNF. In all other respects WHNF and HNF are identical, that is, any variable and constant is in both WHNF and HNF, and any patially applied function is also in both forms. Any corrections are welcome! konst _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell