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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типовая алгебра и нотная стрелка Knuth

Чтение через этот вопрос и этот пост в блоге заставил меня больше думать о типа и, в частности, как злоупотреблять им. В принципе, 1) Мы можем придумать тип Either A B как дополнение: A+B 2) Мы можем представить упорядоченную пару (A,B) как умно...
01 нояб. '12 в 7:05
2 отв.

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

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