:: Bool) . ((a == a) && (b == b)) ~ 'True => (); f = ()
Prelude Data.Type.Equality Data.Type.Bool> f
<interactive>:11:1: error:
• Couldn't match type ‘(a0 == a0) && (b0 == b0)’ with ‘'True’
Почему этот констрейнт не вычисляется?
Потому что a0 == a0 - это Neutral term, пока a0 остаётмя переменной унификации, терм считается застрявшим и далее не вычисляется
Обсуждают сегодня