• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

A Functional Specification of Effects (2008)

by W Swierstra
Add To MetaCart

Tools

Sorted by:
Results 1 - 6 of 6

Just do it: Simple monadic equational reasoning

by Jeremy Gibbons, Ralf Hinze - In Proceedings of the 16th International Conference on Functional Programming (ICFP’11 , 2011
"... One of the appeals of pure functional programming is that it is so amenable to equational reasoning. One of the problems of pure functional programming is that it rules out computational effects. Moggi and Wadler showed how to get round this problem by using monads to encapsulate the effects, leadin ..."
Abstract - Cited by 2 (1 self) - Add to MetaCart
One of the appeals of pure functional programming is that it is so amenable to equational reasoning. One of the problems of pure functional programming is that it rules out computational effects. Moggi and Wadler showed how to get round this problem by using monads to encapsulate the effects, leading in essence to a phase distinction—a pure functional evaluation yielding an impure imperative computation. Still, it has not been clear how to reconcile that phase distinction with the continuing appeal of functional programming; does the impure imperative part become inaccessible to equational reasoning? We think not; and to back that up, we present a simple axiomatic approach to reasoning about programs with computational effects.

Filet-o-Fish: practical and dependable domain-specific languages for OS development

by Pierre-evariste Dagand, Andrew Baumann, Timothy Roscoe
"... We address a persistent problem with using domain-specific languages to write operating systems: the effort of implementing, checking, and debugging the DSL usually outweighs any of its benefits. Because these DSLs generate C by templated string concatenation, they are tedious to write, fragile, and ..."
Abstract - Cited by 1 (0 self) - Add to MetaCart
We address a persistent problem with using domain-specific languages to write operating systems: the effort of implementing, checking, and debugging the DSL usually outweighs any of its benefits. Because these DSLs generate C by templated string concatenation, they are tedious to write, fragile, and incompatible with automated verification tools. We present Filet-o-Fish (FoF), a semantic language to ease DSL construction. Building a DSL using FoF consists of safely composing semantically-rich building blocks. This has several advantages: input files for the DSL are formal specifications of the system’s functionality, automated testing of the DSL is possible via existing tools, and we can prove that the C code generated by a given DSL respects the semantics expected by the developer. Early experience has been good: FoF is in daily use as part of the tool chain of the Barrelfish multicore OS, which makes extensive use of domain-specific languages to generate low-level OS code. We have found that the ability to rapidly generate DSLs we can rely on has changed how we have designed the OS. 1.

The Quantum IO Monad

by Thorsten Altenkirch, Alexander S. Green
"... The Quantum IO monad is a purely functional interface to quantum programming implemented as a Haskell library. At the same time it provides a constructive semantics of quantum programming. The QIO monad separates reversible (i.e. unitary) and irreversible (i.e. probabilistic) computations and provid ..."
Abstract - Cited by 1 (1 self) - Add to MetaCart
The Quantum IO monad is a purely functional interface to quantum programming implemented as a Haskell library. At the same time it provides a constructive semantics of quantum programming. The QIO monad separates reversible (i.e. unitary) and irreversible (i.e. probabilistic) computations and provides a reversible let operation (ulet), allowing us to use ancillas (auxiliary qubits) in a modular fashion. QIO programs can be simulated either by calculating a probability distribution or by embedding it into the IO monad using the random number generator. As an example we present a complete implementation of Shor’s algorithm.

Trace-based Verification of Imperative Programs with I/O

by Gregory Malecha, Greg Morrisett, Ryan Wisnesky
"... In this paper we demonstrate how to prove the correctness of systems implemented using lowlevel imperative features like pointers, files, and socket I/O with respect to high level I/O protocol descriptions by using the Coq proof assistant. We present a web-based course gradebook application develope ..."
Abstract - Cited by 1 (0 self) - Add to MetaCart
In this paper we demonstrate how to prove the correctness of systems implemented using lowlevel imperative features like pointers, files, and socket I/O with respect to high level I/O protocol descriptions by using the Coq proof assistant. We present a web-based course gradebook application developed with Ynot, a Coq library for verified imperative programming. We add a dialog-based I/O system to Ynot, and we extend Ynot’s underlying Hoare logic with event traces to reason about I/O and protocol behavior. Expressive abstractions allow the modular verification of both high level specifications like privacy guarantees and low level properties like data structure pointer invariants.

Effects in functional and dependently-typed programming

by Iain Lane
"... Effectful programming is supported in Haskell by compilers which provide primitive effectful operations, together with functions to combine these operations into larger programs. Unfortunately, this makes the task of reasoning about the correctness of and understanding the behaviour of programs with ..."
Abstract - Add to MetaCart
Effectful programming is supported in Haskell by compilers which provide primitive effectful operations, together with functions to combine these operations into larger programs. Unfortunately, this makes the task of reasoning about the correctness of and understanding the behaviour of programs with effects into a difficult problem. In the first part of this report, we survey the technologies that have been developed to express effects when programming in a functional language. We then move on to discuss some techniques which are used for reasoning about these programs, as well as developing correct-by-construction programs which are guaranteed to match their specifications. We move on to discuss a potential new model for specifying local state (á la the ST monad), along with an initial prototype in the dependently-typed functional programming language Agda. This model specifies the effect that computations have on the heap which

1 The Quantum IO Monad

by Thorsten Altenkirch, Er S. Green
"... The Quantum IO monad is a purely functional interface to quantum programming implemented as a Haskell library. At the same time it provides a constructive semantics of quantum programming. The QIO monad separates reversible (i.e. unitary) and irreversible (i.e. probabilistic) computations and provid ..."
Abstract - Add to MetaCart
The Quantum IO monad is a purely functional interface to quantum programming implemented as a Haskell library. At the same time it provides a constructive semantics of quantum programming. The QIO monad separates reversible (i.e. unitary) and irreversible (i.e. probabilistic) computations and provides a reversible let operation (ulet), allowing us to use ancillas (auxiliary qubits) in a modular fashion. QIO programs can be simulated either by calculating a probability distribution or by embedding it into the IO monad using the random number generator. As an example we present a complete implementation of Shor’s algorithm. 1.1
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University