Results 1  10
of
59
Additional services for Journal of Functional Programming:
"... How to cite this article: MAURO JASKELIOFF and RUSSELL O'CONNOR (2015). A representation theorem for secondorder functionals. Journal of Functional Programming, 25, e13 doi:10.1017/S0956796815000088 ..."
Abstract
 Add to MetaCart
How to cite this article: MAURO JASKELIOFF and RUSSELL O'CONNOR (2015). A representation theorem for secondorder functionals. Journal of Functional Programming, 25, e13 doi:10.1017/S0956796815000088
Monad Transformers as Monoid Transformers
"... The incremental approach to modular monadic semantics constructs complex monads by using monad transformers to add computational features to a preexisting monad. A complication of this approach is that the operations associated to the preexisting monad need to be lifted to the new monad. In a compa ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
companion paper by Jaskelioff, the lifting problem has been addressed in the setting of system F ω. Here, we recast and extend those results in a categorytheoretic setting. We abstract and generalize from monads to monoids (in a monoidal category), and from monad transformers to monoid transformers
Data types à la carte
"... This paper describes a technique for assembling both data types and functions from isolated individual components. We also explore how the same technology can be used to combine free monads and, as a result, structure Haskell’s monolithic IO monad. 1 ..."
Abstract

Cited by 60 (1 self)
 Add to MetaCart
This paper describes a technique for assembling both data types and functions from isolated individual components. We also explore how the same technology can be used to combine free monads and, as a result, structure Haskell’s monolithic IO monad. 1
Guarded Recursion and Mathematical Operational Semantics
"... Operational semantics gives meaning to terms in a programming language by defining a transition relation which represents execution steps. In structural operational semantics (SOS) this transition relation is given by a set of rules defined on the structure of the terms of the language. But, when is ..."
Abstract
 Add to MetaCart
Operational semantics gives meaning to terms in a programming language by defining a transition relation which represents execution steps. In structural operational semantics (SOS) this transition relation is given by a set of rules defined on the structure of the terms of the language. But, when is a collection of rules satisfactory, in the sense that it defines a wellbehaved operational semantics? Before the introduction of Mathematical Operational Semantics by Turi [2], there were many attempts to conceive a theory of operational semantics in the form of syntactic rule formats. These results were specific to a particular type of transition relation, strongly syntactic, and therefore difficult to generalize and adapt to other settings. Turi stripped operational semantics to its bare bones, ignoring concrete syntax to focus on its structure and, as a result, giving us a clean categorical reformulation of SOS. Under this interpretation, the SOS of a language is given by a distributive law of syntax over behaviour. If the operations in the language are given by a signature functor Σ and the behaviour
Factorising Folds for Faster Functions
"... The worker/wrapper transformation is a general technique for improving the performance of recursive programs by changing their types. The previous formalisation (Gill & Hutton, 2009) was based upon a simple fixed point semantics of recursion. In this article we develop a more structured approach ..."
Abstract

Cited by 13 (9 self)
 Add to MetaCart
The worker/wrapper transformation is a general technique for improving the performance of recursive programs by changing their types. The previous formalisation (Gill & Hutton, 2009) was based upon a simple fixed point semantics of recursion. In this article we develop a more structured approach, based upon initial algebra semantics. In particular, we show how the worker/wrapper transformation can be applied to programs defined using the structured pattern of recursion captured by fold operators, and illustrate our new technique with a number of examples.
Secure multiexecution in Haskell
 In Proc. Andrei Ershov International Conference on Perspectives of System Informatics, LNCS
, 2011
"... Abstract. Languagebased informationflow security has emerged as a promising technology to guarantee confidentiality in online systems, where enforcement mechanisms are typically presented as runtime monitors, code transformations, or typesystems. Recently, an alternative technique, called se ..."
Abstract

Cited by 12 (3 self)
 Add to MetaCart
