Apomorphism
Encyclopedia
An apomorphism is the categorical dual of a paramorphism
and an extension of the concept of anamorphism
(coinduction
). Whereas a paramorphism models primitive recursion over an inductive data type, an apomorphism models primitive corecursion
over a coinductive data type.
Paramorphism
A paramorphism is an extension of the concept of catamorphism to deal with a form which “eats its argument and keeps it too”, as exemplified by the factorial function. Its categorical dual is the apomorphism...
and an extension of the concept of anamorphism
Anamorphism
Anamorphosis is a distorted projection or perspective requiring the viewer to use special devices or occupy a specific vantage point to reconstitute the image...
(coinduction
Coinduction
In computer science, coinduction is a technique for defining and proving properties of systems of concurrent interacting objects.Coinduction is the mathematical dual to structural induction...
). Whereas a paramorphism models primitive recursion over an inductive data type, an apomorphism models primitive corecursion
Corecursion
In computer science, corecursion is a type of operation that is dual to recursion. Corecursion and codata allow total languages to work with infinite data structures such as streams. Corecursion is often used in conjunction with lazy evaluation. Corecursion can produce both finite and infinite data...
over a coinductive data type.
Origins
The term "apomorphism" was introduced in Functional Programming with Apomorphisms (Corecursion).See also
- AnamorphismAnamorphismAnamorphosis is a distorted projection or perspective requiring the viewer to use special devices or occupy a specific vantage point to reconstitute the image...
- CatamorphismCatamorphismIn category theory, the concept of catamorphism denotes the unique homomorphism from an initial algebra into some other algebra. The concept has been applied to functional programming as folds.The dual concept is that of anamorphism...
- HylomorphismHylomorphism (computer science)In computer science, and in particular functional programming, a hylomorphism is a recursive function, corresponding to the composition of an anamorphism and a catamorphism...
- ParamorphismParamorphismA paramorphism is an extension of the concept of catamorphism to deal with a form which “eats its argument and keeps it too”, as exemplified by the factorial function. Its categorical dual is the apomorphism...