Unexpected behaviour of type synonyms with type variables
With the following definitions
module test
:: TypeT1 m a = Ty1 (m a)
:: TypeT2 m a = Ty2 (m a)
:: Ident a = Ident a
:: Type1 a :== TypeT1 Ident a
:: Type2 a :== TypeT2 Ident a
This is not allowed and throws an error:
:: ShortHand a :== TypeT1 Type2 a
Error [test.icl,14,ShortHand]: Type1 used with wrong arity
Manually expanding the type synonym works:
:: ShortHand a :== TypeT1 (TypeT2 Ident) a