LINUX.ORG.RU

История изменений

Исправление Virtuos86, (текущая версия) :

-- [a] - общий тип для списков
-- head :: [a] -> a - тип для head

Вопрос, это дженерик или не дженерик?

https://en.wikipedia.org/wiki/Generic_programming, https://ru.wikipedia.org/wiki/Обобщённое_программирование — по содержанию, кстати, статья в русской Вики отличается от английской).

Кроме как в программировании я встречал кортеж, скажем, в математике и криптографии. Ну там это использовалось просто «пара» или «тройка» элементов. На тип ограничений нет. Но штука в том что это нечто постоянное, неизменное.

нечто постоянное, неизменное

Tuple, кортеж, immutable, а не const. Изменение кортежа повлечет создание нового кортежа.

Кортеж это гетерогенный упорядоченный список конечного размера. Кортеж характеризуется длиной, или точнее арностью (arity) — так же, как и функции. И так же, как и функции, кортежи с разной арностью имеют разные типы. В ФП функции, принимающие несколько аргументов, и описываются как функции, принимающие кортеж. Абстрагироваться от арности не получается именно из-за гетерогенной природы кортежа. То есть можно его заполнить объектами одного типа, но система типов всё равно потребует указать тип каждого элемента.

Я так понимаю, HList это тип-кортеж, для которого реализовали часть интерфейса списков путём искусственной гомогенизации за счёт использования типа-обертки для элементов списка. Стал ли он от этого списком? Не думаю. Можно ли им пользоваться в тех местах, где требуются возможности списков? Да, но только в тех местах, где использовано обобщенное программирование.

Исправление Virtuos86, :

-- [a] - общий тип для списков
-- head :: [a] -> a - тип для head

Вопрос, это дженерик или не дженерик?

https://en.wikipedia.org/wiki/Generic_programming, https://ru.wikipedia.org/wiki/Обобщённое_программирование — по содержанию, кстати, статья в русской Вики отличается от английской).

Кроме как в программировании я встречал кортеж, скажем, в математике и криптографии. Ну там это использовалось просто «пара» или «тройка» элементов. На тип ограничений нет. Но штука в том что это нечто постоянное, неизменное.

нечто постоянное, неизменное

Tuple, кортеж, immutable, а не const. Изменение кортежа повлечет создание нового кортежа.

Кортеж это гетерогенный упорядоченный список конечного размера. Кортеж характеризуется длиной, или точнее арностью (arity) — так же, как и функции. И так же, как и функции, кортежи с разной арностью имеют разные типы. В ФП функции, принимающие несколько аргументов, и описываются как функции, принимающие кортеж. Абстрагироваться от арности не получается именно из-за гетерогенной природы кортежа. То есть можно его заполнить объектами одного типа, но истема типов всё равно потребует указать тип каждого элемента.

Я так понимаю, HList это тип-кортеж, для которого реализовали часть интерфейса списков путём искусственной гомогенизации за счёт использования типа-обертки для элементов списка. Стал ли он от этого списком? Не думаю. Можно ли им пользоваться в тех местах, где требуются возможности списков? Да, но только в тех местах, где использовано обобщенное программирование.

Исходная версия Virtuos86, :

-- [a] - общий тип для списков
-- head :: [a] -> a - тип для head

Вопрос, это дженерик или не дженерик?

https://en.wikipedia.org/wiki/Generic_programming, https://ru.wikipedia.org/wiki/Обобщённое_программирование — по содержанию, кстати, статья в русской Вики отличается от английской).

Кроме как в программировании я встречал кортеж, скажем, в математике и криптографии. Ну там это использовалось просто «пара» или «тройка» элементов. На тип ограничений нет. Но штука в том что это нечто постоянное, неизменное.

нечто постоянное, неизменное

Tuple, кортеж, immutable, а не const. Изменение кортежа повлечет создание нового кортежа.

Кортеж это гетерогенный упорядоченный список конечного размера. Кортеж характеризуется длиной, или точнее арностью (arity) — так же, как и функции. И так же, как и функции, кортежи с разной арностью имеют разные типы. Абстрагироваться от арности не получается именно из-за гетерогенной природы кортежа. То есть можно его заполнить объектами одного типа, но истема типов всё равно потребует указать тип каждого элемента.

Я так понимаю, HList это тип-кортеж, для которого реализовали часть интерфейса списков путём искусственной гомогенизации за счёт использования типа-обертки для элементов списка. Стал ли он от этого списком? Не думаю. Можно ли им пользоваться в тех местах, где требуются возможности списков? Да, но только в тех местах, где использовано обобщенное программирование.