Roberto Zunino-2 wrote: > > Alas, for code like yours: > foo = \f -> (f 'J', f True) > > there are infinite valid types too: > (forall a. a -> Int) -> (Int, Int) > (forall a. a -> Char)-> (Char, Char) > (forall a. a -> (a,a)) -> ((Char,Char),(Bool,Bool)) > ... > > and it is much less clear if a "best", most general type exists at all. >
How about foo :: (exists. m :: * -> *. forall a. a -> m a) -> (m Char, m Bool) Not quite Haskell, but seems to cover all of the examples you gave. -- Kim-Ee -- View this message in context: http://www.nabble.com/Aren%27t-type-system-extensions-fun--tp17479349p17531238.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe