Алгебраические типы данных и их использование в программировании
Роман Душкин
Аннотация Статья рассматривает важную идиому программирования - алгебраический тип данных (АТД). Приводится теоретическая база, которая лежит в основе практического применения АТД в различных языках программирования. Прикладные аспекты рассматриваются на языке
(
Read more... )
Не очень понятно, почему говорится, что АТД - размеченное объединение именно декартовых произведений множеств. Декартово произведение - лишь частный случай, там же может быть и что-то иное, например другая сумма.
У нас есть базовые элементы-типы и две операции - умножение и сложение, которые дают нам строить более сложные типы. Да, слагаемым может быть произведение, но может и не быть. Зачем говорить, что любая сумма - именно сумма произведений?
Reply
Reply
(a, b, c) - это (,) a ((,) b c)
Reply
(The comment has been removed)
snd (1, 2, 3) вернет (2, 3) или 3 в зависимости от ассоциативности (,)
Математический sum type - "каррирован", а Хаскель делает отличия между (1, 2, 3) и (,) 1 $ (,) 2 3
Reply
Reply
(The comment has been removed)
Reply
(The comment has been removed)
Reply
(The comment has been removed)
Reply
(The comment has been removed)
Reply
Я просто против натягивания его логики на все остальное.
Reply
(The comment has been removed)
Leave a comment