Programming in the Large: The Algebraic-Functional Language Opal 2alpha

We present design aspects of the algebraic-functional language Opal 2α, which features flexible modularization to support programming in the large. Opal 2α provides parameterized structures and theories as part of packages. Parameterized theories serve to specify properties of functions and are shown — along with partial instantiations — to play a similar role to type classes in Haskell. Structures can be viewed as (mere) interfaces or as concrete implementations. A realization relation between structures tells us which implementation realizes which interface. A package is a kind of folder for structures and theories. Packages establish flexible name spaces via an import relation. Name spaces, overloading and instance derivation are based on a well-established annotation concept.

[1]  Douglas R. Smith,et al.  Transformational approach to transportation scheduling , 1993, Proceedings of 8th Knowledge-Based Software Engineering Conference.

[2]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[3]  Donald Sannella,et al.  Extended ML: An Institution-Independent Framework for Formal Program Development , 1985, ADT.

[4]  Douglas R. Smith,et al.  A High-Level Derivation of Global Search Algorithms (with Constraint Propagation) , 1997, Sci. Comput. Program..

[5]  Fritz Henglein,et al.  Type inference with polymorphic recursion , 1993, TOPL.

[6]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[7]  Manfred Broy,et al.  Ultra-loose algebraic specifications , 1988, Bull. EATCS.

[8]  Wolfgang Grieskamp,et al.  Towards Integrating Algebraic Specification and Functional Programming: the Opal System (Extended Abstract) , 1996, AMAST.

[9]  Martin Wirsing,et al.  Structured Algebraic Specifications: A Kernel Language , 1986, Theor. Comput. Sci..

[10]  Wolfgang Grieskamp,et al.  OPAL: Design and Implementation of an Algebraic Programming Language , 1994, Programming Languages and System Architectures.

[11]  Simon Thompson,et al.  Haskell: The Craft of Functional Programming , 1996 .

[12]  David A. Schmidt,et al.  Denotationaisemantics: a methodology for language development , 1986 .

[13]  Geoffrey Smith,et al.  On the Complexity of ML Typability with Overloading , 1991, FPCA.

[14]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[15]  Daniel Leivant,et al.  Polymorphic type inference , 1983, POPL '83.

[16]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 2: Module Specifications and Constraints , 1990 .