# a trap for the unwary

**Mark P Jones
**
mpj@cse.ogi.edu

*Fri, 1 Dec 2000 10:58:43 -0800*

Hi Malcolm,
|* Today, I thought I had discovered a bug in ghc. Then I tried hbc
*|* and Hugs, and they also rejected my program with the same error.
*|* nhc98 alone accepts it without complaint. I looked up the Report,
*|* and it seems that the program is indeed incorrect.
*|*=20
*|* > f x =3D y
*|* > where
*|* > y | isSpace x =3D True
*|* > y | otherwise =3D False
*
For what it's worth, older versions of Hugs would have accepted this
too. Only quite recently was it changed to conform to the report.
Incidentally, although the above is not valid Haskell, the following
should work just fine:
f x =3D y
where
y | isSpace x =3D True
| otherwise =3D False
The difference is that I haven't repeated the left hand side of the
definition in the second equation, which means that it's treated as
one definition, not two.
All the best,
Mark
(PS. An even nicer way to write this definition: f =3D isSpace :-)