[Haskell-cafe] Inferred type not most general?
haskell at sleepingsquirrel.org
Fri Jun 9 22:57:19 EDT 2006
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
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)
More information about the Haskell-Cafe