Skip to main content

A Design Methodology for Functional Programs

  • Conference paper
  • First Online:

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

Abstract

An increasingly significant weakness of declarative programming is that it lacks a design methodology. In this paper, we attempt to provide one by showing how methodologies commonly used to develop object-oriented programs might also be used to develop functional ones. This involves mapping from a restricted subset of the diagrammatic notation used with these methodologies, the Unified Modeling Language (UML), to the standard lazy functional programming language, Haskell. As an example, we develop a small electronic mail system.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. R. S. Bird. Transformational programming and the paragraph problem. Science of Computer Programming, 6(2):159-89, March 1986.

    Google Scholar 

  2. G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley, July 1998. ISBN 0201571684.

    Google Scholar 

  3. P. Borba and S. Meira. From VDM specifications to functional prototypes. Journal of Systems and Software, 21(3):267-78, June 1993.

    Article  Google Scholar 

  4. R. M. Burstall and J. Darlington. A transformation system for developing recursive programs. Journal of the Association of Computing Machinery, 24(1):44–67, 1977.

    MATH  MathSciNet  Google Scholar 

  5. K. Claessen and J. Hughes. QuickCheck: A lightweight tool for random testing of Haskell programs. In Proceedings of the International Conference on Functional Programming, pages 268–279. ACM Press, September 2000. ISBN 1581132026.

    Google Scholar 

  6. A. Diller. Z: An Introduction to Formal Methods (Second Edition). John Wiley, 1994. ISBN 0471939730.

    Google Scholar 

  7. D. F. D’souza and A. C. Wills. Objects, Components and Frameworks with UML: The Catalysis Approach. Addison Wesley, October 1998. ISBN 0201310120.

    Google Scholar 

  8. A. Evans and S. Kent. Core meta-modelling semantics of UML: The pUML approach. In Proceedings of the Second International Conference on The Unified Modeling Language, pages 140–155. Springer Verlag, October 1999. LNCS 1723.

    Chapter  Google Scholar 

  9. M. Fowler and K. Scott. UML Distilled (Second Edition). AddisonWesley, October 1999. ISBN 020165783X.

    Google Scholar 

  10. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley, December 1994. ISBN 0201633612.

    Google Scholar 

  11. B. Henderson-Sellers and B. Unhelkar. OPEN Modeling with UML. Addison Wesley, June 2000. ISBN 0201675129.

    Google Scholar 

  12. M. Johnson and P. Sanders. From Z specifications to functional implementations. In J. E. Nicholls, editor, Proceedings of the 4th Annual Z User Meeting, pages 86–112. Springer Verlag, 1990.

    Google Scholar 

  13. P. Krutchen. The Rational Unified Process: An Introduction (Second Edition). Addison Wesley, April 2000. ISBN 0201707101.

    Google Scholar 

  14. Karl J. Lieberherr and Ian Holland. Assuring good style for object-oriented programs. IEEE Software, pages 38–48, September 1989.

    Google Scholar 

  15. Object Management Group. OMG Unified Modeling Language Specification (Version 1.3), October 2000. See http://www.omg.org.

  16. G. O‘Neill.VDM-automatic translation of VDM specifications into Standard ML programs (short note). Computer Journal, 35(6):623–624, 1992.

    Article  MathSciNet  Google Scholar 

  17. S. Peyton Jones and J. Hughes. The Haskell 98 Language Report, February 1999.

    Google Scholar 

  18. Rational. Rational Rose, April 2001. See http://www.rational.com.

  19. D. A. Schmidt. A return to elegance: The reapplication of declarative notation to software design. In Proceedings of the Conference on the Practical Application of Declarative Languages, pages 360–364. Springer Verlag, January 1999. LNCS 1551, ISBN 3540655271.

    Chapter  Google Scholar 

  20. L. B. Sherrell and D. L. Carver. FunZ: An intermediate specification language. Computer Journal, 38(3):193–206, 1995.

    Google Scholar 

  21. M. Shields and S. L.Peyton Jones. Object-oriented sytle overloading for Haskell, July 2001. Submitted to the Workshop on Multi-Language Infrastructure and Interoperability.

    Google Scholar 

  22. D. A. Turner. Functional programs as executable specifications. In C. A. R. Hoare and J. Shepherdson, editors, Mathematical Logic and Programming Languages, pages 29–54. Prentice-Hall, 1985. ISBN 0135614651.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Wakeling, D. (2001). A Design Methodology for Functional Programs. In: Taha, W. (eds) Semantics, Applications, and Implementation of Program Generation. SAIG 2001. Lecture Notes in Computer Science, vol 2196. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44806-3_9

Download citation

  • DOI: https://doi.org/10.1007/3-540-44806-3_9

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-42558-8

  • Online ISBN: 978-3-540-44806-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics