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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
R. S. Bird. Transformational programming and the paragraph problem. Science of Computer Programming, 6(2):159-89, March 1986.
G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley, July 1998. ISBN 0201571684.
P. Borba and S. Meira. From VDM specifications to functional prototypes. Journal of Systems and Software, 21(3):267-78, June 1993.
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.
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.
A. Diller. Z: An Introduction to Formal Methods (Second Edition). John Wiley, 1994. ISBN 0471939730.
D. F. D’souza and A. C. Wills. Objects, Components and Frameworks with UML: The Catalysis Approach. Addison Wesley, October 1998. ISBN 0201310120.
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.
M. Fowler and K. Scott. UML Distilled (Second Edition). AddisonWesley, October 1999. ISBN 020165783X.
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley, December 1994. ISBN 0201633612.
B. Henderson-Sellers and B. Unhelkar. OPEN Modeling with UML. Addison Wesley, June 2000. ISBN 0201675129.
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.
P. Krutchen. The Rational Unified Process: An Introduction (Second Edition). Addison Wesley, April 2000. ISBN 0201707101.
Karl J. Lieberherr and Ian Holland. Assuring good style for object-oriented programs. IEEE Software, pages 38–48, September 1989.
Object Management Group. OMG Unified Modeling Language Specification (Version 1.3), October 2000. See http://www.omg.org.
G. O‘Neill.VDM-automatic translation of VDM specifications into Standard ML programs (short note). Computer Journal, 35(6):623–624, 1992.
S. Peyton Jones and J. Hughes. The Haskell 98 Language Report, February 1999.
Rational. Rational Rose, April 2001. See http://www.rational.com.
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.
L. B. Sherrell and D. L. Carver. FunZ: An intermediate specification language. Computer Journal, 38(3):193–206, 1995.
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.
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.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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