[Hat] Qualified variable in pattern: T.mkRoot
Ian Lynagh
igloo at earth.li
Wed Jun 29 08:36:15 EDT 2005
On Wed, Jun 29, 2005 at 12:11:22PM +0100, Thomas Davie wrote:
>
> On 28 Jun 2005, at 21:03, Ken T Takusagawa wrote:
>
> >The following short program:
> >
> >module Main where
> >Just foo = undefined
> >
> >Causes an error message:
> >hmake -hat hatd.hs
> >hat-trans hatd.hs
> >Wrote Hat/hatd.hs
> >/usr/bin/haskell-compiler -c -package hat -o Hat/hatd.o
> >Hat/hatd.hs
> >
> >Hat/hatd.hs:10:10: Qualified variable in pattern: T.mkRoot
> >
> >with hat 2.0.4 and ghc 6.4-2 (debian)
>
> My last reply I realise was somewhat useless - in that the addition
> of a main function still gives the error. However, I think that this
> is actually hat catching a syntactic error that the normal compilers
> don't catch... The haskell syntax states:
>
> decl -> gendecl
> | (funlhs | pat0) rhs
>
> where, gendecl covers type definitions, funlhs covers functions (and
> must start with a lower case character), and pat0 covers 0 arity
> paterns.
The 0 is the tightness of binding, not the arity.
pat^0 -> pat^1 -> ... -> pat^10 -> gcon apat_1
Such contructs look a bit odd at the top level, but I think
foo x = f y
where Just y = x
is more common. Even more so is
[ x | Just x <- xs]
Thanks
Ian
More information about the Hat
mailing list