Skip to main content

Programming in the large: The algebraic-functional language Opal 2α

  • Conference paper
  • First Online:
Implementation of Functional Languages (IFL 1997)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1467))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Manfred Broy and Martin Wirsing. Ultra-loose algebraic specification. Bulletin of the EATCS, 53: 117–128, June 1988.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. Klaus Didrich. Compiler support for correctness proofs. In Automated Theorem Proving in Software Engineering (CADE-14 workshop), 1997.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. Fritz Henglein. Type Inference with Polymorphic Recursion. ACM Transactions on Programming Languages and Systems, December 1991.

    Google Scholar 

  8. L.C. Paulson. ML for the Working Programmer. Cambridge University Press, 2nd edition, 1996.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Article  Google Scholar 

  11. 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.

    Google Scholar 

  12. David A. Schmidt. Denotational Semantics. A Methodology for Language Development. W. C. Brown Publishers, 1988.

    Google Scholar 

  13. Michael I. Schwartzbach. Polymorphic Type Inference. Lecture Series LS-95-3, BRICS, DAIMI, June 1995.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. Simon Thompson. Haskell: The Craft of Functional Programming. Addison Wesley, 1996.

    Google Scholar 

  16. Dennis M. Volpano and Geoffrey S. Smith. On the Complexity of ML Typability with Overloading. Technical Report TR91-1210, Cornell University, May 1991.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. Martin Wirsing. Structured algebraic specifications: a kernel language. Theoretical Computer Science, 42: 123–249, 1986.

    Article  MATH  MathSciNet  Google Scholar 

  19. Martin Wirsing. Algebraic Specification. In J. van Leeuven, editor, Handbook of Theoretical Computer Science, pages 675–788. North-Holland, 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Chris Clack Kevin Hammond Tony Davie

Rights and permissions

Reprints 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

Publish with us

Policies and ethics