[Haskell-cafe] let and fixed point operator
Derek Elkins
derek.a.elkins at gmail.com
Thu Aug 30 18:05:53 EDT 2007
On Thu, 2007-08-30 at 23:58 +0200, jerzy.karczmarczuk at info.unicaen.fr
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.
More information about the Haskell-Cafe
mailing list