AbstractMeijer, Fokkinga, and Paterson introduced several recursion operators associated with data type definitions, including catamorphisms and anamorphisms. These operators capture familiar patterns of recursion over recursive data types.We show for recursive data structures that generating a structure from a seed value (anamorphism, lens) is more general than reducing a structure to a value (catamorphism, banana). More precisely, we show that any catamorphism may be written in terms of an anamorphism, and that it is not generally possible to do the converse. For the specific case of lists this means that unfold is more general than fold
In this paper we look back to work done in the late 1980s, and that looked at links between grammars...
AbstractTail-recursive constructions suggest a new semantics for datatypes, which allows a direct ma...
Recursion is an important concept in computer science and one which possesses beauty and simplicity,...
Structured recursion schemes have been widely used in constructing, optimising, and reasoning about ...
Fold operators capture a common recursion pattern over algebraic datatypes. A fold essentially repla...
. Higher-order programming languages, such as ML, permit a flexible programming style by using compi...
AbstractCourse-of-value recursion is a scheme which allows us to define the value of a function in s...
Folds over inductive datatypes are well understood and widely used. In their plain form, they are qu...
We extend the structured recursive programming discipline, which favors the use of fold operations i...
Abstract. "Catamorphisms " are functions on an initial data type (an inductively defined o...
We relate standard techniques for solving recursive domain equations to previous models with types i...
Fold and unfold are general purpose functionals for processing and constructing lists. By using the ...
Defining functions over large, possibly recursive, data structures usually involves a lot of boilerp...
AbstractDefining functions over large, possibly recursive, data structures usually involves a lot of...
AbstractWe consider a type system where types are labeled, regular trees. Equipped with a type order...
In this paper we look back to work done in the late 1980s, and that looked at links between grammars...
AbstractTail-recursive constructions suggest a new semantics for datatypes, which allows a direct ma...
Recursion is an important concept in computer science and one which possesses beauty and simplicity,...
Structured recursion schemes have been widely used in constructing, optimising, and reasoning about ...
Fold operators capture a common recursion pattern over algebraic datatypes. A fold essentially repla...
. Higher-order programming languages, such as ML, permit a flexible programming style by using compi...
AbstractCourse-of-value recursion is a scheme which allows us to define the value of a function in s...
Folds over inductive datatypes are well understood and widely used. In their plain form, they are qu...
We extend the structured recursive programming discipline, which favors the use of fold operations i...
Abstract. "Catamorphisms " are functions on an initial data type (an inductively defined o...
We relate standard techniques for solving recursive domain equations to previous models with types i...
Fold and unfold are general purpose functionals for processing and constructing lists. By using the ...
Defining functions over large, possibly recursive, data structures usually involves a lot of boilerp...
AbstractDefining functions over large, possibly recursive, data structures usually involves a lot of...
AbstractWe consider a type system where types are labeled, regular trees. Equipped with a type order...
In this paper we look back to work done in the late 1980s, and that looked at links between grammars...
AbstractTail-recursive constructions suggest a new semantics for datatypes, which allows a direct ma...
Recursion is an important concept in computer science and one which possesses beauty and simplicity,...