En los métodos formales de la informática , un paramorfismo (del griego παρά , que significa "juntos") es una extensión del concepto de catamorfismo introducido por primera vez por Lambert Meertens [1] para tratar con una forma que "se come su argumento y lo conserva también", [2] [3] como lo ejemplifica la función factorial . Su dual categórico es el apomorfismo .
Es una versión más conveniente del catamorfismo ya que brinda a la función de paso de combinación acceso inmediato no solo al valor del resultado calculado recursivamente a partir de cada subobjeto recursivo, sino también al subobjeto original en sí.
Ejemplo de implementación de Haskell, para listas:
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 : como ) = f a ( cata f b como ) cata _ b [] = b para f b ( a : como ) = f a ( como , para f b como ) para _ b [] = b ana u b = caso u b de ( a , b' ) -> a : ana u b' apo u b = caso u b de ( a , Derecha b' ) -> a : apo u b' ( a , Izquierda como ) -> a : como
{{cite web}}
: Falta o está vacío |url=
( ayuda )