Описание тега polykinds

1 ответ

Можно ли определить типы данных с переменным числом родов?

Я могу определить многогранное естественное преобразование следующим образом: type family (~>) :: k -> k -> * type instance (~>) = (->) newtype NT a b = NT { apply :: forall x. a x ~> b x } type instance (~>) = NT Который работа…
11 сен '18 в 04:57
1 ответ

Неоднозначная переменная вида с PolyKinds

Учитывая следующий код {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE PolyKinds #-} type family Tagged (m :: * -> *) :: k class Example (t :: k) (a :: *) where type Re…
09 ноя '17 в 11:41
1 ответ

GHC не может вывести без поднятия

Я сталкиваюсь с тем, что выглядит как недействительный код, сгенерированный Happy. Проблема сводится к тому, что GHC не выводит сигнатуру типа с многоугольником для функции. Вот пример этого: {-# Language MagicHash #-} f x = () main = pure (f 1#) По…
02 авг '17 в 23:05
1 ответ

Что означает * (звезда) или другие виды в списке экземпляров пикши

Просматривая пикши различных пакетов, я часто сталкиваюсь с документами экземпляров, которые выглядят так ( Control.Category): Category k (Coercion k) Category * (->) или это ( Control.Monad.Trans.Identity): MonadTrans (IdentityT *) Что именно зд…
21 янв '17 в 10:23
1 ответ

Типовая рекурсия и PolyKinds

Я пытаюсь реализовать полиморфную функцию, которая по существу пересекает тип, накапливая Tag значение. Я хотел бы, чтобы пользователи могли делать, например, rec ((1,2), ('a', 3)), {-# LANGUAGE KindSignatures, PolyKinds, FlexibleInstances #-} {-# L…
10 окт '18 в 17:48
2 ответа

Является ли применение многогранного типа инъективным?

Является ли применение многогранного типа инъективным? Когда мы включаем PolyKindsмы знаем что f a ~ g b подразумевает f ~ g а также a ~ b? мотивация Пытаясь ответить на другой вопрос, я уменьшил проблему до такой степени, что я получил следующую ош…
2 ответа

Добросовестная неоднозначность при использовании PolyKinds и семейств типов

У меня есть два семейства типов, одно из которых сопоставляет один тип другому типу другого типа и полиморфной функции: {-# LANGUAGE PolyKinds, TypeFamilies, FlexibleContexts, ScopedTypeVariables #-} type family F (a :: k1) :: k2 type family G (a ::…
13 янв '19 в 20:47
3 ответа

RankNTypes и PolyKinds

В чем разница между f1 а также f2? $ ghci -XRankNTypes -XPolyKinds Prelude> let f1 = undefined :: (forall a m. m a -> Int) -> Int Prelude> let f2 = undefined :: (forall (a :: k) m. m a -> Int) -> Int Prelude> :t f1 f1 :: (forall…
2 ответа

Могу ли я реализовать этот новый тип как композицию других типов?

Я написал новый тип Const3 это очень похоже на Const, но содержит первый из трех заданных аргументов типа: newtype Const3 a b c = Const3 { getConst3 :: a } Я могу определить очень много полезных экземпляров для этого нового типа, но мне придется сде…
1 ответ

Есть ли общий способ применения ограничений к типу приложений?

Комментарий пользователя 2426021684 побудил меня выяснить, возможно ли придумать функцию типа F такой, что F c1 c2 fa демонстрирует, что для некоторых f а также a: fa ~ f a c1 f c2 a Оказывается, самая простая форма это довольно легко. Тем не менее…
16 дек '16 в 06:36
1 ответ

В Haskell, как изменить порядок множественных типов

Скажи, что у меня есть тип l :: * -> * -> *, поэтому мне нужно применить 2 типа, например a, а также b получить простой тип l ab. Как я могу сопоставить тип l :: * -> * -> * в новый тип m(l) :: * -> * -> * где m(l) b a означает то …
25 дек '19 в 17:48
2 ответа

Объединение поликодированной переменной количественной оценки с кортежным типом

У меня есть следующий класс, представляющий категории, в которых класс объекта представлен видом, а каждый класс hom представлен типом, индексированным типами вышеупомянутого типа. {-# LANGUAGE GADTs, DataKinds, KindSignatures, PolyKinds #-} type Ho…
22 сен '19 в 14:27
1 ответ

Что такое полиморфные / поликиндированные кортежи?

Пока я вопросы задавалhaskell-exrcises . Я видел следующий код, который создает агрегат, применяя каждый тип к конструктору ограничений. В GHC кажется, что глубоко вложенные кортежи s по-прежнему являются своего рода Constraint (возможно, сплющенный…
10 авг '21 в 19:17
2 ответа

Расширение Haskell PolyKinds и семейства типов

Я работал над семействами типов в Haskell, чтобы глубже проникнуть в эту тему, и пытался одновременно использовать полиморфные типы и семейства типов. Например, начало файла имеет следующие языковые расширения (в файле их больше, чем показано здесь)…
1 ответ

Бесполезная ошибка равенства рода в начале файла

я получаю сообщение об ошибке app\Main.hs:1:1: error: Couldn't match kind `*' with `Constraint' When matching types b :: * (Set b, Set s) :: Constraint | 1 | {-# LANGUAGE TypeFamilies #-} | ^ я не знаю почему bи ограничение (Set b, Set s)сопоставляю…
1 ответ

Scala 3. Тип полиморфизма и тип AnyKind - любой пример кода?

Scala3 поддерживает «видовой полиморфизм». В документах также упоминается тип: AnyKind играет особую роль в системе подтипов Scala: это супертип всех других типов, независимо от их типа. Вопрос: может ли кто-нибудь привести пример рабочего кода, как…
18 фев '23 в 14:47