Описание тега 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? мотивация Пытаясь ответить на другой вопрос, я уменьшил проблему до такой степени, что я получил следующую ош…
16 янв '15 в 18:57
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…
27 фев '15 в 19:21
2
ответа
Могу ли я реализовать этот новый тип как композицию других типов?
Я написал новый тип Const3 это очень похоже на Const, но содержит первый из трех заданных аргументов типа: newtype Const3 a b c = Const3 { getConst3 :: a } Я могу определить очень много полезных экземпляров для этого нового типа, но мне придется сде…
19 авг '15 в 22:07
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, чтобы глубже проникнуть в эту тему, и пытался одновременно использовать полиморфные типы и семейства типов. Например, начало файла имеет следующие языковые расширения (в файле их больше, чем показано здесь)…
03 дек '21 в 21:09
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)сопоставляю…
26 янв '22 в 03:37
1
ответ
Scala 3. Тип полиморфизма и тип AnyKind - любой пример кода?
Scala3 поддерживает «видовой полиморфизм». В документах также упоминается тип: AnyKind играет особую роль в системе подтипов Scala: это супертип всех других типов, независимо от их типа. Вопрос: может ли кто-нибудь привести пример рабочего кода, как…
18 фев '23 в 14:47