Banana Republic
In functional programming, an anamorphism is a kind of generic function that can corecursively construct a result of a certain type and which is parameterized by functions that determine what the next single step of the construction is. The term is composed of the prefix ana (from Greek ἀνά = upwards) + the stem morphism (from Greek μορφή = form, shape).
The concept of anamorphism, which has its grounding in category theory, generalizes the list-producing unfold functions to arbitrary algebraic data types that can be described as final coalgebras. In fact, the terms 'anamorphism' and "unfold" (as a noun) are often used interchangeably. Anamorphisms, which are co-recursive, are dual to catamorphisms, which are recursive, just as unfolds are dual to folds.