
9 Jun
2006
9 Jun
'06
10:57 p.m.
I'm curious about a type inference oddity. In the code below, if I leave off the type signature for tmap, both GHC and Hugs infer that tmap has type... tmap :: (b -> a, b -> a) -> Twist b b -> Twist a a ...I'm wondering why they couldn't infer the more general... tmap :: (a -> b, c -> d) -> Twist a c -> Twist b d
data Twist a b = Nil | Cons a (Twist b a) deriving Show
x = (Cons "foo" (Cons 1 (Cons "bar" (Cons 2 Nil))))
tmap :: (a->b,c->d) -> Twist a c -> Twist b d tmap _ Nil = Nil tmap (f,g) (Cons x rest) = Cons (f x) (tmap (g,f) rest)
Thanks, Greg Buchholz