Results 1 - 10
of
13
Types for Modules
, 1998
"... The programming language Standard ML is an amalgam of two, largely orthogonal, languages. The Core language expresses details of algorithms and data structures. The Modules language expresses the modular architecture of a software system. Both languages are statically typed, with their static and dy ..."
Abstract
-
Cited by 54 (5 self)
- Add to MetaCart
The programming language Standard ML is an amalgam of two, largely orthogonal, languages. The Core language expresses details of algorithms and data structures. The Modules language expresses the modular architecture of a software system. Both languages are statically typed, with their static and dynamic semantics specified by a formal definition.
Formal program development in Extended ML for the working programmer
, 1991
"... Extended ML is a framework for the formal development of programs in the Standard ML programming language from high-level specifications of their required input/output behaviour. It strongly supports the development of modular programs consisting of an interconnected collection of generic and reusab ..."
Abstract
-
Cited by 34 (10 self)
- Add to MetaCart
Extended ML is a framework for the formal development of programs in the Standard ML programming language from high-level specifications of their required input/output behaviour. It strongly supports the development of modular programs consisting of an interconnected collection of generic and reusable units. The Extended ML framework includes a methodology for formal program development which establishes a number of ways of proceeding from a given specification of a programming task towards a program. Each such step gives rise to one or more proof obligations which must be proved in order to establish the correctness of that step. This paper is intended as a user-oriented summary of the Extended ML language and methodology. Theoretical technicalities are avoided whenever possible, with emphasis placed on the practical aspects of formal program development. An extended example of a complete program development in Extended ML is included.
A Type System for Prototyping Languages
- In 21st ACM Symp. Principles of Programming Languages
, 1994
"... Rapide is a programming language framework designed for the development of large, concurrent, real-time systems by prototyping. The framework consists of a type language and default executable, specification and architecture languages, along with associated programming tools. We describe the main fe ..."
Abstract
-
Cited by 30 (5 self)
- Add to MetaCart
Rapide is a programming language framework designed for the development of large, concurrent, real-time systems by prototyping. The framework consists of a type language and default executable, specification and architecture languages, along with associated programming tools. We describe the main features of the type language, its intended use in a prototyping environment, and rationale for selected design decisions. 1 Introduction Rapide is a programming language framework with an associated toolset. The framework consists of a set of languages, while the toolset provides related program development and diagnostic tools. The framework includes a type language, a default executable language, a default specification language, and an architecture language. Although these languages together provide a complete programming language, Rapide is intended to accommodate additional implementation and specification languages, besides the default ones provided by the framework. The constant of the...
On the Unification of Substitutions in Type Inference
- Implementation of Functional Languages (IFL ’98
, 1998
"... . Traditional type inference and type checking algorithms work well with correctly typed programs, but their results when given programs containing type errors can be unpredictable. This leads to a problem with implementations of type checkers: they are often inaccurate when announcing the apparent ..."
Abstract
-
Cited by 25 (3 self)
- Add to MetaCart
. Traditional type inference and type checking algorithms work well with correctly typed programs, but their results when given programs containing type errors can be unpredictable. This leads to a problem with implementations of type checkers: they are often inaccurate when announcing the apparent locations of mistakes in programs, tending to notice problems towards the end of the program even if the mistake occurs much earlier. This is a particular problem with programming languages with Hindley-Milner type systems such as used by Standard ML. A common technique for type inference is unification. Unifying types creates substitutions which are applied to types and type environments. The substitutions which have been applied to the type environment influence whether type errors are encountered in particular subexpressions of a program. This paper defines the operation of unifying substitutions and shows how type inference algorithms can be modified to use this operation to delay the ap...
Extended ML: Past, present and future
- PROC. 7TH WORKSHOP ON SPECIFICATION OF ABSTRACT DATA TYPES, WUSTERHAUSEN. SPRINGER LNCS 534
, 1991
"... An overview of past, present and future work on the Extended ML formal program development framework is given, with emphasis on two topics of current active research: the semantics of the Extended ML specification language, and tools to support formal program development. ..."
Abstract
-
Cited by 22 (8 self)
- Add to MetaCart
An overview of past, present and future work on the Extended ML formal program development framework is given, with emphasis on two topics of current active research: the semantics of the Extended ML specification language, and tools to support formal program development.
A Cost Analysis for a Higher-order Parallel Programming Model
, 1996
"... Programming parallel computers remains a difficult task. An ideal programming environment should enable the user to concentrate on the problem solving activity at a convenient level of abstraction, while managing the intricate low-level details without sacrificing performance. This thesis investiga ..."
Abstract
-
Cited by 17 (1 self)
- Add to MetaCart
Programming parallel computers remains a difficult task. An ideal programming environment should enable the user to concentrate on the problem solving activity at a convenient level of abstraction, while managing the intricate low-level details without sacrificing performance. This thesis investigates a model of parallel programming based on the BirdMeertens Formalism (BMF). This is a set of higher-order functions, many of which are implicitly parallel. Programs are expressed in terms of functions borrowed from BMF. A parallel implementation is defined for each of these functions for a particular topology, and the associated execution costs are derived. The topologies which have been considered include the hypercube, 2-D torus, tree and the linear array. An analyser estimates the costs associated with different implementations of a given program and selects a cost-effective one for a given topology. All the analysis is performed at compile-time which has the advantage of reducing run-...
Polymorphism and Subtyping in Interfaces
- In ACM Workshop on Interface Definition Languages
, 1994
"... Rapide is a programming language framework designed for the development of large, concurrent, real-time systems by prototyping. The framework consists of a type language and default executable, specification and architecture languages, along with associated programming tools. Interfaces are the cent ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
Rapide is a programming language framework designed for the development of large, concurrent, real-time systems by prototyping. The framework consists of a type language and default executable, specification and architecture languages, along with associated programming tools. Interfaces are the central construct of the type system. This document describes Rapide interfaces, their expressiveness and their use as a typing construct. 1 Introduction Rapide is a programming language framework consisting of a types language, default executable and specification languages, and a set of tools. Although the languages, together, provide a complete programming language, Rapide is intended to accommodate additional implementation and specification languages. The constant of the framework is the type language, which is intended to be general enough to allow the types of relevant implementation languages to be expressed within it. The types language is a general interface definition language, expre...
An Application Framework For Compositional Modularity
, 1995
"... This dissertation presents a framework for the application of compositional modularity, a module model that facilitates extensive reuse of highly decomposed software. Compositional modularity supports not only the traditional notions of program decomposition and encapsulation but also effective mech ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
This dissertation presents a framework for the application of compositional modularity, a module model that facilitates extensive reuse of highly decomposed software. Compositional modularity supports not only the traditional notions of program decomposition and encapsulation but also effective mechanisms for module recomposition. Based on a previously developed model, a suite of operators individually achieve effects of adaptation and combination on a simple notion of modules viewed as self-referential namespaces. This dissertation extends the previous model by introducing the notion of hierarchical nesting as a composition operation. Furthermore, this work shows that compositional modularity is unifying in scope. Important effects and idioms of advanced modularity, including several varieties of inheritance in object-oriented programming, find convenient expression within this model. Compositional modularity can be applied within a wide range of systems that manipulate self-referenti...
An Exploration of Modular Programs
- In Glasgow Workshop on Functional Programming
, 1996
"... Recently, Mark Jones introduced first class structures as a means to express modular structure. In this paper we elaborate on this idea by comparing the module systems of Standard ML and Haskell 1.3, two widely used functional languages, and a Haskell variant equipped with such first class structure ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Recently, Mark Jones introduced first class structures as a means to express modular structure. In this paper we elaborate on this idea by comparing the module systems of Standard ML and Haskell 1.3, two widely used functional languages, and a Haskell variant equipped with such first class structures. Moreover, we look at another obvious and well-known extension to Hindley-Milner type systems, namely higher order type variables, to explore its usefulness in solving problems occuring when one attempts to structure larger programs into maintainable pieces. We argue that there are surprisingly few applications where the module system currently provided by Haskell cannot keep pace with Standard ML's expressiveness. When one adds first class structures to Haskell, the module system reaches the expressiveness of Standard ML and even exceeds it. 1 Preliminaries It is widely agreed that modular programming (in the sense of using small program units, or modules, to construct more sophisticated...
Tips for Computer Scientists
"... Contents 1 Numbers 1 2 Overloaded Arithmetic Operators 1 3 Strings 1 4 Lists 1 5 Expressions 1 6 Declarations 1 7 Function Values 3 8 Constructed Values 3 9 Patterns 4 10 Pattern Matching 5 11 Function-value Bindings (revisited) 6 12 Function Application 7 13 Type Expressions 7 14 Type Abbreviation ..."
Abstract
- Add to MetaCart
Contents 1 Numbers 1 2 Overloaded Arithmetic Operators 1 3 Strings 1 4 Lists 1 5 Expressions 1 6 Declarations 1 7 Function Values 3 8 Constructed Values 3 9 Patterns 4 10 Pattern Matching 5 11 Function-value Bindings (revisited) 6 12 Function Application 7 13 Type Expressions 7 14 Type Abbreviations 7 15 Datatype Declarations 8 16 Exceptions 8 17 References 10 18 Procedures 11 19 Input and Output 11 20 The top-level loop 12 21 Modules 12 22 Structures 12 23 Signatures 13 24 Structure Matching 15 25 Signature Constraints 15 26 Functors 16 27 Sharing 16 28 Programs 19 29 Further Reading The Core Language 1 1 Numbers Standard ML has two types of numbers: integers (int) and reals (real). Example 1.1 These are integer constants: 5, 0, ~37 ut Example 1.2 These are real constants: 0.7, 3.1415, ~3.32E~7 ut

