On Sat, Dec 22, 2007 at 10:22:46PM +0100, alpheccar wrote: > Can someone confirm me that: > > type TA = A :+: B > type TB = C :+: D > type T = TA :+: TB > > is not equivalent to > > type T = A :+: B :+: C :+: D > > where I have defined > > infixr 6 :+: > data (f :+: g) > data A > data B > data C > data D > > I have a computation at type level which is working with the later > definition of T but not with the former (ghc 6.8.1)
Type synonyms are implicitly parenthetized, and your :+: is
non-associative. Compare:
s +:+ t = concat["(",s,",",t,")"]
foo = "a" +:+ "b"
bar = "c" +:+ "d"
baz = (foo +:+ bar) == ("a" +:+ "b" +:+ "c" +:+ "d")
Stefan
signature.asc
Description: Digital signature
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
