Results 1  10
of
41
Monatron: an extensible monad transformer library. Available at http://www.cs.nott.ac.uk/~mjj/pubs/monatron.pdf
"... Abstract. Monads are pervasive in functional programming. In order to reap the benefits of their abstraction power, combinator libraries for monads are necessary. Monad transformers provide the basis for such libraries, and are based on a design that has proved to be successful. In this article, we ..."
Abstract

Cited by 17 (2 self)
 Add to MetaCart
(Show Context)
Abstract. Monads are pervasive in functional programming. In order to reap the benefits of their abstraction power, combinator libraries for monads are necessary. Monad transformers provide the basis for such libraries, and are based on a design that has proved to be successful. In this article, we show that this design has a number of shortcomings and provide a new design that builds on the strengths of the traditional design, but addresses its problems. 1
Extensible Effects An Alternative to Monad Transformers
"... We design and implement a library that solves the longstanding problem of combining effects without imposing restrictions on their interactions (such as static ordering). Effects arise from interactions between a client and an effect handler (interpreter); interactions may vary throughout the progr ..."
Abstract

Cited by 17 (1 self)
 Add to MetaCart
(Show Context)
We design and implement a library that solves the longstanding problem of combining effects without imposing restrictions on their interactions (such as static ordering). Effects arise from interactions between a client and an effect handler (interpreter); interactions may vary throughout the program and dynamically adapt to execution conditions. Existing code that relies on monad transformers may be used with our library with minor changes, gaining efficiency over long monad stacks. In addition, our library has greater expressiveness, allowing for practical idioms that are inefficient, cumbersome, or outright impossible with monad transformers. Our alternative to a monad transformer stack is a single monad, for the coroutinelike communication of a client with its handler. Its type reflects possible requests, i.e., possible effects of a computation. To support arbitrary effects and their combinations, requests are values of an extensible union type, which allows adding and, notably, subtracting summands. Extending and, upon handling, shrinking of the union of possible requests is reflected in its type, yielding a typeandeffect system for Haskell. The library is lightweight, generalizing the extensible exception handling to other effects and accurately tracking them in types.
Relating Models of Backtracking
 IN PROC. 9TH INT. CONF. ON FUNCTIONAL PROGRAMMING
, 2004
"... Past attempts to relate two wellknown models of backtracking computataion have met with only limited success. We relate these two models using logical relations. We accommodate higherorder values and in nite computations. We also provide an operational semantics, and we prove it adequate for both ..."
Abstract

Cited by 16 (0 self)
 Add to MetaCart
Past attempts to relate two wellknown models of backtracking computataion have met with only limited success. We relate these two models using logical relations. We accommodate higherorder values and in nite computations. We also provide an operational semantics, and we prove it adequate for both models.
Programming monads operationally with Unimo
 In ICFP
, 2006
"... Monads are widely used in Haskell for modeling computational effects, but defining monads remains a daunting challenge. Since every part of a monad’s definition depends on its computational effects, programmers cannot leverage the common behavior of all monads easily and thus must build from scratch ..."
Abstract

Cited by 13 (2 self)
 Add to MetaCart
(Show Context)
Monads are widely used in Haskell for modeling computational effects, but defining monads remains a daunting challenge. Since every part of a monad’s definition depends on its computational effects, programmers cannot leverage the common behavior of all monads easily and thus must build from scratch each monad that models a new computational effect. I propose the Unimo framework which allows programmers to define monads and monad transformers in a modular manner. Unimo contains a heavily parameterized observer function which enforces the monad laws, and programmers define a monad by invoking the observer function with arguments that specify the computational effects of the monad. Since Unimo provides the common behavior of all monads in a reusable form, programmers no longer need to rebuild the semantic boilerplate for each monad and can instead focus on the more interesting and rewarding task of modeling the desired computational effects.
Inductive Reasoning About Effectful Data Types
 In Proceedings of the ACM SIGPLAN International Conference on Functional Programming
