Abstract
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.
Preview
Unable to display preview. Download preview PDF.
References
Manfred Broy and Martin Wirsing. Ultra-loose algebraic specification. Bulletin of the EATCS, 53: 117–128, June 1988.
K. Didrich, A. Fett, C. Gerke, W. Grieskamp, and P. Pepper. OPAL: Design and Implementation of an Algebraic Programming Language. In J. Gutknecht, editor, Programming Languages and System Architectures, LNCS 782, pages 228–244. Springer, March 1994.
K. Didrich, C. Gerke, W. Grieskamp, C. Maeder, and P. Pepper. Towards Integrating Algebraic Programming and Functional Programming: the Opal System. In M. Wirsing and M. Nivat, editors, Algebraic Methodology and Software Technology, LNCS 1101, pages 559–562. Springer, July 1996.
Klaus Didrich. Compiler support for correctness proofs. In Automated Theorem Proving in Software Engineering (CADE-14 workshop), 1997.
Hartmut Ehrig and Bernd Mahr. Fundamentals of Algebraic Specification 2: Module Specifications and Constraints, volume 21 of EATCS Monographs on Theoretical Computer Science. Springer, Berlin, 1990.
Joseph A. Goguen, Timothy Winkler, José Meseguer, Kokichi Futatsugi, and Jean-Pierre Jouannaud. Introducing OBJ. In Joseph Goguen, editor, Applications of Algebraic Specification using OBJ. Cambridge, October 1993.
Fritz Henglein. Type Inference with Polymorphic Recursion. ACM Transactions on Programming Languages and Systems, December 1991.
L.C. Paulson. ML for the Working Programmer. Cambridge University Press, 2nd edition, 1996.
Peter Pepper. Transforming Algebraic Specifications — Lessons learnt from an Example. In Bernhard Möller, editor, Constructing Programs From Specifications, pages 399–425. North-Holland, 1991.
Peter Pepper and Douglas R. Smith. A High-Level Derivation of Global Search Algorithms (with Constraint Propagation). Science of Computer Programming, 28(2–3): 247–271, 1997.
Donald T. Sannella and Andrzej Tarlecki. Extended ML: An Institution-Independent Framework for Formal Program Development. In Proc. Workshop on Category Theory and Computer Programming, LNCS 240, pages 364–389. Springer, September 1986.
David A. Schmidt. Denotational Semantics. A Methodology for Language Development. W. C. Brown Publishers, 1988.
Michael I. Schwartzbach. Polymorphic Type Inference. Lecture Series LS-95-3, BRICS, DAIMI, June 1995.
Douglas R. Smith and Eduardo A. Parra. Transformational Approach to Transportation Scheduling. In Proc. 8th Knowledge-Based Software Engineering Conf., Chicago, IL, pages 60–68, 1993.
Simon Thompson. Haskell: The Craft of Functional Programming. Addison Wesley, 1996.
Dennis M. Volpano and Geoffrey S. Smith. On the Complexity of ML Typability with Overloading. Technical Report TR91-1210, Cornell University, May 1991.
Philip Wadler and Stephen Blott. How to make ad-hoc polymorphism less ad hoc. In Principles of Programming Languages, pages 60–76. ACM Press, January 1989.
Martin Wirsing. Structured algebraic specifications: a kernel language. Theoretical Computer Science, 42: 123–249, 1986.
Martin Wirsing. Algebraic Specification. In J. van Leeuven, editor, Handbook of Theoretical Computer Science, pages 675–788. North-Holland, 1990.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Didrich, K., Grieskamp, W., Maeder, C., Pepper, P. (1998). Programming in the large: The algebraic-functional language Opal 2α. In: Clack, C., Hammond, K., Davie, T. (eds) Implementation of Functional Languages. IFL 1997. Lecture Notes in Computer Science, vol 1467. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0055439
Download citation
DOI: https://doi.org/10.1007/BFb0055439
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64849-9
Online ISBN: 978-3-540-68528-9
eBook Packages: Springer Book Archive