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

Сравнение типов во время выполнения для переноса полиморфных структур данных в GADT.
Предположим, мы определяем GADT для сравнения типов: data EQT a b where Witness :: EQT a a Можно ли тогда объявить функцию eqt со следующей сигнатурой типа: eqt :: (Typeable a, Typeable b) => a -> b -> Maybe (EQT a b)...
430 просмотров
schedule 06.05.2022

Scala Type-Inference для конструктора типов
У меня есть вопрос относительно вывода типов в конструкторах типов Scala. Я использую Scala 2.9.1... Предположим, я определил дерево: sealed trait Tree[C[_], A] case class Leaf[C[_], A](a: A) extends Tree[C, A] case class Node[C[_], A](a:...
447 просмотров

Как использовать функциональные зависимости и экзистенциальную количественную оценку, чтобы удалить ненужный параметр для моего типа
В библиотеке HLearn, над которой я работаю, у меня есть тип данных контейнера, который выглядит так: data (Model params model) => Container' params model = Container' { baseparams :: params , basemodel :: model } Проблема в...
352 просмотров
schedule 02.12.2022

Когда GADT были введены в GHC?
Когда GADT были введены в GHC? (версия + дата) Кроме того, они по-прежнему считаются расширением языка или теперь они являются частью стандарта Haskell?
217 просмотров
schedule 21.03.2023

Деконструкция GADT: где я теряю контекст?
У меня есть этот тип и эти функции: data Tag a where Tag :: (Show a, Eq a, Ord a, Storable a, Binary a) => a -> BL.ByteString -> Tag a getVal :: Tag a -> a getVal (Tag v _) = v isBigger :: Tag a -> Tag a -> Bool a...
221 просмотров
schedule 09.04.2024

действительно ли этот GADT имеет репрезентативную роль типа
Этот тип данных может иметь type role HCons' representational representational , что позволяет использовать coerce для добавления или удаления новых типов, применяемых к элементам, без необходимости обхода списка. data HNil' = HNil' data HCons'...
309 просмотров
schedule 15.06.2022

Список любого типа DataKind в GADT
Отказ от ответственности GADT и DataKinds для меня неизведанная территория, поэтому некоторые их ограничения и возможности мне неизвестны. Вопрос Итак, я пишу AST для эмиттера кода JavaScript, и я определил один крайний случай между...
291 просмотров
schedule 12.05.2022

Создание выражения GADT в OCaml
Вот мое игрушечное выражение GADT: type _ expr = | Num : int -> int expr | Add : int expr * int expr -> int expr | Sub : int expr * int expr -> int expr | Mul : int expr * int expr -> int expr | Div : int expr * int expr...
583 просмотров
schedule 11.11.2022

Вектор, содержащий GADT
Я просто изучаю все, что могу, об ExistentialQuantification, GADT, KindSignatures и т. д. И для этого я пытаюсь придумать несколько небольших программ, которые помогают мне лучше понять все. Теперь у меня есть этот небольшой фрагмент (который на...
112 просмотров

Обеспечение правильности данных
Я занимаюсь программированием на Haskell уже несколько месяцев, и мне это очень нравится. Я чувствую, что хорошо разбираюсь в монадах, функторах, чистоте и т. Д. Теперь, когда я использую эту прекрасную систему типов, идея о возможности выразить...
93 просмотров
schedule 26.05.2022

Построение конкретных типов для классов типов с помощью GADT
Вдохновением для этого является создание списка значений, которые являются экземплярами Show . Я нашел следующий фрагмент, который использует GADT для создания конкретного Showable типа. data Showable where Showable :: Show a => a ->...
97 просмотров
schedule 11.06.2023

Автоматическое получение ограничений класса типов с помощью GADT
Я пишу библиотеку для работы с бесконечными последовательностями, используя ленивую оценку. Для краткости я использую обобщенные алгебраические типы данных (GADT), чтобы установить ограничение Ord для индекса каждого термина в последовательности....
91 просмотров

Функции GADT
Это дополнительный вопрос о функциях для полиморфных типов данных . Тип данных Question моделирует вопрос/ответ с помощью Message (текст вопроса) и функции ( String -> a ), которая сопоставляет ввод пользователя с результатом вопроса:...
186 просмотров
schedule 30.04.2022

Как я могу программно создать этот тип данных из другого?
Я бы хотел использовать DSum для чего-то. Чтобы работать с DSum , вам нужно иметь тип «тег», который принимает один аргумент типа, например. data Tag a where AFirst :: Tag Int ASecond :: Tag String Однако я хотел бы использовать это...
102 просмотров

Избегайте избыточных ограничений при работе с фантомными типами
Это упрощенный, возможно, глупый пример того, что я пытаюсь закодировать (что более сложно и требует кодирования длины списка во время компиляции). Учитывая следующее: {-# LANGUAGE DataKinds #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE...
159 просмотров
schedule 24.06.2022

Типы ограничений в конструкторе GADT
У меня простой ADT data Concept a = Entity a | Role a | Relation a | Resource a | Sub (Concept a) Теперь я хочу создать GADT, используя этот ADT, который будет ограничивать сигнатуру типа его конструкторов. Этот код не будет работать, но я...
242 просмотров

Может ли кто-нибудь объяснить синтаксис типа, используемый в этой программе OCaml?
Приведенные ниже типы взяты из этот вопрос (* contains an error, later fixed by the OP *) type _ task = | Success : 'a -> 'a task | Fail : 'a -> 'a task | Binding : (('a task -> unit) -> unit) -> 'a task | AndThen : ('a -> 'b...
350 просмотров
schedule 25.07.2023

Должен ли я разыгрывать Nat-kind каждый раз?
Я попытался смоделировать квантовый компьютер. Вот тип данных, представляющий кубиты: {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-#...
74 просмотров
schedule 19.02.2023

Не знаете, что такое GADT и распространяемые ограничения.
Существует множество вопросов и ответов о том, что GADTs лучше, чем DatatypeContexts , потому что GADT автоматически делают ограничения доступными в нужных местах. Например, здесь , здесь , здесь . Но иногда кажется, что мне все еще нужно...
206 просмотров
schedule 28.11.2022