Results 1 -
3 of
3
Variation Programming with the Choice Calculus
, 2012
"... The choice calculus provides a language for representing and transforming variation in software and other structured documents. Variability is captured in localized choices between alternatives. The space of all variations is organized by dimensions, which provide scoping and structure to choices. ..."
Abstract
-
Cited by 9 (4 self)
- Add to MetaCart
(Show Context)
The choice calculus provides a language for representing and transforming variation in software and other structured documents. Variability is captured in localized choices between alternatives. The space of all variations is organized by dimensions, which provide scoping and structure to choices. The variation space can be reduced through a process of selection, which eliminates a dimension and resolves all of its associated choices by replacing each with one of their alternatives. The choice calculus also allows the definition of arbitrary functions for the flexible construction and transformation of all kinds of variation structures. In this tutorial we will first present the motivation, general ideas, and principles that underlie the choice calculus. This is followed by a closer look at the semantics. We will then present practical applications based on several small example scenarios and consider the concepts of ”variation programming ” and ”variation querying”. The practical applications involve work with a Haskell library that supports variation programming and experimentation with the choice calculus.
Zipper-based Attribute Grammars and their Extensions?
"... Abstract. Attribute grammars are a suitable formalism to express com-plex software language analysis and manipulation algorithms, which rely on multiple traversals of the underlying syntax tree. Recently, Attribute Grammars have been extended with mechanisms such as references and high-order and cir ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. Attribute grammars are a suitable formalism to express com-plex software language analysis and manipulation algorithms, which rely on multiple traversals of the underlying syntax tree. Recently, Attribute Grammars have been extended with mechanisms such as references and high-order and circular attributes. Such extensions provide a powerful modular mechanism and allow the specification of complex fix-point com-putations. This paper defines an elegant and simple, zipper-based embed-ding of attribute grammars and their extensions as first class citizens. In this setting, language specifications are defined as a set of independent, off-the-shelf components that can easily be composed into a powerful, executable language processor. Several real examples of language speci-fication and processing programs have been implemented in this setting. 1
A foundation for GADTs and inductive families: dependent polynomial functor approach
- In WGP’11
, 2011
"... Every Algebraic Datatype (ADT) is characterised as the initial al-gebra of a polynomial functor on sets. This paper extends the char-acterisation to the case of more advanced datatypes: Generalised Algebraic Datatypes (GADTs) and Inductive Families. Specifi-cally, we show that GADTs and Inductive Fa ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
(Show Context)
Every Algebraic Datatype (ADT) is characterised as the initial al-gebra of a polynomial functor on sets. This paper extends the char-acterisation to the case of more advanced datatypes: Generalised Algebraic Datatypes (GADTs) and Inductive Families. Specifi-cally, we show that GADTs and Inductive Families are charac-terised as initial algebras of dependent polynomial functors. The theoretical tool we use throughout is an abstract notion of poly-nomial between sets together with its associated general form of polynomial functor between categories of indexed sets introduced by Gambino and Hyland. In the context of ADTs, this fundamental result is the basis for various generic functional programming techniques. To estab-lish the usefulness of our approach for such developments in the broader context of inductively defined dependent types, we apply the theory to construct zippers for Inductive Families.