Skip to main content

Functional programming languages as a software engineering tool

  • Chapter
  • First Online:
Embedded Systems

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

Abstract

We have presented a case for using functional programming languages as a tool to help meet the challenge of writing correct programs.

To this end we reviewed their type systems, means of combination and abstraction, amenability to formal methods, and support for parallel programming.

Language design is only one component of a software engineering methodology, but it has a far-reaching effect (for good or ill) on the rest of the programming environment. We conclude that functional languages merit serious consideration as a key component of advanced program development systems.

Unix is a trade mark of Bell Labs.

Ada is a trade mark oft he US Department of Defence.

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. Abelson H and Sussman GJ, "Structure and interpretation of computer programs", MIT Press, 1985.

    Google Scholar 

  2. Abramsky S, "SECD-M — a virtual machine for applicative multiprogramming", Computer Systems Lab, Queen Mary College, Nov 1982.

    Google Scholar 

  3. Augustsson L, "A compiler for Lazy ML", Proc ACM Symposium on Lisp and Functional Programming, Austin, Aug 1984.

    Google Scholar 

  4. Augustsson L, "A compiler for lazy ML", Proc ACM Lisp Conference, Austin, Aug 1984.

    Google Scholar 

  5. Augustsson L, "Compiling pattern matching", Functional Programming and Computer Architecture, ed Jounnaud, LNCS 201, Springer Verlag, Aug 1985.

    Google Scholar 

  6. Backus J, "Can programming be liberated from the von Neumann style?", CACM 21(8), pp613–641, Aug 1978.

    Google Scholar 

  7. Brooks FP, "The mythical man month", Addison Wesley, 1982.

    Google Scholar 

  8. Broy M, "Applicative real-time programming", Proc 9th IFIP, Information Processing 1983, North Holland, pp259–264, 1983.

    Google Scholar 

  9. Burge WH, "Recursive programming techniques", Addison Wesley, 1975.

    Google Scholar 

  10. Burn G, Hankin CL and Abramsky S, "Strictness analysis of higher order functions", Science of Computer Programming (to appear); also DoC 85/6, Dept Comp Sci, Imperial College, London, Apr 1985.

    Google Scholar 

  11. Burstall, RM, "Design considerations for a functional programming language", Proc Infotech State of the Art Conference, Copenhagen, 1977.

    Google Scholar 

  12. Burstall RM and Darlington J, "A transformational system for developing recursive programs", JACM 24(1), pp44–67, Jan 1977.

    Article  Google Scholar 

  13. Burstall RM, MacQueen DB, Sannella DT, "Hope — an experimental applicative language", Edinburgh report CSR-62-80, 1981.

    Google Scholar 

  14. Burstall RM and Lampson B, "A kernel language for abstract data types and modules", Semantics of Data Types, Kahn et al, LNCS 173, Springer Verlag, 1984.

    Google Scholar 

  15. Burstal RM, "Programming with modules as typed functional programming", Int'l Conf on 5th Generation Computing Systems, Tokyo, Nov 1984.

    Google Scholar 

  16. Cardelli L, "Amber", Bell Labs, Murray Hill, April 1985.

    Google Scholar 

  17. Cardelli L, "Basic polymorphic typechecking", Polymorphism 2(1), Jan 1985.

    Google Scholar 

  18. Cardelli L and Wegner P, "On understanding types, data abstraction and polymorphism", Tech Rep CS-85-14, Dept Comp Sci, Brown Univ, Aug 1985.

    Google Scholar 

  19. Clack CD and Peyton Jones SL, "Generating parallelism from strictness analysis", Internal Note 1679, Dept Comp Sci, University College London, Feb 1985.

    Google Scholar 

  20. Clocksin and Mellish CS, "Programming in Prolog", Springer Verlag, 1981.

    Google Scholar 

  21. Damas L and Milner R, "Principal type schemes for functional programs", Proc ACM Symposium on Principal of Programming Languages, pp207–212, 1982.

    Google Scholar 

  22. Darlington J, "The design of efficient data representations", Imperial College, 1980.

    Google Scholar 

  23. Darlington J, "The structured description of algorithm derivation", in Algorithmic Languages, ed de Bakker and von Vliet, North Holland, 1981.

    Google Scholar 

  24. Darlington J, "Unifying logic and functional languages", Imperial College, 1983.

    Google Scholar 

  25. Darlington J, "Functional programming", in Distributed Computing, ed Chambers et al, Academic Press, 1984.

    Google Scholar 

  26. Darlington J, Field AJ, Pull H, "The unification of functional and logic programming", Dept of Computer Science, Imperial College, Feb 1985.

    Google Scholar 

  27. Dijkstra EW, "The GOTO statement considered harmful", CACM 11(3), pp147–148, March 1968.

    Google Scholar 

  28. Fages F and Huet GP, "Complete sets of unifiers and matches in equational theories", Proc 8th Colloquium on Trees in Algebra and Programming, Springer Verlag LNCS 159, pp205–220, 1983.

    Google Scholar 

  29. Fairbairn J, "Ponder and its type system", TR 31, Computer Lab, Cambridge, Nov 1982.

    Google Scholar 

  30. Fairbairn J, "A new type checker for a functional language", Science of Computer Programming (to appear), 1985.

    Google Scholar 

  31. Fairbairn J, "Design and implementation of a simple typed language based on the lambda calculus", Tech Rep 75, Computer Lab, Cambridge, May 1985.

    Google Scholar 

  32. Glaser H, Hankin C and Till D, "Principles of functional programming", Prentice Hall, 1984.

    Google Scholar 

  33. Goldfarb W, "The undecidability of the second order unification problem", Theoretical Computer Science 13, pp225–230, 1981.

    Article  Google Scholar 

  34. Gordon MJC, Milner AJ, Wadsworth CP, "Edinburgh LCF", Springer Verlag LNCS 78, 1979.

    Google Scholar 

  35. Hammond K, "The KRC manual", CSA/16/1984, DSAG-3, University of East Anglia, May 1984.

    Google Scholar 

  36. Harland DM, "User defined types in a polymorphic language", Computer Journal 27(1), pp47–56, Jan 1984.

    Article  Google Scholar 

  37. Henderson P, "Functional programming", Prentice Hall, 1980.

    Google Scholar 

  38. Henderson P, "Purely functional operating systems", in Functional Programming and its Applications, ed Darlington, Henderson and Turner, CUP, pp177–192, 1982.

    Google Scholar 

  39. Hindley R, "The principal type scheme of an object in combinatory logic", Trans American Mathematical Society 146, pp29–60, 1969.

    Google Scholar 

  40. Hudak P and Kranz, "A combinator based compiler for a functional language", Proc 11th Symposium on Principles of Programming Languages, pp122–132, Jan 1984.

    Google Scholar 

  41. Hudak P and Bloss A, "The aggregate update problem in functional programming systems", Proc 12th ACM Symposium on Principles of Programming Languages, 1985.

    Google Scholar 

  42. Huet GP, "The undecidability of unification in third order logic", Information and Control 22, pp257–267, 1973.

    Article  Google Scholar 

  43. Huet GP, "Unification in the typed lambda calculus", Proc Symposium on the lambda calculus and computer science theory, Springer Verlag LNCS 37, pp192–212, 1975.

    Google Scholar 

  44. Hughes RJM, "Graph reduction with supercombinators", PRG-28, Programming Research Group, Oxford, June 1982.

    Google Scholar 

  45. Hughes RJM, "Why functional programming matters", PMG-40, Chalmers University of Technology, Goteborg, Sweden, 1984.

    Google Scholar 

  46. Hughes RJM, "Strictness detection in non-flat domains", Programming Research Group, Oxford, Aug 1985.

    Google Scholar 

  47. Islam N, Myers TJ, Broome P, "A simple optimiser for FP-like languages", Proc ACM Conference on Functional Programming Languages and Computer Architecture, New Hampshire, pp33–40, Oct 1981.

    Google Scholar 

  48. Johnsson T, "Lambda lifting — transforming programs to recursive equations", Functional Programming and Computer Architecture, ed Jounnaud, LNCS 201, Springer Verlag, Aug 1985.

    Google Scholar 

  49. Jones S, "Abstract machine support for purely functional operating systems", PRG-34, Programming research group, Oxford, Aug 1983.

    Google Scholar 

  50. Jones ND et al, "An experiment in partial evaluation — the generation of a compiler generator", Proc Conf on Rewriting Techniques and Applications, LNCS, Springer Verlag, 1985.

    Google Scholar 

  51. Kieburtz RB, Shultis J, "Transformations of FP program schemes", Proc ACM Conference on Functional Programming Languages and Computer Architecture, New Hampshire, pp41–48, Oct 1981.

    Google Scholar 

  52. Kowalski R, "Logic for problem solving", North Holland, 1979.

    Google Scholar 

  53. Landin PJ, "The next 700 programming languages", CACM 9(3), pp157–166, Mar 1966.

    Google Scholar 

  54. Lindstrom G, "Functional programming and the logical variable", ACM Conference on the Principles of Programming Languages, pp266–280, Jan 1985.

    Google Scholar 

  55. MacQueen D, "Modules for Standard ML", Polymorphism 2(2), Oct 1985.

    Google Scholar 

  56. McCarthy J, "A basis for a mathematical theory of computation", in Computer Programming and Formal Systems, ed Braffort and Hirschberg, North Holland, pp33–70, 1963.

    Google Scholar 

  57. Meira SRL, "On the efficiency of applicative algorithms", PhD thesis, Computer Lab, University of Kent, March 1985.

    Google Scholar 

  58. Milner R, "A theory of type polymorphism in programming", Journal of Computer and System Sciences 17(3), pp348–375, Dec 1978.

    Article  Google Scholar 

  59. Milner R, "The Standard ML core language", Polymorphism 2(2), Oct 1985.

    Google Scholar 

  60. Moller B (ed), "A survey of the project CIP", TUM-18406, Institut fur Informatik, Technische Universtitat Munchen, July 1984.

    Google Scholar 

  61. Mycroft A, "Abstract interpretation and optimising transformations for applicative programs", Edinburgh CST-15-81, 1981.

    Google Scholar 

  62. Mycroft A and O'Keefe R, "A polymorphic type system for Prolog", Artificial Intelligence 23, Elsevier, pp295–307, 1984.

    Google Scholar 

  63. Park D, "The fairness problem and nondeterminism in computing networks", Proc 4th Advanced Course on Theoretical Computer Science, Mathematisch Centrum, 1982.

    Google Scholar 

  64. Partsch H and Steinbruggen R, "Program transformation systems", ACM Computing Surveys 15(3), pp199–236, Sept 1983.

    Article  Google Scholar 

  65. Peyton Jones SL, "Arbitrary precision arithmetic using continued fractions", Internal Note 1533, University College London, Dec 1983.

    Google Scholar 

  66. Reddy US, "On the relationship between logic and functional languages", in Functional and logic programming, ed Degroot and Lindstrom, Prentice Hall, 1985.

    Google Scholar 

  67. Robinson JA, "The unification computation", in Machine Intelligence 6, Edinburgh University Press, pp63–72, 1971.

    Google Scholar 

  68. Robinson JA, "Syracuse University Parallel Expression Reduction — first annual report", Syracuse University, Dec 1984.

    Google Scholar 

  69. Stoye W, "The implementation of functional languages using custom hardware", PhD thesis, Computer Lab, University of Cambridge, May 1985.

    Google Scholar 

  70. Tighe S, "A study of the parallelism inherent in combinator reduction", Parallel processing program, MCC, Austin, Texas, Aug 1985.

    Google Scholar 

  71. Turner DA, "The Sasl manual", St Andrews, Dec 1976.

    Google Scholar 

  72. Turner DA, "A new implementation technique for applicative languages", Software Practice and Experience 9, pp31–49, 1979.

    Google Scholar 

  73. Turner DA, "Recursion equations as a programming language", in Functional Programming and its Applications, ed Darlington, Henderson and Turner, CUP, pp1–28, 1982.

    Google Scholar 

  74. Turner DA, "Functional programming and proofs of program correctness", in Tools and Notions for Program Construction, Neel (ed), CUP, 1983.

    Google Scholar 

  75. Turner DA, "The Miranda manual", University of Kent, Canterbury, 1985.

    Google Scholar 

  76. Turner DA, "Miranda — a non-strict functional language with polymorphic types", Functional Programming and Computer Architecture, ed Jounnaud, LNCS 201, Springer Verlag, Aug 1985.

    Google Scholar 

  77. University of Manchester, "SISAL language reference manual", M-146, Computer Science Dept, University of Manchester, Jan 1985.

    Google Scholar 

  78. Wadler P, "Applicative style programming, program transformation, and list operators", Proc ACM Conference on Functional Programming Languages and Computer Architecture, New Hampshire, pp25–32, Oct 1981.

    Google Scholar 

  79. Wadler P, "Strictness analysis on non-flat domains", Programming Research Group, Oxford, Nov 1985.

    Google Scholar 

  80. Wadler P, "Compiling pattern matching and list comprehensions", in Implementation of Functional Programming Languages, Peyton Jones, Prentice Hall, 1986.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

A. Kündig R. E. Bührer J. Dähler

Rights and permissions

Reprints and permissions

Copyright information

© 1987 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Jones, S.L.P. (1987). Functional programming languages as a software engineering tool. In: Kündig, A., Bührer, R.E., Dähler, J. (eds) Embedded Systems. Lecture Notes in Computer Science, vol 284. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0016351

Download citation

  • DOI: https://doi.org/10.1007/BFb0016351

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-18581-9

  • Online ISBN: 978-3-540-48021-1

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics