[GUI] I love GIO.

John Hughes rjmh@cs.chalmers.se
Fri, 21 Feb 2003 11:29:17 +0100 (MET)

On Wed, 12 Feb 2003, Daan Leijen wrote:

>   Warning about the use of (:=): This symbol has been proposed by John
> Hughes for use in some future version of Haskell to distinguish
> monomorphic and polymorphic `let` constructs.  (See, for example,
> http://www.math.chalmers.se/~rjmh/Globals.ps , section 6.)  You might
> prefer to choose a different symbol, such as (:==) or (::=).
> Thanks for mentioning this. However, (:=) is a rather attractive
> constructor to use and I wonder if a monomorphic binding is used enoug
> to justify taking another operator away.
> It might be better after all to have a family of "let" bindings in a
> future haskell:
let -- lazy binding
let!  -- strict binding
let$ -- > speculative binding (ie. try operationally strictly but maintain lazy
> semantics)
let# -- monomorphic binding ?...
> -- Daan.

The trouble with this idea is that let is associated with a BINDING GROUP,
not with an individual binding -- and indeed, some binding groups (e.g.
the top level!) have no associated let. You really want to be able to
mark, say, one top-level binding as monomorphic. So the right place to
attach this information is to the syntax of the binding itself -- that is,
the equals sign.