Параморфизм - Википедия - Paramorphism

В формальные методы из Информатика, а параморфизм (из Греческий παρά, что означает «близко друг к другу») является расширением концепции катаморфизм впервые представленный Ламберт Меертенс [1] иметь дело с формой, которая «ест свой аргумент и сохраняет его тоже»,[2][3] как показано на примере факториал функция. Его категоричный дуальный это апоморфизм.

Это более удобная версия катаморфизма, поскольку она дает функции комбинирования шага немедленный доступ не только к результату, рекурсивно вычисленному из каждого рекурсивного подобъекта, но и к самому исходному подобъекту.

Пример реализации Haskell для списков:

ката :: (а ->       б  -> б) -> б -> [а] ->  бпараграф :: (а -> ([а], б) -> б) -> б -> [а] ->  бана  :: (б -> (а,            б))  ->  б  -> [а]апо  :: (б -> (а, Либо [а] б))  ->  б  -> [а]ката ж б (а:в качестве) = ж а     (ката ж б в качестве)ката _ б []     = бпараграф ж б (а:в качестве) = ж а (в качестве, параграф ж б в качестве)параграф _ б []     = бана  ты б = дело ты б из (а,       б ') -> а : ана ты б 'апо  ты б = дело ты б из (а, Правильно б ') -> а : апо ты б '                       (а, Оставили  в качестве) -> а : в качестве

Смотрите также

Рекомендации

  1. ^ Меертенс, Ламберт (1992). «Параморфизмы». CiteSeerX  10.1.1.19.4825. Отсутствует или пусто | url = (помощь)
  2. ^ Филип Вадлер.Представления: способ сопоставления с образцом сосуществовать с абстракцией данных. Технический отчет 34, Группа методологии программирования, Гетебургский университет и Технологический университет Чалмерса, март 1987 г.
  3. ^ Мейер, Эрик; Фоккинга, Маартен; Патерсон, Росс (1991). «Функциональное программирование с бананами, линзами, конвертами и колючей проволокой». CiteSeerX  10.1.1.41.125. Отсутствует или пусто | url = (помощь)

внешняя ссылка

Пояснение к StackOverflow: [1], [2], [3]

Блоги: [4]

Беседы: [5]

Схемы рекурсии Haskell package