Jump to content

Параморфизм

В методах информатики параморфизм формальных (от греческого παρά , что означает «близко друг к другу») является расширением концепции катаморфизма, впервые введенной Ламбертом Меертенсом. [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

См. также

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

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

Блоги: [4]

Доклады: [5]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f8aba40e03ee0af2f352a16e7729b36e__1654704840
URL1:https://arc.ask3.ru/arc/aa/f8/6e/f8aba40e03ee0af2f352a16e7729b36e.html
Заголовок, (Title) документа по адресу, URL1:
Paramorphism - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)