What's wrong with this? f :: ((?param :: a) => b) -> a -> b f foo a = foo with ?param=a g :: (?param :: a) => a g = ?param h :: a -> a h = f g 'ghci -fglasgow-exts' (5.02) gives this error: Could not deduce (?param :: a) from the context () Probable fix: Add (?param :: a) to the type signature(s) for h arising from use of `g' at Implicit.hs:10 In the first argument of `f', namely `g' In the definition of `h': f g 'hugs -98' (Feb 2000) gets as far as this: Reading file "/usr/share/hugs98/lib/Prelude.hs": Reading file "Implicit.hs": Type checking ...and spins there. There's a workaround for ghci, but it doesn't help hugs: h :: a -> a h = f (g with ?param = ?param) This is very odd, as surely the type of (g with ?param = ?param) is the same as the type of g? -- Ashley Yakeley, Seattle WA
participants (1)
-
Ashley Yakeley