Параморфизм
В методах информатики параморфизм формальных (от греческого παρά , что означает «близко друг к другу») является расширением концепции катаморфизма, впервые введенной Ламбертом Меертенсом. [1] иметь дело с формой, которая «съедает свой аргумент и сохраняет его», [2] [3] на примере факториала . Его категорическим двойником является апоморфизм .
Это более удобная версия катаморфизма, поскольку она дает функции шага объединения немедленный доступ не только к значению результата, рекурсивно вычисленному из каждого рекурсивного подобъекта, но также и к самому исходному подобъекту.
Пример реализации Haskell для списков:
cata :: (a -> b -> b) -> b -> [a] -> b
para :: (a -> ([a], b) -> b) -> b -> [a] -> b
ana :: (b -> (a, b)) -> b -> [a]
apo :: (b -> (a, Either [a] b)) -> b -> [a]
cata f b (a:as) = f a (cata f b as)
cata _ b [] = b
para f b (a:as) = f a (as, para f b as)
para _ b [] = b
ana u b = case u b of (a, b') -> a : ana u b'
apo u b = case u b of (a, Right b') -> a : apo u b'
(a, Left as) -> a : as
См. также
[ редактировать ]- Морфизм
- Морфизмы F-алгебр.
- От исходной алгебры к алгебре: катаморфизм
- От коалгебры к финальной коалгебре: анаморфизм
- Анаморфизм, за которым следует катаморфизм: гиломорфизм.
- Расширение идеи анаморфизмов: апоморфизм.
Ссылки
[ редактировать ]- ^ «Параморфизмы» (PDF) . 1990. с. 44. CiteSeerX 10.1.1.19.4825 .
- ^ Филип Уодлер . Представления: способ сопоставления шаблонов с абстракцией данных. Технический отчет 34, Группа методологии программирования, Гетеборгский университет и Технологический университет Чалмерса, март 1987 г.
- ^ Мейер, Эрик ; Фоккинга, Мартен; Патерсон, Росс (1991). «Функциональное программирование с помощью бананов, линз, конвертов и колючей проволоки». CiteSeerX 10.1.1.41.125 .
{{cite web}}
: Отсутствует или пусто|url=
( помощь )
Внешние ссылки
[ редактировать ]Пояснения к StackOverflow: [1] , [2] , [3]
Блоги: [4]
Доклады: [5]