Dec 2001 Hugs balks at the following simple program, while ghc 5.02.1
likes it just fine.
module Tst where
t1 :: (Num a) => Int -> ((?z :: Int) => a) -> a
t1 w imp = imp with ?z = w
The Hugs error message:
ERROR "f:/Shader/tst.hs":3 - Inferred type is not general enough
*** Expression : t1
*** Expected type : Num a => Int -> ((?z :: Int) => a) -> a
*** Inferred type : Num Int => Int -> ((?z :: Int) => a) -> Int
I can eliminate the error message by making the function be monomorphic
or by eliminating the first argument and using a numeric literal, i.e.,
hugs likes the following just fine:
t2 :: Int -> ((?z :: Int) => String) -> String
t2 w imp = imp with ?z = w
t3 :: (Num a) => ((?z :: Int) => a) -> a
t3 imp = imp with ?z = 3
- Conal