Results 1  10
of
38
Arrows, Robots, and Functional Reactive Programming
 Advanced Functional Programming, 4th International School, volume 2638 of LNCS
, 2002
"... Functional reactive programming, or FRP, is a paradigm for programming hybrid systems  i.e., systems containing a combination of both continuous and discrete components  in a highlevel, declarative way. The key ideas in FRP are its notions of continuous, timevarying values, and timeordere ..."
Abstract

Cited by 47 (10 self)
 Add to MetaCart
Functional reactive programming, or FRP, is a paradigm for programming hybrid systems  i.e., systems containing a combination of both continuous and discrete components  in a highlevel, declarative way. The key ideas in FRP are its notions of continuous, timevarying values, and timeordered sequences of discrete events.
Encoding information flow in Haskell
 In CSFW’06: the 19th IEEE Computer Security Foundations Workshop
, 2006
"... This paper presents an embedded security sublanguage for enforcing informationflow policies in the standard Haskell programming language. The sublanguage provides useful informationflow control mechanisms including dynamic security lattices, runtime code privileges and declassification, without m ..."
Abstract

Cited by 34 (4 self)
 Add to MetaCart
This paper presents an embedded security sublanguage for enforcing informationflow policies in the standard Haskell programming language. The sublanguage provides useful informationflow control mechanisms including dynamic security lattices, runtime code privileges and declassification, without modifying the base language. This design avoids the redundant work of producing new languages, lowers the threshold for adopting securitytyped languages, and also provides great flexibility and modularity for using securitypolicy frameworks. The embedded security sublanguage is designed using a standard combinator interface called arrows. Computations constructed in the sublanguage have static and explicit controlflow components, making it possible to implement informationflow control using staticanalysis techniques at run time, while providing strong security guarantees. This paper presents a concrete Haskell implementation and an example application demonstrating the proposed techniques. 1.
The essence of dataflow programming
 In APLAS
, 2005
"... Abstract. We propose a novel, comonadic approach to dataflow (streambased) computation. This is based on the observation that both general and causal stream functions can be characterized as coKleisli arrows of comonads and on the intuition that comonads in general must be a good means to structure ..."
Abstract

Cited by 18 (3 self)
 Add to MetaCart
Abstract. We propose a novel, comonadic approach to dataflow (streambased) computation. This is based on the observation that both general and causal stream functions can be characterized as coKleisli arrows of comonads and on the intuition that comonads in general must be a good means to structure contextdependent computation. In particular, we develop a generic comonadic interpreter of languages for contextdependent computation and instantiate it for streambased computation. We also discuss distributive laws of a comonad over a monad as a means to structure combinations of effectful and contextdependent computation. We apply the latter to analyse clocked dataflow (partial stream based) computation. 1
Structuring quantum effects: Superoperators as arrows
 Mathematical Structures in Computer Science, special issue on Quantum Programming Languages
, 2006
"... We show that quantum computation can be decomposed in a pure classical (functional) part and an effectful part modeling probabilities and measurement. The effectful part can be modeled using a generalization of monads called arrows. Both the functional and effectful parts can be elegantly expressed ..."
Abstract

Cited by 16 (8 self)
 Add to MetaCart
We show that quantum computation can be decomposed in a pure classical (functional) part and an effectful part modeling probabilities and measurement. The effectful part can be modeled using a generalization of monads called arrows. Both the functional and effectful parts can be elegantly expressed in the Haskell programming language. 1
Arrows and computation
 The Fun of Programming
, 2003
"... With this machinery, we can give a common structure to programs based on different notions of computation. The generality of arrows tends to force one into a pointfree style, which is useful for proving general properties. However it is not to everyone's taste, and can be awkward for programming sp ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
With this machinery, we can give a common structure to programs based on different notions of computation. The generality of arrows tends to force one into a pointfree style, which is useful for proving general properties. However it is not to everyone's taste, and can be awkward for programming specific instances. The solution is a pointwise notation for arrows, which is automatically translated to the functional language Haskell. Each notion of computation thus defines a special sublanguage of Haskell. 1 Notions of computation We shall explore what we mean by a notion of computation using four varied examples. As a point of comparison, we shall consider how the following operator on functions may be generalized to the various types of `functionlike ' components.
Arrows, like monads, are monoids
 Proc. of 22nd Ann. Conf. on Mathematical Foundations of Programming Semantics, MFPS XXII, v. 158 of Electron. Notes in Theoret. Comput. Sci
