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

Алгебраические типы данных - это структуры данных, построенные из сумм, продуктов и рекурсивных типов, допускающих алгебру. Описания типов, заданных как ADT, можно манипулировать символически для получения других связанных структур данных. Логика построения типов алгебраически связана с комбинаторными видами в комбинаторной математике.
7

Злоупотребление алгеброй алгебраических типов данных - почему это работает?

"Алгебраическое" выражение для алгебраических типов данных выглядит очень наводящим на размышления кого-то, у кого есть опыт в математике. Позвольте мне попытаться объяснить, что я имею в виду. Определив основные типы Продукт • Союз + Синглтон ...
08 февр. '12 в 9:09
2

Объем памяти типов данных Haskell

Как я могу найти фактический объем памяти, необходимый для хранения значения некоторого типа данных в Haskell (в основном с GHC)? Можно ли оценить его во время выполнения (например, в GHCi) или можно ли оценить требования к памяти составного типа дан...
15 июл. '10 в 10:39
8

Как вы представляете график в Haskell?

Легко представить дерево или список в haskell, используя алгебраические типы данных. Но как вы относитесь к типографическому представлению графа? Кажется, что вам нужны указатели. Я предполагаю, что у вас может быть что-то вроде type Nodetag = Strin...
16 мар. '12 в 4:53
2

Что такое расширение DataKinds Haskell?

Я пытаюсь найти объяснение расширения DataKinds, которое будет иметь смысл для меня, если я прочитал Learn You a Haskell. Есть ли стандартный источник, который будет иметь смысл для меня с тем, что я узнал? Изменить: например, документация говорит ...
13 дек. '13 в 3:36
8

Типы алгебраических данных Haskell

Я пытаюсь полностью понять все концепции Haskell. Каким образом типы алгебраических данных похожи на общие типы, например, на С# и Java? И как они отличаются? Что же такое алгебраическое в них? Я знаком с универсальной алгеброй, ее кольцами и полям...
19 авг. '08 в 19:18
4

Каковы структуры данных "суммы и продукты"?

A последнее сообщение в блоге о Уильяме Куке Fusings упоминает: Ключевым моментом является то, что структуры в Ensō рассматриваются как целостность как диаграммы, а не как отдельные значения или традиционные структуры данных сумм и продуктов. Как...
06 мая '11 в 12:15
4

Java-маркированный тип объединения/суммы

Есть ли способ определить тип суммы в Java? Кажется, что Java, естественно, поддерживает типы продуктов напрямую, и я думал, что перечисления могут позволить ему поддерживать типы сумм, а наследование выглядит, может быть, оно может это сделать, но ...
08 янв. '18 в 1:41
3

Существует ли эквивалент Haskell абстрактных классов ООП, используя алгебраические типы данных или полиморфизм?

В Haskell можно ли написать функцию с сигнатурой, которая может принимать два разных (хотя похожие) типа данных и работать по-разному в зависимости от того, какой тип передан? Пример может сделать мой вопрос более ясным. Если у меня есть функция с и...
27 окт. '10 в 2:02
3

Лучший способ определить типы алгебраических данных в Python?

Я знаю, что Python не является Haskell или Ocaml, но что является лучшим способом определить типы алгебраических данных в Python (2 или 3)? Спасибо!
28 апр. '13 в 1:15
3

Что такое идиоматический современный С++ для алгебраических типов данных?

Предположим, например, что вы хотите реализовать электронную таблицу на С++. Ячейкой может быть строка, число или, возможно, пустое. Игнорируйте другие случаи, например, формулу. В Haskell вы можете сделать что-то вроде: data Cell = CellStr String ...
29 мар. '16 в 11:49
2

Котлин и дискриминационные союзы (типы сумм)

Есть ли у Котлина что-то вроде дискриминационных союзов (типы сумм)? Каким будет идиоматический перевод Котлина этого (F #): type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMessage msg = match msg wit...
24 февр. '15 в 11:59
2

Имеют ли алгебраические типы данных в Haskell равные дискриминированные союзы в F #?

Я изучаю Haskell и хотел бы знать, являются ли конструкции, известные в Haskell как алгебраические типы данных, одинаковыми, которые различают союзы в F # или между ними существуют некоторые тонкие различия. Я также очень ценю хорошее сравнение межд...
16 нояб. '11 в 17:21
1

Производительность структурных кортежей

Следующая программа F # определяет функцию, которая возвращает меньшую из двух пар int, представленных как структурные кортежи, и для запуска требуется 1.4s: let [<EntryPoint>] main _ = let min a b : int = if a < b then a else b let min...
21 сент. '17 в 22:58
1

Совпадение записей в Haskell

Я ищу способ упростить функциональные шаблоны, когда фактические данные не требуются: data X = A | B String | C Int Int String myfn :: X -> Int myfn A = 50 myfn (B _) = 200 myfn (C _ _ _) = 500 Есть ли способ сделать более простой шаблон для со...
27 июн. '16 в 11:16
2

Идрис векторов против связанных списков

Идрис делает какую-то оптимизацию под капотом векторов? Потому что, по внешнему виду, вектор Idris - это только связанный список с известным размером (известный во время компиляции). На самом деле, в общем, похоже, вы могли бы выразить следующую экви...
18 дек. '14 в 16:42