В формальных методах компьютерной науки параморфизм (от греч. παρά , что означает «близко друг к другу») является расширением концепции катаморфизма, впервые введенной Ламбертом Меертенсом [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 , Либо [ a ] b )) -> b -> [ a ] ката ф б ( а : ас ) = фа ( ката ф б ас ) ката _ б [ ] = б пункт ж б ( а : как ) знак равно ж а ( как , пункт ж б как ) пункт _ б [] = б ana u b = случай u b из ( a , b' ) -> a : ana u b' apo u b = случай u b из ( a , справа b' ) -> a : apo u b' ( a , слева как ) -> a : как
{{cite web}}
: Отсутствует или пусто |url=
( помощь )