, 2006
"... Monads are by now wellestablished as programming construct in functional languages. Recently, the notion of “Arrow ” was introduced by Hughes as an extension, not with one, but with two type parameters. At first, these Arrows may look somewhat arbitrary. Here we show that they are categorically fai ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
Monads are by now wellestablished as programming construct in functional languages. Recently, the notion of “Arrow ” was introduced by Hughes as an extension, not with one, but with two type parameters. At first, these Arrows may look somewhat arbitrary. Here we show that they are categorically fairly civilised, by showing that they correspond to monoids in suitable subcategories of bifunctors C op ×C → C. This shows that, at a suitable level of abstraction, arrows are like monads — which are monoids in categories of functors C → C. Freyd categories have been introduced by Power and Robinson to model computational effects, well before Hughes ’ Arrows appeared. It is often claimed (informally) that Arrows are simply Freyd categories. We shall make this claim precise by showing how monoids in categories of bifunctors exactly correspond to Freyd categories.
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 10 (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.
Safe Functional Reactive Programming through Dependent Types
"... Functional Reactive Programming (FRP) is an approach to reactive programming where systems are structured as networks of functions operating on signals. FRP is based on the synchronous dataflow paradigm and supports both continuoustime and discretetime signals (hybrid systems). What sets FRP apart ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
Functional Reactive Programming (FRP) is an approach to reactive programming where systems are structured as networks of functions operating on signals. FRP is based on the synchronous dataflow paradigm and supports both continuoustime and discretetime signals (hybrid systems). What sets FRP apart from most other languages for similar applications is its support for systems with dynamic structure and for higherorder reactive constructs. Statically guaranteeing correctness properties of programs is an attractive proposition. This is true in particular for typical application domains for reactive programming such as embedded systems. To that end, many existing reactive languages have type systems or other static checks that guarantee domainspecific properties, such as feedback loops always being wellformed. However, they are limited in their capabilities to support dynamism and higherorder dataflow compared with FRP. Thus, the onus of ensuring such properties of FRP programs has so far been on the programmer as established static techniques do not suffice. In this paper, we show how dependent types allow this concern to be addressed. We present an implementation of FRP embedded in the dependentlytyped language Agda, leveraging the type system of the host language to craft a domainspecific (dependent) type system for FRP. The implementation constitutes a discrete, operational semantics of FRP, and as it passes the Agda type, coverage, and termination checks, we know the operational semantics is total, which means our type system is safe. Categories and Subject Descriptors D.3.2 [Programming Languages]: Language Classifications—applicative (functional) languages, dataflow languages, specialized application languages General Terms Languages Keywords dependent types, domainspecific languages, DSELs, FRP, functional programming, reactive programming, synchronous dataflow
Arrows for Secure Information Flow
"... This paper presents an embedded security sublanguage for enforcing informationflow policies in the standard Haskell programming language. The sublanguage provides useful informationflow control mechanisms including dynamic security lattices, runtime code privileges and declassification all without ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
This paper presents an embedded security sublanguage for enforcing informationflow policies in the standard Haskell programming language. The sublanguage provides useful informationflow control mechanisms including dynamic security lattices, runtime code privileges and declassification all without modifying the base language. This design avoids the redundant work of producing new languages, lowers the threshold for adopting securitytyped languages, and also provides great flexibility and modularity for using securitypolicy frameworks. The embedded security sublanguage is designed using a standard combinator interface called arrows. Computations constructed in the sublanguage have static and explicit controlflow components, making it possible to implement informationflow control using staticanalysis techniques at run time, while providing strong security guarantees. This paper presents a formal proof that our embedded sublanguage provides noninterference, a concrete Haskell implementation and an example application demonstrating the proposed techniques. 1
There and back again: arrows for invertible programming
 In Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
, 2006
"... Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (biarrows). The biarrow class is an extension of Haskell’s arrow class with an extra combinator tha ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (biarrows). The biarrow class is an extension of Haskell’s arrow class with an extra combinator that changes the direction of computation. The advantage of the use of biarrows for invertible programming is the preservation of invertibility properties using the biarrow combinators. Programming with biarrows in a polytypic or generic way exploits this the most. Besides bidirectional polytypic examples, including invertible serialization, we give the definition of a monadic biarrow transformer, which we use to construct a bidirectional parser/pretty printer.