Почему Haskell не может решить отчасти [[]] (Список списков)?
Почему это не просто *-> *, поскольку я могу дать ему тип как Интервал и добраться [[Интервал]], который является видом *.
Я думаю, что это то же самое, что и с Может быть,
, хотя в последнем случае причина, возможно, более ясна: конструктор "внешнего" типа ожидает передачи тип типа *
, но видит конструктор типа типа * -> *
(«внутренний» Maybe
/ []
) и жалуется. Если я прав, это проблема не в функциональности : kind
GHCi, а скорее в поиске правильного синтаксиса для выражения состава конструкторов типов более высокого порядка.
В качестве обходного пути можно использовать что-то вроде
:kind forall a. [[a]]
:kind forall a. Maybe (Maybe a)
(при включенном соответствующем расширении языка - ExistentialQuantification
, я думаю - для включения синтаксиса forall
).