On Mon, Feb 28, 2005 at 11:10:40PM -0500, Jim Apple wrote: > Jon Fairbairn wrote: > >If you allow quantification over higher > >kinds, you can do something like this: > > > > d f = f . f > > > > d:: âa::*, b::*â*.(b a â a) â b (b a)â a > > > > What's the problem with > > d :: (forall c . b c -> c) -> b (b a) -> a > d f = f . f > > to which ghci gives the type > > d :: forall a b. (forall c. b c -> c) -> b (b a) -> a
Or one could do its dual (?). > d :: (forall c . c -> b c) -> a -> b (b a) > d f = f . f rank-n polymorphism is fun :) now, I guess the tricky thing is creating a function which will work as d head and d (:[]) ... John -- John Meacham - ârepetae.netâjohnâ _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell