Скажем, я пытаюсь определить type Test o e = Nub o e => e
Затем я получаю сообщение об ошибке в финале e
, сообщающее, что оно не может соответствовать #Type
с Type
Но type Test o e = Nub o e => Record e
работает нормально, поэтому я полагаю, что он не хочет, чтобы я использовал переменную типа строки в результате моего определения.
А потом type Test (e :: #Type) = e
работает, так что нет ничего плохого в том, чтобы иметь #Type
там обычно.
Так что что-то в ограничении Nub
меняет правила о том, какой тип я могу определить, но я не понимаю, как. Что здесь происходит?