[Hat] Program Compiles With GHC 6.6 but not Hat
Olaf Chitil
O.Chitil at kent.ac.uk
Fri Nov 17 15:43:54 EST 2006
This is caused by a limitation of Hat: Hat cannot handle defaulting of
numeric classes.
Your Haskell program makes use of defaulting: The main function could
work with numbers of either type Int or Integer. The Haskell defaulting
rule says that in such a case it should choose Integer.
To help Hat add a type annotation, e.g.
main = do { print (takeodds [(1::Integer) ..7]); }
To get a better error message, you could compile your original program
without -hat but with the additonal line
default()
which turns defaulting off and thus will yield an error message about an
ambiguous type variable referring to your original program.
In real programs we have hardly ever come across uses of defaulting.
Ciao,
Olaf
Aditya Siram wrote:
> The following program compiles and runs on GHC 6.6 but fails to
> compile with the '-hat' option to hmake. The error message is:
> **Begin Output**
> hat-trans HatTest.hs
> Wrote Hat/HatTest.hs
> ghc-6.6 -c -package hat -o Hat/HatTest.o Hat/HatTest.hs
>
> Hat/HatTest.hs:40:50:
> Ambiguous type variable `a' in the constraint:
> `Integral a'
> arising from use of `htakeodds' at Hat/HatTest.hs:40:50-58
> Probable fix: add a type signature that fixes these type variable(s)
> **End Output**
>
> The program source is:
>
> import Prelude
>
> takeodds xs = [ x | x <- xs, (mod x 2) ==0]
>
> main = do { print (takeodds [1 ..7]); }
>
>
> Thanks...
> Deech
>
> _________________________________________________________________
> Talk now to your Hotmail contacts with Windows Live Messenger.
> http://clk.atdmt.com/MSN/go/msnnkwme0020000001msn/direct/01/?href=http://get.live.com/messenger/overview
>
>
> _______________________________________________
> Hat mailing list
> Hat at haskell.org
> http://www.haskell.org/mailman/listinfo/hat
More information about the Hat
mailing list