Вопросы по теме 'algebraic-data-types'

Алгебраические типы данных Haskell
У меня есть следующее для тега шрифта HTML: data Color = HexColor Int | RGBColor Int Int Int | ColorString String deriving Show data FontAttribute = Size Int | Face String | FontColor Color deriving Show data Font = Font [FontAttribute] deriving...
325 просмотров
schedule 15.05.2024

Алгебраические типы данных Haskell: псевдорасширение
Я изучаю алгебраические DT в haskell. Что я хотел бы сделать, так это создать новый ADT, который как бы «расширяет» существующий. Я не могу найти, как выразить то, что я хотел бы, может ли кто-нибудь предложить альтернативный шаблон или предложить...
325 просмотров
schedule 04.09.2023

Невозможно деконструировать тип продукта после упрощения в OCaml
У меня есть этот простой код в OCaml: type int_pair = int * int;; type a = A of int_pair;; let extract (A x) = x;; Тестирование моей функции extract , похоже, работает: # extract (A (1,2));; - : int_pair = (1, 2) Я упрощаю его,...
167 просмотров
schedule 16.02.2024

Подсчет алгебраических типов данных
Я читаю/слушаю презентацию Криса Тейлора об алгебраических типах данных. http://chris-taylor.github.io/blog/2013/02/10/the-алгебра-из-алгебраических-данных-типов/ И есть раздел о типах функций. В частности, пример data Bool = True |...
168 просмотров
schedule 17.03.2022

Есть ли способ в Haskell выразить функцию без точек для редактирования свойства типа данных?
У меня есть тип: data Cons = Cons {myprop :: String} а позже я сопоставляю список, устанавливая для свойства другое значение: fmap (\x -> x{myprop = ""}) mylist Есть ли бесточечный способ выразить эту анонимную функцию?
363 просмотров

Как функциональные языки представляют алгебраические типы данных в памяти?
Если бы вы писали алгоритм биоинформатики на Haskell, вы, вероятно, использовали бы алгебраический тип данных для представления нуклеотидов: data Nucleotide = A | T | C | G Я полагаю, вы поступили бы так же в Standard ML или OCaml (я никогда...
751 просмотров

Как построить индуктивный тип кобордизмов с помощью Coq?
Я пытаюсь построить индуктивный тип кобордизма, используя Coq, таким образом, чтобы можно было доказать некоторые свойства кобордизма (1-группоид и 2-группоид). Я использую следующий код Coq: Unset Automatic Introduction. Inductive Topo : Set...
171 просмотров
schedule 18.08.2022

Векторы Идриса против связанных списков
Проводит ли Идрис какую-либо оптимизацию под капотом векторов? Потому что, судя по всему, вектор Идриса - это просто связанный список с известным размером (известным во время компиляции). Фактически, в целом кажется, что вы могли бы выразить...
1289 просмотров

Ошибка множественного объявления типа суммы haskell
data A=A data B=B data AB=A|B Что делает тип суммы AB из A и B. но последняя строка вызывает ошибку компиляции "несколько объявлений B" Я также пробовал что-то вроде этого: data A=Int|Bool Он компилируется. но почему ghc...
489 просмотров
schedule 31.12.2023

Моделирование алгебраических типов данных с использованием реляционной базы данных
Допустим, вы пишете приложение на OCaml/F#/SML/Haskell и хотите сохранить данные в реляционной базе данных. Типы продуктов (записи и кортежи) легко сопоставить с отношениями, но как сопоставить типы вариантов с отношениями? Чтобы быть конкретным,...
1640 просмотров

Построение значения моего собственного типа данных в Haskell
Я пытаюсь создать новое значение типа MyData , который является определенным мной типом персональных данных, но получаю сообщение об ошибке. MyData имеет конструктор List , который получает список значений MyData . Я пытаюсь извлечь два...
127 просмотров
schedule 28.05.2023

Еще больше злоупотребляя алгеброй алгебраических типов данных - почему это работает?
Итак, я читал, как вы можете преобразовать ADT в то, что напоминает вещественные числа, и манипулировать ими на таких страницах, как этот вопрос SO и эта серия из трех частей и особенно это . Мое внимание привлек раздел "Проблемы" последней...
180 просмотров
schedule 18.03.2022

Приведение типов при работе с вложенными структурами данных
У меня определены следующие структуры данных: data Operator = Plus | Times | Minus deriving (Eq,Show) data Variable = A | B | C deriving (Eq,Show) newtype Const = D Numeral deriving (Eq,Show) data CVO = Const | Variable | Operator deriving...
59 просмотров
schedule 21.12.2022

scala ADT через запечатанные черты - есть ли способ десериализации из строки обычным способом
Допустим, у меня есть следующая черта trait Named { def name: String } и следующий алгебраический тип данных sealed trait Animal extends Named case object Dog extends Animal { override val name: String = "dog man" } case object Cat...
453 просмотров

Представление типа варианта enum+object в GraphQL
Существует ли наилучшая практика для представления вариантного поля, которое может быть либо объектом с подполями, либо одним или несколькими одноэлементными значениями, подобными enum ? Например, если есть только одно одноэлементное значение, может...
1823 просмотров

Ошибка при доступе к определенному ADT
Я определяю тип, и все работает нормально, кроме метода, который обращается к последнему конструктору данных: JArray Я получаю следующую ошибку: Not in scope: type constructor or class `JArray' A data constructor of that name is in scope;...
52 просмотров
schedule 06.10.2023

Функция карты Haskell для алгебраических типов данных
У меня есть алгебраический тип данных Newb, определенный, как показано ниже. Теперь я хочу написать для него собственную функцию карты без использования рекурсии. Кроме того, у меня есть функция foldNewb, которая также может помочь. data Newb a...
144 просмотров

Использование вариантов GADT в полиморфном составном типе, как в обычных алгебраических вариантах?
Скажем, у меня есть этот простой вариант типа: type flag = { name: string; payload: string option; } type word = | Arg of string | Flag of flag let args = [| Arg "hello"; Flag {name = "foo"; payload = Some "world"}; |] Однако если...
159 просмотров

Реализовать Applicative для пользовательского ZipList
Это взято из упражнения в книге Haskell from First Principles . Упражнение состоит в том, чтобы реализовать Applicative для ZipList' , что аналогично ZipList в Prelude. В книге есть такая подсказка Проверьте Prelude на наличие функций,...
193 просмотров

Существуют ли алгебраические типы данных помимо суммы и произведения?
По большинству определений общие или базовые типы алгебраических данных в Haskell или Scala - это сумма и произведение. Примеры: 1 , 2 . Иногда в определении просто говорится, что алгебраические типы данных - это сумма и произведение ,...
517 просмотров
schedule 14.05.2022