Clean.Types: Uniqueness attribute propagation in unification
(a, *b) cannot be unified with
*(a, *b) while they are in fact the same due to attribute propagation (section 9.2 of the Clean Language Report). It would probably be best to write a function
propagate :: Type -> Type and call that before attempting unification. However, the reference manual isn't too clear:
If a unique object is stored in a data structure, the data structure itself becomes unique as well.
This for example doesn't apply for
-> -- are there other conditions where propagation halts?