Works here. GHC 7.4.2
On Jul 30, 2012, at 11:32 PM, Artyom Kazak <artyom.ka...@gmail.com> wrote: > Hello, > > I have accidentally written my version of polyvariadic composition > combinator, `mcomp`. It differs from Oleg’s version ( > http://okmij.org/ftp/Haskell/polyvariadic.html#polyvar-comp ) in three > aspects: a) it is simpler, b) it works without enumerating basic cases (all > existing types, in other words), and c) it needs more type extensions. > >> {-# LANGUAGE >> MultiParamTypeClasses >> , FunctionalDependencies >> , FlexibleInstances >> , UndecidableInstances >> , TypeFamilies , OverlappingInstances >> #-} >> >> class Mcomp a ar b br | a br -> b where >> mcomp :: a -> (ar -> br) -> b >> >> instance (a ~ ar, b ~ br) => Mcomp a ar b br where >> mcomp a f = f a >> >> instance (Mcomp a ar b br) => Mcomp (x -> a) ar (x -> b) br where >> mcomp a f = \x -> mcomp (a x) f > > My question is: why doesn’t it work when I replace > > instance (a ~ ar, b ~ br) => Mcomp a ar b br > > with > > instance Mcomp a a b b > > ? I thought that equal letters mean equal types… > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe