Results 1 -
6 of
6
Practical type inference for arbitrary-rank types
- Journal of Functional Programming
, 2005
"... Note: This document accompanies the paper “Practical type inference for arbitrary-rank types ” [6]. Prior reading of the main paper is required. 1 Contents ..."
Abstract
-
Cited by 78 (18 self)
- Add to MetaCart
Note: This document accompanies the paper “Practical type inference for arbitrary-rank types ” [6]. Prior reading of the main paper is required. 1 Contents
Closed Types for a Safe Imperative MetaML
, 2001
"... This paper addresses the issue of safely combining computational eects and multi-stage programming. We propose a type system, which exploits a notion of closed type, to check statically that an imperative multi-stage program does not cause run-time errors. Our approach is demonstrated formally for a ..."
Abstract
-
Cited by 28 (11 self)
- Add to MetaCart
This paper addresses the issue of safely combining computational eects and multi-stage programming. We propose a type system, which exploits a notion of closed type, to check statically that an imperative multi-stage program does not cause run-time errors. Our approach is demonstrated formally for a core language called MiniML ref . This core language safely combines multi-stage constructs and ML-style references, and is a conservative extension of MiniML ref , a simple imperative subset of SML. In previous work, we introduced a closed type constructor , which was enough to ensure the safe execution of dynamically generated code in the pure fragment of MiniML ref .
Reasoning Using Higher-Order Abstract Syntax in a Higher-Order Logic Proof Environment: Improvements to Hybrid and a Case Study
"... is a joint program with Carleton University, administered by the Ottawa- ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
is a joint program with Carleton University, administered by the Ottawa-
Modular Monadic Semantics
"... Modular monadic semantics is a high-level and modular form of denotational semantics. It is capable of capturing individual programming language features as small building blocks which can be combined to form a programming language of arbitrary complexity. Interactions between features are isolated ..."
Abstract
- Add to MetaCart
Modular monadic semantics is a high-level and modular form of denotational semantics. It is capable of capturing individual programming language features as small building blocks which can be combined to form a programming language of arbitrary complexity. Interactions between features are isolated in such a way that the building blocks are invariant. This paper explores the theory and application of modular monadic semantics, including the building blocks for individual programming language features, equational reasoning with laws and axioms, modular proofs, program transformation, modular interpreters, and semantics-directed compilation. We demonstrate that modular monadic semantics makes programming languages easier to specify, reason about, and implement than the alternative of using conventional denotational semantics. Our contributions include: (a) the design of a fully modular interpreter based on monad transformers, including important features missing from several earlier efforts, (b) a method to lift monad operations through monad transformers, including difficult cases not achieved in earlier work, (c) a study of the semantic implications of the order of monad transformer composition, (d) a formal theory of modular monadic semantics that justifies our choice of liftings based on a notion of naturality, and (e) an implementation of our interpreter in Gofer, whose constructor classes provide just the added power over Haskell type classes to allow precise and convenient expression of our ideas. A note to reviewers: this paper is rather long. Short of resorting to “Part I / Part II”, the one way we see to shorten it would be to remove Section 4 and its Appendix B, which would amount to eliminating contribution (e) above. This would shorten the paper by about 12 pages.
Polymorphic Typing of Heterogeneous Lists
"... ion and concretization operator from pattern list type to uniform ML list type The abstraction AbsML that maps every pattern list type scheme to a set of standard ML type scheme results from the definition of the concretization and the ordering vP on pattern list types. Property 2. The abstraction ..."
Abstract
- Add to MetaCart
ion and concretization operator from pattern list type to uniform ML list type The abstraction AbsML that maps every pattern list type scheme to a set of standard ML type scheme results from the definition of the concretization and the ordering vP on pattern list types. Property 2. The abstraction and concretization functions (AbsML ; ConcML ) define a lower approximation. ae ` E ) øML list ae ` null(E1) ) bool ae ` E1 ) øML ae ` E2 ) øML list ae ` E1 :: E2 ) øML list ae ` E ) øML list ae ` head(E) ) øML ae ` E1 ) øML list ae ` tail(E1) ) øML list Figure 8: Standard ML list operator behavior For example the abstraction of the pattern list type (ff ! ff)(ff ! num)(!) list of the list x:x :: x:0 :: [] is: (ff ! num) list. With respect to the abstraction and concretization functions (AbsML ; ConcML ), we derive the set of rules describing the behavior of list operators on ML-types--- listed on figure 8---from the set of rules describing the behavior of list operators on patter...