, 2007
"... We present a pair of reasoning principles, definition and proof by rigid induction, which can be seen as proper generalizations of lazydatatype induction to monadic effects other than partiality. We further show how these principles can be integrated into logicalrelations arguments, and obtain as ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
(Show Context)
We present a pair of reasoning principles, definition and proof by rigid induction, which can be seen as proper generalizations of lazydatatype induction to monadic effects other than partiality. We further show how these principles can be integrated into logicalrelations arguments, and obtain as a particular instance a general and principled proof that the successstream and failurecontinuation models of backtracking are equivalent. As another application, we present a monadic model of general search trees, not necessarily traversed depthfirst. The results are applicable to both lazy and eager languages, and we emphasize this by presenting most examples in both Haskell and SML.
The Essence of Strategic Programming An inquiry into transparadigmatic genericity
, 2002
"... Strategic programming is an idiom for generic programming where the concept of a strategy plays a central role. A strategy is a generic, dataprocessing action. Strategies are rstclass citizens as witnessed by a combinator style. Two important characteristics of strategies are that they can traverse ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
(Show Context)
Strategic programming is an idiom for generic programming where the concept of a strategy plays a central role. A strategy is a generic, dataprocessing action. Strategies are rstclass citizens as witnessed by a combinator style. Two important characteristics of strategies are that they can traverse into compound data, and that they can be customized by typespecic actions. We provide a general denition of strategic programming, and we demonstrate how this idiom can be realized inside several programming language paradigms.
Effect handlers in scope
 In
"... Algebraic effect handlers are a powerful means for describing effectful computations. They provide a lightweight and orthogonal technique to define and compose the syntax and semantics of different effects. The semantics is captured by handlers, which are functions that transform syntax trees. Unfor ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
(Show Context)
Algebraic effect handlers are a powerful means for describing effectful computations. They provide a lightweight and orthogonal technique to define and compose the syntax and semantics of different effects. The semantics is captured by handlers, which are functions that transform syntax trees. Unfortunately, the approach does not support syntax for scoping constructs, which arise in a number of scenarios. While handlers can be used to provide a limited form of scope, we demonstrate that this approach constrains the possible interactions of effects and rules out some desired semantics. This paper presents two different ways to capture scoped constructs in syntax, and shows how to achieve different semantics by reordering handlers. The first approach expresses scopes using the existing algebraic handlers framework, but has some limitations. The problem is fully solved in the second approach where we introduce higherorder syntax.
Kleene Monads: Handling Iteration in a Framework of Generic Effects
"... Abstract. Monads are a wellestablished tool for modelling various computational effects. They form the semantic basis of Moggi’s computational metalanguage, the metalanguage of effects for short, which made its way into modern functional programming in the shape of Haskell’s donotation. Standard c ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
(Show Context)
Abstract. Monads are a wellestablished tool for modelling various computational effects. They form the semantic basis of Moggi’s computational metalanguage, the metalanguage of effects for short, which made its way into modern functional programming in the shape of Haskell’s donotation. Standard computational idioms call for specific classes of monads that support additional control operations. Here, we introduce Kleene monads, which additionally feature nondeterministic choice and Kleene star, i.e. nondeterministic iteration, and we provide a metalanguage and a sound calculus for Kleene monads, the metalanguage of control and effects, which is the natural joint extension of Kleene algebra and the metalanguage of effects. This provides a framework for studying abstract program equality focussing on iteration and effects. These aspects are known to have decidable equational theories when studied in isolation. However, it is well known that decidability breaks easily; e.g. the Horn theory of continuous Kleene algebras fails to be recursively enumerable. Here, we prove several negative results for the metalanguage of control and effects; in particular, already the equational theory of the unrestricted metalanguage of control and effects over continuous Kleene monads fails to be recursively enumerable. We proceed to identify a fragment of this language which still contains both Kleene algebra and the metalanguage of effects and for which the natural axiomatisation is complete, and indeed the equational theory is decidable. 1
Soutei, a LogicBased TrustManagement System System Description
"... Abstract. We describe the design and implementation of a trustmanagement system Soutei, a dialect of Binder, for access control in distributed systems. Soutei policies and credentials are written in a declarative logicbased security language and thus constitute distributed logic programs. Soutei p ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
Abstract. We describe the design and implementation of a trustmanagement system Soutei, a dialect of Binder, for access control in distributed systems. Soutei policies and credentials are written in a declarative logicbased security language and thus constitute distributed logic programs. Soutei policies are modular, concise, and readable. They support policy verification, and, despite the simplicity of the language, express role and attributebased access control lists, and conditional delegation. We describe the realworld deployment of Soutei into a publishsubscribe web service with distributed and compartmentalized administration, emphasizing the often overlooked aspect of authorizing the creation of resources and the corresponding policies. Soutei brings Binder from a research prototype into the real world. Supporting large, truly distributed policies required nontrivial changes to Binder, in particular moderestriction and goaldirected topdown evaluation. To improve the robustness of our evaluator, we describe a fair and terminating backtracking algorithm.