A Design Methodology for Functional Programs

  • David Wakeling
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2196)


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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. S. Bird. Transformational programming and the paragraph problem. Science of Computer Programming, 6(2):159-89, March 1986.Google Scholar
  2. 2.
    G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley, July 1998. ISBN 0201571684.Google Scholar
  3. 3.
    P. Borba and S. Meira. From VDM specifications to functional prototypes. Journal of Systems and Software, 21(3):267-78, June 1993.CrossRefGoogle Scholar
  4. 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.MATHMathSciNetGoogle Scholar
  5. 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. 6.
    A. Diller. Z: An Introduction to Formal Methods (Second Edition). John Wiley, 1994. ISBN 0471939730.Google Scholar
  7. 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. 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.CrossRefGoogle Scholar
  9. 9.
    M. Fowler and K. Scott. UML Distilled (Second Edition). AddisonWesley, October 1999. ISBN 020165783X.Google Scholar
  10. 10.
    E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley, December 1994. ISBN 0201633612.Google Scholar
  11. 11.
    B. Henderson-Sellers and B. Unhelkar. OPEN Modeling with UML. Addison Wesley, June 2000. ISBN 0201675129.Google Scholar
  12. 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. 13.
    P. Krutchen. The Rational Unified Process: An Introduction (Second Edition). Addison Wesley, April 2000. ISBN 0201707101.Google Scholar
  14. 14.
    Karl J. Lieberherr and Ian Holland. Assuring good style for object-oriented programs. IEEE Software, pages 38–48, September 1989.Google Scholar
  15. 15.
    Object Management Group. OMG Unified Modeling Language Specification (Version 1.3), October 2000. See http://www.omg.org.
  16. 16.
    G. O‘Neill.VDM-automatic translation of VDM specifications into Standard ML programs (short note). Computer Journal, 35(6):623–624, 1992.CrossRefMathSciNetGoogle Scholar
  17. 17.
    S. Peyton Jones and J. Hughes. The Haskell 98 Language Report, February 1999.Google Scholar
  18. 18.
    Rational. Rational Rose, April 2001. See http://www.rational.com.
  19. 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.CrossRefGoogle Scholar
  20. 20.
    L. B. Sherrell and D. L. Carver. FunZ: An intermediate specification language. Computer Journal, 38(3):193–206, 1995.Google Scholar
  21. 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. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • David Wakeling
    • 1
  1. 1.School of Engineering and Computer ScienceUniversity of ExeterUK

Personalised recommendations