[Haskell-cafe] what does @ mean?.....
jules at jellybean.co.uk
Fri Dec 28 11:35:17 EST 2007
Serge LE HUITOUZE wrote:
> I tend to believe that the '@' notation is mere syntactic sugar.
> Indeed, it seems to me that Haskell compilers need not to be very clever to
> share the identical sub-expressions, for one very simple reason implied by
> Haskell semantics: referential transparency.
> Am I right, or am I missing something?
You are missing that modifying a program in a way which adds sharing can
have disastrous performance effects.
In particular, adding sharing can stop something being GCed, which can
convert an algorithm which runs in linear time and constant space to one
which runs in linear space (and therefore, perhaps, quadratic time).
Therefore compilers have to be conservative about adding sharing.
In general, sharing in GHC-compiled programs is specified rather
explicitly: sharing is naming, so things which are names (let-bound or
pattern-bound) are guaranteed shared and normally nothing else.
You can *imagine* a compiler being cleverer about this. It turns out to
be an interesting but hard problem.
More information about the Haskell-Cafe