, просматривающих пикшу различных пакетов, которые я часто прихожу вместе экземпляр документаций, которые выглядят так (Control.Category):Что * (звезда) или другие виды означают в списке экземпляров пикша
Category k (Coercion k)
Category * (->)
или этого (Control.Monad.Trans.Identity):
MonadTrans (IdentityT *)
Что именно здесь означает подпись вида? Он не отображается в исходном коде, но я уже заметил, что это происходит в модулях, которые используют расширение PolyKinds. Я подозреваю, что это похоже на TypeApplication, но с видом. Так, например, последний пример означает, что IdentityT
является монадным трансформатором, если его первый аргумент имеет вид *
.
Так что мои вопросы:
- ли моя интерпретация правильно и что именно делает вид подписи относится?
- В первом экземпляре
Category
, как я должен знать, чтоk
- это вид, а не тип? Или мне просто нужно знать арностьCategory
? - Каков исходный код, аналогичный этому синтаксису?
Я не прошу объяснения видов.
Согласен, я также считаю это ошибкой. Возможно, использование 'Category @k (Coercion k)' было бы лучшей нотации. – chi
Бывают случаи, когда необходимо указать тип переменных типа, отсутствующих в типе. Эта комбинация действительно затрудняет поиск разумного способа документировать. – Carl