Вопросы по теме 'gadt'
Могу ли я статически отклонять различные экземпляры экзистенциального типа?
Первая попытка
Сложно сделать этот вопрос содержательным, но для минимального примера предположим, что у меня есть такой тип:
{-# LANGUAGE GADTs #-}
data Val where
Val :: Eq a => a -> Val
Этот тип позволяет мне с радостью составить...
311 просмотров
schedule
27.10.2021
Как я могу получить экземпляр данных для GADT в Haskell?
У меня есть GADT, который всегда используется только с двумя разными параметрами: ForwardPossible и ():
-- | Used when a forward definition is possible.
data ForwardPossible = ForwardPossible deriving (Eq, Ord, Typeable, Data, Show)
-- | GADT...
1373 просмотров
schedule
13.11.2021
Простое лямбда-исчисление DSL с использованием GADT в OCaml
Как с помощью GADT определить в OCaml простой DSL, похожий на лямбда-исчисление? В частности, я не могу понять, как правильно определить средство проверки типов для преобразования нетипизированного AST в типизированный AST, а также не могу определить...
1463 просмотров
schedule
04.11.2021
Неявные аргументы и семейства типов
Я экспериментировал с программами с зависимой типизацией, используя библиотеку Data.Singletons, после разработки векторов с аннотациями длины в статье «Зависимо типизированное программирование с синглетонами» и столкнулся со следующей проблемой....
220 просмотров
schedule
06.10.2021
Является ли такое использование GADT полностью эквивалентным экзистенциальным типам?
нравится
data Foo = forall a. MkFoo a (a -> Bool)
| Nil
можно легко перевести на GADT:
data Foo where
MkFoo :: a -> (a -> Bool) -> Foo
Nil :: Foo
Есть ли между ними различия: код, который компилируется...
294 просмотров
schedule
03.11.2021
Что означают данные в Haskell?
Я видел этот фрагмент в журнале разработчиков omegagb :
data ExecutionAST result where
Return :: result -> ExecutionAST result
Bind :: (ExecutionAST oldres) -> (oldres -> ExecutionAST result) ->
ExecutionAST result...
3991 просмотров
schedule
20.02.2022
Создайте GADT при разборе json
У меня есть структура данных, которую я создал с помощью GADT, и я хочу проанализировать некоторый json для этого GADT, используя aeson . Но средство проверки типов жалуется, что во всех случаях возможно создать только один из конструкторов GADT....
98 просмотров
schedule
27.02.2022
GADT против MultiParamTypeClasses
Я пытаюсь понять GADTs , и я просмотрел пример GADT в руководстве GHC. Насколько я могу судить, то же самое можно сделать и с MultiParamTypeClasses :
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies,
FlexibleInstances,...
1195 просмотров
schedule
31.03.2022
Всего постоянных очередей в реальном времени
Окасаки описывает постоянные очереди реального времени, которые могут быть реализованы в Haskell с использованием типа
data Queue a = forall x . Queue
{ front :: [a]
, rear :: [a]
, schedule :: [x]
}
где инкрементальные вращения...
435 просмотров
schedule
14.05.2022
Будущее ролей для переменных типа GADT?
Во вчерашнем вопросе было определение HList (из HList ), который использует семейства данных. В принципе:
data family HList (l :: [*])
data instance HList '[] = HNil
newtype instance HList (x ': xs) = HCons1 (x, HList xs)
pattern HCons x...
336 просмотров
schedule
18.06.2022
Haskell: определение типа при использовании функциональных зависимостей с семействами типов и GADT
Мне пришлось использовать множество расширений, чтобы создать безопасное представление встроенного языка в Haskell. В какой-то момент, когда я ввел взаимную функциональную зависимость, вывод типа остановился, чтобы выяснить правильные замены для...
247 просмотров
schedule
25.06.2022
Комбинатор парсеров Idris GADT
В настоящее время я работаю над реализацией простой библиотеки комбинатора синтаксического анализатора в Идрисе, чтобы изучить язык и лучше понять системы типов в целом, но у меня возникли некоторые проблемы с пониманием того, как объявляются и...
455 просмотров
schedule
30.06.2022
Жонглирование вводом с помощью GADT во время выполнения
Я разрабатываю типизированный формальный язык, то есть формальный язык, в котором каждая буква имеет представление определенного типа. Пока что у меня есть следующее:
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}...
113 просмотров
schedule
06.07.2022
Как определить Eq-экземпляр списка без GADT или контекстов типа данных
Я использую Glasgow Haskell Compiler, Version 7.8.3, stage 2 booted by GHC version 7.6.3 .
Я попытался использовать следующее определение данных для типа List в Haskell:
data Eq a => List a = Nil | Cons a (List a)
Однако флаг...
1175 просмотров
schedule
14.07.2022
Сопоставление с образцом в GADT не удается
Я немного поигрался с ReasonML и обнаружил, что сопоставление с образцом на type t из следующего примера не работает с ошибкой
Ошибка: этот шаблон соответствует значениям типа t (float), но ожидался шаблон, который соответствует значениям...
268 просмотров
schedule
07.08.2022
Имеют ли значение переменные типа в заголовках GADT?
Есть ли разница между этими двумя декларациями GADT?
data A a b where
...
data A :: * -> * -> * where
...
197 просмотров
schedule
13.08.2022
Использование GADT для обработки исключений
вот моя проблема
Я использую Control.Exception.catch для обработки исключений следующего типа: (выбрано из Hoogle)
catchSource
:: Exception e
=> IO a
The computation to run
-> (e -> IO a)
Handler to invoke if an exception is...
234 просмотров
schedule
21.09.2022
Конгруэнтность для гетерогенного равенства
Я пытаюсь использовать гетерогенное равенство для доказательства утверждений, включающих этот индексированный тип данных:
data Counter : ℕ → Set where
cut : (i j : ℕ) → Counter (suc i + j)
Я смог написать свои доказательства, используя...
441 просмотров
schedule
08.02.2023
Попытка разработать рекурсивную функцию уровня типа для получения ввода и вывода функции
Следующие определения необходимы, чтобы понять, о чем я спрашиваю:
data Param = PA | PB | PC
data R p a where
A :: S a -> R PA (S a)
B :: S a -> R PB (S a)
data S a where
Prim :: a -> S a
HO :: R pa a -> R pb b -> S ((R...
101 просмотров
schedule
04.07.2023
Невозможно правильно определить преобразование из универсального типа, определенного с помощью GADT.
Я определил универсальный тип данных, который может содержать что угодно (ну, с текущей реализацией не совсем ничего)!
Вот он (полный код):
{-#LANGUAGE NoMonomorphismRestriction#-}
{-#LANGUAGE GADTs#-}
{-#LANGUAGE StandaloneDeriving#-}
data...
102 просмотров
schedule
20.02.2023