В Foldable
documentaion, я вижу следующий пример:Роль звездочек (виды, *) в этом откидном случае
(Foldable f, Foldable g) => Foldable (Compose * * f g)
Если я смотрю на определении Compose, я вижу, он объявлен как
newtype Compose f g a = Compose f (g a)
, который имеет вид (* -> *) -> (* -> *) -> * -> *
, справа? (что, как я полагаю, предполагается). Теперь, насколько я могу видеть, я предполагаю, что это было бы правильно написать:
(Foldable f, Foldable g) => Foldable (Compose f g)
С Compose f g
также имеет вид * -> *
. Однако, я думаю, что есть два идентификатора kind
. Но в чем причина?
Я думаю, что это проблема с генерацией документации; дополнительные '*' отображаются в документации для экземпляров 'Compose',' Product' и 'Sum', но не в самом источнике. – chepner