Results 1  10
of
12
An abstract monadic semantics for value recursion
 In Proceeding of the 2003 Workshop on Fixed Points in Computer Science (FICS
, 2003
"... This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Sch ..."
Abstract

Cited by 19 (7 self)
 Add to MetaCart
This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Scheme and its monadic version proposed by Friedman and Sabry, but it defines a different semantics and does not rely on assignments. When contrasted to the axiomatic approach proposed by Erkök and Launchbury, our semantics for the continuation monad invalidates one of the axioms, adding to the evidence that this axiom is problematic in the presence of continuations. 1
A Recursive do for Haskell
, 2002
"... Certain programs making use of monads need to perform recursion over the values of monadic actions. Although the donotation of Haskell provides a convenient framework for monadic programming, it lacks the generality to support such recursive bindings. In this paper, we describe an enhanced translat ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
Certain programs making use of monads need to perform recursion over the values of monadic actions. Although the donotation of Haskell provides a convenient framework for monadic programming, it lacks the generality to support such recursive bindings. In this paper, we describe an enhanced translation schema for the donotation and its integration into Haskell. The new translation allows variables to be bound recursively, provided the underlying monad comes equipped with an appropriate fixedpoint operator.
Semantics of value recursion for monadic input/output
 Journal of Theoretical Informatics and Applications
, 2002
"... Abstract. Monads have been employed in programming languages for modeling various language features, most importantly those that involve side effects. In particular, Haskell’s IO monad provides access to I/O operations and mutable variables, without compromising referential transparency. Cyclic defi ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
(Show Context)
Abstract. Monads have been employed in programming languages for modeling various language features, most importantly those that involve side effects. In particular, Haskell’s IO monad provides access to I/O operations and mutable variables, without compromising referential transparency. Cyclic definitions that involve monadic computations give rise to the concept of valuerecursion, where the fixedpoint computation takes place only over the values, without repeating or losing effects. In this paper, we describe a semantics for a lazy language based on Haskell, supporting monadic I/O, mutable variables, usual recursive definitions, and value recursion. Our semantics is composed of two layers: A natural semantics for the functional layer, and a labeled transition semantics for the IO layer. Mathematics Subject Classification. 68N18, 68Q55, 18C15.
Traced Premonoidal Categories
, 1999
"... Motivated by some examples from functional programming, we propose a generalization of the notion of trace to symmetric premonoidal categories and of Conway operators to Freyd categories. We show that in a Freyd category, these notions are equivalent, generalizing a wellknown theorem relating trace ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Motivated by some examples from functional programming, we propose a generalization of the notion of trace to symmetric premonoidal categories and of Conway operators to Freyd categories. We show that in a Freyd category, these notions are equivalent, generalizing a wellknown theorem relating traces and Conway operators in cartesian categories.
An Adequate, Denotational, FunctionalStyle Semantics for Typed FlatCurry
"... Abstract. With the aim of putting typebased reasoning for functional logic languages, as recently explored by Christiansen et al. (2010), on a formal basis, we develop a denotational semantics for a typed core language of Curry. Dealing with the core language FlatCurry rather than with full Curry s ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. With the aim of putting typebased reasoning for functional logic languages, as recently explored by Christiansen et al. (2010), on a formal basis, we develop a denotational semantics for a typed core language of Curry. Dealing with the core language FlatCurry rather than with full Curry suffices, since there exists a typepreserving translation from the latter into the former. In contrast to existing semantics for functional logic languages, we deliberately approach the problem “from the functional side”. That is, rather than adapting approaches previously known from the study of (resolutionlike) semantics for logic languages, we aim for a semantics in the spirit of standard denotational semantics for the polymorphic lambda calculus. We claim and set out to prove that the presented semantics is adequate with respect to an existing operational semantics. A particularly interesting aspect, we think, is that we give the first denotational treatment of recursive letbindings in combination with calltime choice. 1
Efficient and Compositional HigherOrder Streams
"... Abstract. Streambased programming has been around for a long time, but it is typically restricted to static dataflow networks. By introducing firstclass streams that implement the monad interface, we can describe arbitrary dynamic networks in an elegant and consistent way using only two extra pri ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract. Streambased programming has been around for a long time, but it is typically restricted to static dataflow networks. By introducing firstclass streams that implement the monad interface, we can describe arbitrary dynamic networks in an elegant and consistent way using only two extra primitives besides the monadic operations. This paper presents an efficient stream implementation and demonstrates the compositionality of the constructs by mapping them to functions over natural numbers. 1
Minimizing Monad Comprehensions
, 2011
"... Monad comprehensions are by now a mainstay of functional programming languages. In this paper we develop a theory of semantic optimization for monad comprehensions that goes beyond rewriting using the monad laws. A monadwithzero comprehension do x ← X; y ← Y; if P (x, y) then return F (x, y) else ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Monad comprehensions are by now a mainstay of functional programming languages. In this paper we develop a theory of semantic optimization for monad comprehensions that goes beyond rewriting using the monad laws. A monadwithzero comprehension do x ← X; y ← Y; if P (x, y) then return F (x, y) else zero can be rewritten, so as to minimize the number of ← bindings, using constraints that are known to hold of X and Y. The soundness of this technique varies from monad to monad, and we characterize its soundness for monads expressible in functional programming languages by generalizing classical results from relational database theory. This technique allows the optimization of a wide class of languages, ranging from largescale dataparallel languages such as DryadLINQ and Data Parallel Haskell to probabilistic languages such as IBAL and functionallogical languages like Curry.
der Rheinischen FriedrichWilhelmsUniversität Bonn An Adequate, Denotational, FunctionalStyle Semantics for Typed FlatCurry
"... Forschungsberichte sind erhältlich durch: Technical reports can be requested from: ..."
Abstract
 Add to MetaCart
Forschungsberichte sind erhältlich durch: Technical reports can be requested from:
Lazy modules
 UNDER CONSIDERATION FOR PUBLICATION IN J. FUNCTIONAL PROGRAMMING
, 2009
"... We investigate evaluation strategies for MLstyle modules supporting recursion. More precisely we propose and examine five evaluation strategies: a callbyvalue strategy and four callbyneed strategies with different degrees of laziness. We formalize the strategies by translating a source syntax f ..."
Abstract
 Add to MetaCart
We investigate evaluation strategies for MLstyle modules supporting recursion. More precisely we propose and examine five evaluation strategies: a callbyvalue strategy and four callbyneed strategies with different degrees of laziness. We formalize the strategies by translating a source syntax for modules into target languages, which are very much inspired by Felleisen and Hieb’s callbyvalue lambda calculus with state and Ariola and Felleisen’s callbyneed cyclic lambda calculus. Different strategies are expressed by tweaking the translation as well as the operational semantics of the target languages. We look at the strategies through a series of examples and state inclusion between the strategies.