Dan Piponi writes:
In mathematics, if you write "x = f y" you mean that these two
expressions are equal. In Haskell, if you say "x = f y" you mean *make*
then equal!


Haskell is a declarative language, not an imperative language. When
you write "x = f x" in Haskell, you're declaring to the compiler that
x equals f x. In an imperative language like Java, the line x = f(x)
gives the compiler the imperative to emit instructions to store the
value of f(x) in a 'box' called x. In Haskell, there is no box.

Well, there are boxes...
But there also thunks and latent, yet-unevaluated graphs...
Anyway, I believe strongly that ALL people who have problems with the
Haskell protocole, and they are numerous, I teach a good sample of them,
should be encouraged to learn Prolog. IN DEPTH, and I mean it, Andrew
Coppin and Peter Hercek !
In Prolog A=B is the unification, which is a bit more than equality, and
something much more aggressive than an assignment. When you REALLY
understand unification, it will be easier to see the lazy instantiation
of the Haskell assignment, and, additionally, it becomes much more easy
to understand the automatic inference of types, which sooner or later
must be harnessed by all Haskell programmers... The best. Jerzy Karczmarczuk

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to