Abstract. Languagebased informationflow security has emerged as a promising technology to guarantee confidentiality in online systems, where enforcement mechanisms are typically presented as runtime monitors, code transformations, or typesystems. Recently, an alternative technique, called secure multiexecution, has been proposed. The main idea behind this novel approach consists on running a program multiple times, once for each security level, using special rules for I/O operations. Compared to runtime monitors and typesystems, secure multiexecution does not require to inspect the full code of the application (only its I/O actions). In this paper, we propose the core of a library to provide noninterference through securemulti execution. We present the code of the library as well as a running example for Haskell. To the best of our knowledge, this paper is the first work to consider securemulti execution in a functional setting and provide this technology as a library. 1
Modularity and Implementation of Mathematical Operational Semantics
"... Structural operational semantics is a popular technique for specifying the meaning of programs by means of inductive clauses. One seeks syntactic restrictions on those clauses so that the resulting operational semantics is wellbehaved. This approach is simple and concrete but it has some drawbacks. ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
Structural operational semantics is a popular technique for specifying the meaning of programs by means of inductive clauses. One seeks syntactic restrictions on those clauses so that the resulting operational semantics is wellbehaved. This approach is simple and concrete but it has some drawbacks. Turi pioneered a more abstract categorical treatment based upon the idea that operational semantics is essentially a distribution of syntax over behaviour. In this article we take Turi’s approach in two new directions. Firstly, we show how to write operational semantics as modular components and how to combine such components to specify complete languages. Secondly, we show how the categorical nature of Turi’s operational semantics makes it ideal for implementation in a functional programming language such as Haskell. Keywords:
Modular monad transformers
 In ESOP ’09: Proceedings of the 18th European Symposium on Programming Languages and Systems
, 2009
"... Abstract. During the last two decades, monads have become an indispensable tool for structuring functional programs with computational effects. In this setting, the mathematical notion of a monad is extended with operations that allow programmers to manipulate these effects. When several effects are ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
Abstract. During the last two decades, monads have become an indispensable tool for structuring functional programs with computational effects. In this setting, the mathematical notion of a monad is extended with operations that allow programmers to manipulate these effects. When several effects are involved, monad transformers can be used to build up the required monad one effect at a time. Although this seems to be modularity nirvana, there is a catch: in addition to the construction of a monad, the effectmanipulating operations need to be lifted to the resulting monad. The traditional approach for lifting operations is nonmodular and adhoc. We solve this problem with a principled technique for lifting operations that makes monad transformers truly modular. 1
An investigation of the laws of traversals
 In Proceedings of the 4th Workshop on Mathematically Structured Functional Programming. EPTCS
, 2012
"... Traversals of data structures are ubiquitous in programming. Consequently, it is important to be able to characterise those structures that are traversable and understand their algebraic properties. Traversable functors have been characterised by McBride and Paterson as those equipped with a distrib ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Traversals of data structures are ubiquitous in programming. Consequently, it is important to be able to characterise those structures that are traversable and understand their algebraic properties. Traversable functors have been characterised by McBride and Paterson as those equipped with a distributive law over arbitrary applicative functors; however, laws that fully capture the intuition behind traversals are missing. This article is an attempt to remedy this situation by proposing laws for characterising traversals that capture the intuition behind them. To support our claims, we prove that finitary containers are traversable in our sense and argue that elements in a traversable structure are visited exactly once. 1
◮ What is a traversal (strategy), for a given datatype
"... A function of type traverse:: (a → M b) → T a → M (T b) ◮... where M:: ∗ → ∗ is a type constructor that captures effectful computations (think: monads, or idioms) ◮... where in fact traverse should be polymorphic in such M (which hence should be written m), but not polymorphic in T ◮... and wher ..."
Abstract
 Add to MetaCart
A function of type traverse:: (a → M b) → T a → M (T b) ◮... where M:: ∗ → ∗ is a type constructor that captures effectful computations (think: monads, or idioms) ◮... where in fact traverse should be polymorphic in such M (which hence should be written m), but not polymorphic in T ◮... and where the behaviour of traverse should be governed by some laws
Results 1  10
of
59