Ornaments are a way to describe changes in datatype definitions reorganizing, adding, or dropping some pieces of data so that functions operating on the bare definition can be partially and sometimes totally lifted into functions operating on the ornamented structure. We propose an extension of ML with higher-order ornaments, demonstrate its expressiveness with a few typical examples, including code refactoring, study the metatheoretical properties of ornaments, and describe their elaboration process. We formalize ornamentation via an a posteriori abstraction of the bare code, called generic lifting, which lives in a meta-language above ML. The lifted code is obtained by application of the generic lifting to well-chosen arguments, followed...
Monads have become a fundamental tool for structuring denotational semantics and programs by abstrac...
Dependently typed programming is hard, because ideally depen-dently typed programs should share stru...
Most conventional programming languages have direct methods for representing first-order terms (say,...
Ornaments are a way to describe changes in datatype definitions reorganizing, adding, or dropping so...
International audienceOrnaments have been introduced as a way to describe some changes in datatype d...
Ornaments have been introduced as a way to describe some changes in datatype definitions that preser...
International audienceFunctional programmers from all horizons strive to use, and sometimes abuse, t...
Programming with dependent types is a blessing and a curse. It is a blessing to be able to bake inva...
Ornaments provide a way to express transformations of inductive datatypes that reorganize, specializ...
Dependently typed programming uses precise variants of data structures to ensure program correctness...
Modern dependently typed functional programming languages like Agda allow very specific restrictions...
Dependently typed programming is hard, because ideally dependently typed programs should share struc...
Dependently typed programming advocates the use of various indexed versions of the same shape of dat...
Architectural ornament, the art of decorative patterning, is commonly perceived as an historical cha...
Dependently typed programmers are encouraged to use inductive families to inte-grate constraints wit...
Monads have become a fundamental tool for structuring denotational semantics and programs by abstrac...
Dependently typed programming is hard, because ideally depen-dently typed programs should share stru...
Most conventional programming languages have direct methods for representing first-order terms (say,...
Ornaments are a way to describe changes in datatype definitions reorganizing, adding, or dropping so...
International audienceOrnaments have been introduced as a way to describe some changes in datatype d...
Ornaments have been introduced as a way to describe some changes in datatype definitions that preser...
International audienceFunctional programmers from all horizons strive to use, and sometimes abuse, t...
Programming with dependent types is a blessing and a curse. It is a blessing to be able to bake inva...
Ornaments provide a way to express transformations of inductive datatypes that reorganize, specializ...
Dependently typed programming uses precise variants of data structures to ensure program correctness...
Modern dependently typed functional programming languages like Agda allow very specific restrictions...
Dependently typed programming is hard, because ideally dependently typed programs should share struc...
Dependently typed programming advocates the use of various indexed versions of the same shape of dat...
Architectural ornament, the art of decorative patterning, is commonly perceived as an historical cha...
Dependently typed programmers are encouraged to use inductive families to inte-grate constraints wit...
Monads have become a fundamental tool for structuring denotational semantics and programs by abstrac...
Dependently typed programming is hard, because ideally depen-dently typed programs should share stru...
Most conventional programming languages have direct methods for representing first-order terms (say,...