Вопросы по теме 'gadt'

Могу ли я статически отклонять различные экземпляры экзистенциального типа?
Первая попытка Сложно сделать этот вопрос содержательным, но для минимального примера предположим, что у меня есть такой тип: {-# LANGUAGE GADTs #-} data Val where Val :: Eq a => a -> Val Этот тип позволяет мне с радостью составить...
311 просмотров

Как я могу получить экземпляр данных для 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 просмотров

Комбинатор парсеров 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 просмотров

Сопоставление с образцом в 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