Is a type synonym declaration really a synonym ?

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) Thanks.

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
participants (3)
-
alpheccar
-
Stefan O'Rear
-
Twan van Laarhoven