[Haskell-cafe] let and fixed point operator
Albert Y. C. Lai
trebla at vex.net
Thu Aug 30 15:11:51 EDT 2007
Peter Hercek wrote:
> So the question is what am I missing? Any nice use cases where
> fixed point search is so good that it is worth the trouble with
> figuring out new and new variable names for essentially the same
> stuff?
When I write functional code, I do find myself writing recursions much
more often than writing imperative-wannabe assignments. I appreciate
that Haskell's "let" defaults to recursion. I don't appreciate that
OCaml makes a distinction between "let" and "letrec", since every time I
change a non-recursive definition to a recursive one, I am prone to
forget to change "let" to "letrec", IOW it is a hidden hazard to
maintenance and evolution.
When I write imperative code in Haskell, the notation is so different
from functional code that "let" doesn't even come into the equation.
When I write imperative code in imperative languages, my mental model
treats "x:=x+1" as "x'=x+1 and y'=y and z'=z and ...", following several
treatises on imperative semantics(*). Going back to functional
programming, when I do write imperative-wannabe assignments, I totally
like having names x, x', x'', etc., since they're in my head anyway.
Underlying all this is probably the soberness of recognizing that "=" is
not ":=".
(*) Such as:
Eric C. R. Hehner, "A Practical Theory of Programming". First edition
Springer 1993. Current edition at
http://www.cs.toronto.edu/~hehner/aPToP/
C. A. R. Hoare and He Jifeng, "Unifying Theories of Programming".
Prentice Hall 1998.
The Z specification language.
More information about the Haskell-Cafe
mailing list