Вопросы по теме 'gadt'
Неоднозначный тип с использованием параметризованных типов Haskell
У меня есть довольно простая функция, которая принимает параметризованный тип данных и возвращает тот же тип:
{-# LANGUAGE ScopedTypeVariables #-}
class IntegerAsType a where
value :: a -> Integer
newtype (Num a, IntegerAsType n) =>...
281 просмотров
schedule
28.06.2022
Я не могу заставить мой динамический тип на основе GADT работать с параметрическими типами
Поэтому, чтобы помочь мне понять некоторые из более продвинутых функций и концепций Haskell/GHC, я решил взять работающую реализацию динамически типизированных данных на основе GADT и расширить ее для охвата параметрических типов. (Прошу прощения за...
469 просмотров
schedule
03.06.2022
Как выразить сопоставление с образцом для независимых комбинаций значений данных?
data Foo = Bar1
| Bar2 Foo Foo
| Bar3 Foo
| Bar4 Foo Foo Foo
Теперь предположим, что кто-то построил дерево Foo , и я хочу проверить, допустимы ли аргументы значения Foo. Правила для аргументов конструктора:...
151 просмотров
schedule
16.07.2022
Странное поведение вывода типа с типом GADT (для векторов фиксированной длины)
У меня есть следующий GADT
data Vec n a where
T :: Vec VZero a
(:.) :: (VNat n) => a -> (Vec n a) -> (Vec (VSucc n) a)
для моделирования векторов фиксированной длины, используя класс
class VNat n
data VZero
instance...
290 просмотров
schedule
05.02.2023
Почему конструкторы GADT/экзистенциальных данных нельзя использовать в ленивых шаблонах?
Сегодня я получил ошибку компилятора при попытке использовать отложенный шаблон при сопоставлении с экзистенциальным конструктором GADT:
Экзистенциальный конструктор данных или конструктор данных GADT нельзя использовать внутри ленивого (~)...
755 просмотров
schedule
21.04.2023
Кодирование меньше, чем с помощью Haskell
я надеюсь, что некоторые эксперты Haskell могут помочь кое-что прояснить.
Можно ли определить Nat обычным способом (через @dorchard Singleton-типы в Haskell )
data S n = Succ n
data Z = Zero
class Nat n
instance Nat Z
instance Nat n...
1558 просмотров
schedule
21.09.2022
Аппликативный экземпляр для (Monad m, Monoid o) => m o?
Извините за ужасное название. Я пытаюсь создать экземпляр Applicative для Monad , обертывающего тип, который является Monoid .
instance (Monad m, Monoid o) => Applicative (m o) where
pure x = return mempty
xm <*> ym = do...
352 просмотров
schedule
10.12.2022
Как избежать реализации нескольких функций с помощью GADT?
Прежде всего, вот минимальный пример моего кода:
{-# LANGUAGE GADTs #-}
-- package "url"
import Network.URL (exportURL, URL(..), URLType(..))
data MyURL a where
GalleryURL :: URL -> MyURL URL
PictureURL :: URL -> MyURL URL
url =...
214 просмотров
schedule
10.10.2022
Как мне написать этот пример с зависимой типизацией в Haskell?
Предположим, я хочу представить конечные модели языка первого порядка с константой c, символом унарной функции f и предикатом P. Я могу представить носитель как список m , константу как элемент m , функцию как список упорядоченных пар элементов m...
239 просмотров
schedule
24.07.2023
Включение -fno-warn- для недоступного кода в GADT
Учитывая GADT , проиндексированный фантомной переменной, я могу использовать автономный вывод для создания некоторых простых экземпляров.
data Client
data Temporary
data Permanent
data Token ty where
ClientToken :: Token Client...
101 просмотров
schedule
28.05.2022
GADT: разница между «алгебраическим» и «абстрактным»?
Кажется, что термины «Обобщенный Абстрактный тип данных» и «Обобщенный Алгебраический тип данных» используются взаимозаменяемо, но я уверен, что технически это не одно и то же.
Может ли кто-нибудь объяснить разницу, возможно, на простом примере...
410 просмотров
schedule
19.01.2023
GADT против экзистенциально квантифицированных типов (*forall*)
Можно использовать GADT для выражения экзистенциально квантифицированных типов .
Я вижу, что GADT более общий — данные -type-extensions , параграф 7.4.7
Когда лучше использовать типы с количественной оценкой существования , чем GADT ?...
859 просмотров
schedule
02.07.2023
Упрощение GADT с помощью Uniplate
Я пытаюсь ответить на этот вопрос о стеке, используя uniplate , поскольку я предложил , но единственное решение, которое я придумал , довольно уродливый.
Это кажется довольно распространенной проблемой, поэтому я хотел знать, есть ли более...
516 просмотров
schedule
22.09.2022
GADT для представления функционального приложения с несколькими параметрами (AST)
Я видел в руководстве по OCaml этот пример использования GADT для AST с применением функции:
type _ term =
| Int : int -> int term
| Add : (int -> int -> int) term
| App : ('b -> 'a) term * 'b term -> 'a term
let rec eval :...
188 просмотров
schedule
01.07.2023
Преобразование GADT в фантомные типы
Я играл с GADT и фантомными типами в OCaml. Я понял, что GADT — это удобство для описания определенных видов фантомных типов — поправьте меня, если я ошибаюсь. Поэтому я решил попробовать преобразовать программу, использующую тип GADT, в программу с...
639 просмотров
schedule
14.03.2022
Как я должен проходить последовательности, выровненные по типу?
Прошлым летом я рассмотрел идею сворачивания последовательности с выравниванием по типу, for-type-aligned-sequences">спрашивая здесь , как можно реализовать аналог foldr с точки зрения аналога foldMap . Йоахим Брайтнер смог сделать это с помощью...
222 просмотров
schedule
07.07.2023
Гетерогенные данные.Карта в Haskell
Можно ли сделать гетерогенный Data.Map в Haskell с GADT вместо Dynamic ? Я попытался смоделировать разнородную коллекцию, как описано в этом ответе :
{-# LANGUAGE GADTs #-}
class Contract a where
toString :: a -> String
data...
356 просмотров
schedule
19.09.2023
Представление идентификатора страны и текста в типе данных Haskell
У меня есть список идентификатора страны и текста страны в json
{
1 : "country one",
2 : "country two"
}
Я создал ниже код для представления идентификатора страны и текста в haskell
data Country a = Country a
country1 :: Country String...
53 просмотров
schedule
26.07.2023
Почему Haskell не может сделать вывод, что этот тип правильный?
У меня есть простое определение для Nat и определение для типов, индексируемых Nat, Natty.
data Nat :: * where
Zero :: Nat
Suc :: Nat -> Nat
data Natty :: Nat -> * where
Zy :: Natty Zero
Sy :: Natty n -> Natty (Suc n)...
81 просмотров
schedule
09.03.2022
Алгебраические типы данных с использованием Nat (одноэлементная библиотека)
Я пытался объявить алгебраический тип данных для работы на уровне типов, используя библиотеку singletons. Я могу сделать это без особых проблем, если не использую в конструкторах Nat , Symbol , Integer или String . Например:
{-# LANGUAGE...
80 просмотров
schedule
03.04.2022