Results 11  20
of
24
Functional programming for domainspecific languages
 Central European Functional Programming Summer School
, 2014
"... Abstract. Domainspecific languages become effective only in the presence of convenient lightweight tools for defining, implementing, and optimizing new languages. Functional programming provides a promising framework for such tasks; FP and DSLs are natural partners. In these lectures we will discus ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
Abstract. Domainspecific languages become effective only in the presence of convenient lightweight tools for defining, implementing, and optimizing new languages. Functional programming provides a promising framework for such tasks; FP and DSLs are natural partners. In these lectures we will discuss FP techniques for DSLs—especially standalone versus embedded DSLs, and shallow versus deep embeddings. 1
1st Year Transfer Dissertation
, 2003
"... This document is a review of the first year of my PhD, working on exceptions and concurrency in Haskell, funded jointly by the University of Nottingham and Microsoft Research Ltd, Cambridge. I shall discuss background information on topics relating to exceptions and concurrency in Haskell as well as ..."
Abstract
 Add to MetaCart
This document is a review of the first year of my PhD, working on exceptions and concurrency in Haskell, funded jointly by the University of Nottingham and Microsoft Research Ltd, Cambridge. I shall discuss background information on topics relating to exceptions and concurrency in Haskell as well as relevant papers. I shall also describe the work that I have undertaken in the last year, and outline the research I intend to undertake for my thesis
A Modular, AlgebraSequenced Paramorphic . . .
, 2007
"... The objective of this thesis is to demonstrate the feasibility of performing static analysis, specifically type checking, in a particularly modular way. We use a term space of fixpoints of sums of functors so that, by writing individual type checkers for each portion of the entire language, we can t ..."
Abstract
 Add to MetaCart
The objective of this thesis is to demonstrate the feasibility of performing static analysis, specifically type checking, in a particularly modular way. We use a term space of fixpoints of sums of functors so that, by writing individual type checkers for each portion of the entire language, we can then combine those algebras into an algebra that functions over the entire target language. The overall computational style employed uses a sequenced paramorphism to reduce the terms to the value space of types. As a proof of concept, this thesis presents a nominal typechecker in Haskell for the language Rosetta. It relies heavily on InterpreterLib, a Haskell library for designing interpreters in exactly the style described.
unknown title
"... Abstract We give a necessary and sufficient condition for when a settheoretic function can be written using the recursion operator fold, and a dual condition for the recursion operator unfold. The conditions are simple, practically useful, and generic in the underlying datatype. 1 Introduction The ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract We give a necessary and sufficient condition for when a settheoretic function can be written using the recursion operator fold, and a dual condition for the recursion operator unfold. The conditions are simple, practically useful, and generic in the underlying datatype. 1 Introduction The recursion operator fold encapsulates a common pattern for defining programs that consume values of a least fixpoint type such as finite lists. Dually, the recursion operator unfold encapsulates a common pattern for defining programs that produce values of a greatest fixpoint type such as streams (infinite lists). Theory and applications of fold abound see [11,4] for recent surveys while in recent years it has become increasingly clear that the less wellknown concept of unfold is just as useful [5,6,10,13,15]. Given the interest in fold and unfold, it is natural to ask when a programcan be written using one of these operators. Surprisingly little is known about
The University of Kansas Composing Specifications Using Algebra Combinators
, 2006
"... Project Sponsor: National Science Foundation The need to understand effects of crosscutting concerns defines the essence of systemslevel design. Understanding the impacts of local design decisions on global requirements such as power consumption or security is mandatory for constructing correct sy ..."
Abstract
 Add to MetaCart
(Show Context)
Project Sponsor: National Science Foundation The need to understand effects of crosscutting concerns defines the essence of systemslevel design. Understanding the impacts of local design decisions on global requirements such as power consumption or security is mandatory for constructing correct systems. Unfortunately, domain specific models may be defined using different semantics making analysis difficulty. We define an algebra combinator that provide semantics for syntax, an algebra combinator defines a single model that embodies the composition of those specifications. Such composite models can then be used to understand the interaction of models from the original specification domains. 1
Language Prototyping using Modular Monadic Semantics
, 1999
"... Modular monadic semantics allows the modular development of interpreters from semantic specifications be means of monad transformers. In this paper we show how to structure semantic descriptions using folds and monadic folds over functors that express the shape of the programming language. A given l ..."
Abstract
 Add to MetaCart
(Show Context)
Modular monadic semantics allows the modular development of interpreters from semantic specifications be means of monad transformers. In this paper we show how to structure semantic descriptions using folds and monadic folds over functors that express the shape of the programming language. A given language can be extended combining those functors without changing the original definitions. This approach will facilitate the implementation of language prototypes from reusable components. * This research is partially supported by the Project PBPTIC9701"Sistema Integral Orientado a Objetos: Oviedo3" from the "II Plan Regional de Investigación del Principado de Asturias" Introduction While traditional denotational semantics maps terms to values, monadic semantics [24] maps terms to computations. Where each computation can be modelled using specific monads. In general, it is not possible to compose two monads to obtain a new monad [15] but it is possible to transform a monad into a new m...
An Implementation of Modular Monadic Semantics using Folds and Monadic Folds
, 1998
"... Modular monadic semantics can be implemented using folds or catamorphisms over a functor that expresses the abstract syntax of the language. By composing several functors, it is possible to obtain modular interpreters from reusable components. Monadic folds structure programs that process recursivel ..."
Abstract
 Add to MetaCart
(Show Context)
Modular monadic semantics can be implemented using folds or catamorphisms over a functor that expresses the abstract syntax of the language. By composing several functors, it is possible to obtain modular interpreters from reusable components. Monadic folds structure programs that process recursively their input and control the side effects of the output they produce. We consider that the semantic specification of a programming language is a natural framework for monadic folds that improves the abstraction level and modularity. In this paper we use folds and monadic folds to develop the modular monadic semantics of a simple language. Introduction Using monads to structure denotational semantics [20] facilitates more modular semantic specifications. While traditional denotational semantics maps terms to values, monadic semantics maps terms to computations where a computation is modelled with a monad. In general, it is not possible to compose two monads to obtain a new monad [13], but ...
General Terms
"... Temporal media is information that is directly consumed by a user, and that varies with time. Examples include music, digital sound files, computer animations, and video clips. In this paper we present a polymorphic data type that captures a broad range of temporal media. We study its syntactic, tem ..."
Abstract
 Add to MetaCart
(Show Context)
Temporal media is information that is directly consumed by a user, and that varies with time. Examples include music, digital sound files, computer animations, and video clips. In this paper we present a polymorphic data type that captures a broad range of temporal media. We study its syntactic, temporal, and semantic properties, leading to an algebraic theory of polymorphic temporal media that is valid for underlying media types that satisfy specific constraints. The key technical result is an axiomatic semantics for polymorphic temporal media that is shown to be both sound and complete.