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.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe