Вопросы по теме '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 просмотров
schedule
16.07.2023
Как функциональные языки представляют алгебраические типы данных в памяти?
Если бы вы писали алгоритм биоинформатики на Haskell, вы, вероятно, использовали бы алгебраический тип данных для представления нуклеотидов:
data Nucleotide = A | T | C | G
Я полагаю, вы поступили бы так же в Standard ML или OCaml (я никогда...
751 просмотров
schedule
05.02.2022
Как построить индуктивный тип кобордизмов с помощью Coq?
Я пытаюсь построить индуктивный тип кобордизма, используя Coq, таким образом, чтобы можно было доказать некоторые свойства кобордизма (1-группоид и 2-группоид). Я использую следующий код Coq:
Unset Automatic Introduction.
Inductive Topo : Set...
171 просмотров
schedule
18.08.2022
Векторы Идриса против связанных списков
Проводит ли Идрис какую-либо оптимизацию под капотом векторов? Потому что, судя по всему, вектор Идриса - это просто связанный список с известным размером (известным во время компиляции). Фактически, в целом кажется, что вы могли бы выразить...
1289 просмотров
schedule
14.02.2022
Ошибка множественного объявления типа суммы 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 просмотров
schedule
11.07.2023
Построение значения моего собственного типа данных в 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 просмотров
schedule
08.04.2023
Представление типа варианта enum+object в GraphQL
Существует ли наилучшая практика для представления вариантного поля, которое может быть либо объектом с подполями, либо одним или несколькими одноэлементными значениями, подобными enum ? Например, если есть только одно одноэлементное значение, может...
1823 просмотров
schedule
16.02.2024
Ошибка при доступе к определенному 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 просмотров
schedule
07.05.2022
Использование вариантов 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 просмотров
schedule
04.04.2023
Реализовать Applicative для пользовательского ZipList
Это взято из упражнения в книге Haskell from First Principles . Упражнение состоит в том, чтобы реализовать Applicative для ZipList' , что аналогично ZipList в Prelude. В книге есть такая подсказка
Проверьте Prelude на наличие функций,...
193 просмотров
schedule
27.03.2024
Существуют ли алгебраические типы данных помимо суммы и произведения?
По большинству определений общие или базовые типы алгебраических данных в Haskell или Scala - это сумма и произведение. Примеры: 1 , 2 .
Иногда в определении просто говорится, что алгебраические типы данных - это сумма и произведение ,...
517 просмотров
schedule
14.05.2022