These features are described in the Haskell Report but have not yet
been implemented in Hugs:
Mutually recursive modules have not been implemented.
Hugs does not use the Unicode character set yet. Characters
are currently drawn from the ISO Latin-1 set.
Fixities are global instead of localized in each module. The
same name cannot be associated with more than one fixity even if the
names are in different modules.
Derived instances for large tuples are not supplied. Instances
for tuples larger than 5 (3 in the 16 bit PC system) are not in the
Prelude.
Derived Read instances do not work for some infix constructors.
If an infix constructor has left associativity and the type appears
recursively on the left side of the constructor, then the read instance
will loop.
Derived Show instances put a space after a comma. The
report is inconsistent abut this (spaces are used in lists but not in
tuples).
The syntax for n+k patterns is slightly more lenient. For example,
Hugs "incorrectly'' accepts f ((+) x 1) = x as a legal n+k pattern.
The syntax of sections is slightly different. For example, the
Haskell expression (2*3+) must instead be written
as ((2*3)+).
There are some subtle differences between the Hugs and Haskell
type systems. In particular:
Polymorphic recursion is only supported for values whose declared
types do not include any class constraints.
Some valid Haskell programs that make essential use of the local
class constraints that are sometimes associated with individual member
functions are treated as type errors in Hugs.
We ignore entity lists in qualified imports (but unqualified
imports are treated correctly). For example, you can write:
import qualified Prelude ( foo )
even though foo is not exported from the Prelude and you can
write:
module M() where
import qualified Prelude () -- import nothing
x = Prelude.length "abcd"
The floating point printer is not exactly as defined in the
report. The printed form of a
floating point number may re-read as a slightly different number.
The Double type is implemented as a single precision
float (this isn't forbidden by the standard but it is unusual).