On Thu, 2007-08-30 at 23:58 +0200, [EMAIL PROTECTED] wrote: > 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...
One should learn Prolog anyway. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe