Results 1 -
5 of
5
Modular Denotational Semantics for Compiler Construction
- In European Symposium on Programming
, 1996
"... . We show the benefits of applying modular monadic semantics to compiler construction. Modular monadic semantics allows us to define a language with a rich set of features from reusable building blocks, and use program transformation and equational reasoning to improve code. Compared to denotational ..."
Abstract
-
Cited by 52 (4 self)
- Add to MetaCart
. We show the benefits of applying modular monadic semantics to compiler construction. Modular monadic semantics allows us to define a language with a rich set of features from reusable building blocks, and use program transformation and equational reasoning to improve code. Compared to denotational semantics, reasoning in monadic style offers the added benefits of highly modularized proofs and more widely applicable results. To demonstrate, we present an axiomatization of environments, and use it to prove the correctness of a well-known compilation technique. The monadic approach also facilitates generating code in various target languages with different sets of built-in features. 1 Introduction We propose a modular semantics which allows language designers to add (or remove) programming language features without causing global changes to the existing specification, derive a compilation scheme from semantic descriptions, prove the correctness of program transformation and compilation...
Compositional References for Stateful Functional Programming
- In Proceedings of the 2nd ACM SIGPLAN International Conference on Functional Programming (ICFP’97
, 1997
"... We introduce the notion of compositional references into the framework of monadic functional programming and propose a set of new primitives based on this notion. They enable us to use a wide range of mutable data structures. There, references may be passed around explicitly, or mutable data structu ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
We introduce the notion of compositional references into the framework of monadic functional programming and propose a set of new primitives based on this notion. They enable us to use a wide range of mutable data structures. There, references may be passed around explicitly, or mutable data structures such as arrays and tuples may be passed implicitly as hidden state. The former style is called the explicit style and is usually more expressive, while the latter is called the implicit style and has simpler semantics. We investigate the relation between the two styles and discus implementation issues. 1 Introduction Many proposals have been made toward a safe integration of a purely, lazy functional language with in-place updatable state [3, 1, etc.]. In a series of proposals [16, 11], the notion of monads [7] provides a basis for such an integration. Based on monads, Launchbury and Peyton Jones [5] proposed a way to express computations which deal with multiple mutable objects by pr...
Parallel Haskell: The vectorisation monad
, 1993
"... It has long been known that some of the most common uses of for and while-loops in imperative programs can easily be expressed using the standard higher-order functions fold and map. With this correspondence as a starting point, we derive parallel implementations of various iterative constructs, ea ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
It has long been known that some of the most common uses of for and while-loops in imperative programs can easily be expressed using the standard higher-order functions fold and map. With this correspondence as a starting point, we derive parallel implementations of various iterative constructs, each having a better complexity than their sequential counterparts, and explore the use of monads to guarantee the soundness of the parallel implementation. As an aid to the presentation of the material, we use the proposed syntax for parallel Haskell [27] (figure 1) as a vehicle in which imperative functional programs will be expressed. Surprisingly, incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [30, 24, 36, 20]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [38, 37, 26]. Typically monads are used to guarantee single threadedn...
Proc. International Symp. on Math. Foundations of Comp.
"... iancaglini, and S. Ronchi Della Rocca, editors, Automata, Languages and Programming, volume 372 of Lecture Notes in Computer Science, pages 704--722, Stresa, Italy, 1989. Springer-Verlag, Berlin. [RV95] J. G. Riecke and R. Viswanathan. Isolating side effects in sequential languages. In Conf. Record ..."
Abstract
- Add to MetaCart
iancaglini, and S. Ronchi Della Rocca, editors, Automata, Languages and Programming, volume 372 of Lecture Notes in Computer Science, pages 704--722, Stresa, Italy, 1989. Springer-Verlag, Berlin. [RV95] J. G. Riecke and R. Viswanathan. Isolating side effects in sequential languages. In Conf. Record 22nd ACM Symp. on Principles of Programming Languages, pages ??--??, San Francisco, 1995. ACM, New York. [Sie94] K. Sieber. Full abstraction for the second order subset of an Algol-like language (preliminary report). Technischer Bericht A 01/94, Universitaet des Saarlandes, February, 1994. [SRI91] V. Swarup, U.S. Reddy, and E. Ireland. Assignments for applicative languages. In Hughes, editor, Functional Programming Languages and Computer Architecture, pages 193--214, 1991. LNCS 523, Springer Verlag. [Ten89] R. D. Tennent. Elementary data structures in Algol-like languages. Science of Computer Programming, 13:73-
Rigorous Development of Functional Programs Using Temporal Logic
, 2003
"... In this paper, we propose a new method, based on the use of temporal logic, for developing and reasoning about functional programs. Our software development method is rigorous and systematic: starting with a list of informal requirement descriptions, we initially derive a set of object-based spec ..."
Abstract
- Add to MetaCart
In this paper, we propose a new method, based on the use of temporal logic, for developing and reasoning about functional programs. Our software development method is rigorous and systematic: starting with a list of informal requirement descriptions, we initially derive a set of object-based specifications, which are later on transformed into modular monadic functional programs. The obtained specifications and programs are shown to consist in an effective basis for verification.

