Я пытаюсь определить семейство типов данных, один из параметров которого приводит к типу пустой кортеж ()
, но он не компилируется. Вот минимальный рабочий пример:
{-# LANGUAGE TypeFamilies #-}
data family F a
data instance F Int = ()
Выдаваемая ошибка компилятора говорит: «Недопустимая привязка встроенного синтаксиса: ()
». Почему я получаю эту ошибку, хотя я не пытаюсь изменить определение ()
, а скорее устанавливаю его как результат некоторого вычисления (оценка семейства типов)?
Как бы то ни было, программа компилируется при замене ()
на Bool
.