Haskell 98 Report possible errors, part one

Simon Peyton-Jones simonpj@microsoft.com
Mon, 23 Jul 2001 08:33:43 -0700


| Unfortunately both the old and the new situation are not so=20
| nice. Both don't allow a simple translation of Haskell into=20
| the Haskell kernel, e.g. you cannot translate [1..] into=20
| Prelude.enumFrom 1, because the latter may be ambiguous.
|=20
| The following remark at the beginning of Section 3 is misleading:
|=20
| Free variables and constructors used in these translations=20
| refer to entities defined by the Prelude. To avoid clutter,=20
| we use True instead of Prelude.True or map instead of=20
| Prelude.map. (Prelude.True is a qualified name as described=20
| in Section 5.3.)

The report is vainly trying to say that, regardless of what is
lexically in scope, the builtin syntax refers to Prelude entities.

Perhaps I should reword the offending paragraph to say:

    Free variables and constructors used in these translations=20
    refer to entities defined by the Prelude, regardless of what
    variables or constructors are actually in scope.  For example,
   "concatMap" used in the translation of list comprehensions (Section
3.11)
    means the "concatMap" defined by the Prelude, regardless of whether
    or not "concatMap" or "Prelude.concatMap" are in scope.

Would that be better?

Simon