is a concept from functional programming
grounded in category theory
. The term comes from Greek ανα- (upwards) + morphism
(from Greek μορφή, or form, shape).
Anamorphisms in functional programming
In functional programming, an anamorphism
is a generalization of the list
known from functional programming to arbitrary abstract data types
that can be described as final coalgebras
. Unfolds are the co-recursive
analogues of recursive folds
One of the first publications to introduce the notion of an anamorphism in the context of programming was the paper "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire", by Erik Meijer et al., which was in the context of the Squiggol programming language.
Anamorphisms in category theory
In category theory, anamorphisms are the categorical dual of catamorphisms.
A notation for ana f found in the literature is . The brackets used are known as lens brackets, after which anamorphisms are sometimes referred to as lenses.
- Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire , contains additional definitions and examples