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.
Preview
Unable to display preview. Download preview PDF.
References
Abelson H and Sussman GJ, "Structure and interpretation of computer programs", MIT Press, 1985.
Abramsky S, "SECD-M — a virtual machine for applicative multiprogramming", Computer Systems Lab, Queen Mary College, Nov 1982.
Augustsson L, "A compiler for Lazy ML", Proc ACM Symposium on Lisp and Functional Programming, Austin, Aug 1984.
Augustsson L, "A compiler for lazy ML", Proc ACM Lisp Conference, Austin, Aug 1984.
Augustsson L, "Compiling pattern matching", Functional Programming and Computer Architecture, ed Jounnaud, LNCS 201, Springer Verlag, Aug 1985.
Backus J, "Can programming be liberated from the von Neumann style?", CACM 21(8), pp613–641, Aug 1978.
Brooks FP, "The mythical man month", Addison Wesley, 1982.
Broy M, "Applicative real-time programming", Proc 9th IFIP, Information Processing 1983, North Holland, pp259–264, 1983.
Burge WH, "Recursive programming techniques", Addison Wesley, 1975.
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.
Burstall, RM, "Design considerations for a functional programming language", Proc Infotech State of the Art Conference, Copenhagen, 1977.
Burstall RM and Darlington J, "A transformational system for developing recursive programs", JACM 24(1), pp44–67, Jan 1977.
Burstall RM, MacQueen DB, Sannella DT, "Hope — an experimental applicative language", Edinburgh report CSR-62-80, 1981.
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.
Burstal RM, "Programming with modules as typed functional programming", Int'l Conf on 5th Generation Computing Systems, Tokyo, Nov 1984.
Cardelli L, "Amber", Bell Labs, Murray Hill, April 1985.
Cardelli L, "Basic polymorphic typechecking", Polymorphism 2(1), Jan 1985.
Cardelli L and Wegner P, "On understanding types, data abstraction and polymorphism", Tech Rep CS-85-14, Dept Comp Sci, Brown Univ, Aug 1985.
Clack CD and Peyton Jones SL, "Generating parallelism from strictness analysis", Internal Note 1679, Dept Comp Sci, University College London, Feb 1985.
Clocksin and Mellish CS, "Programming in Prolog", Springer Verlag, 1981.
Damas L and Milner R, "Principal type schemes for functional programs", Proc ACM Symposium on Principal of Programming Languages, pp207–212, 1982.
Darlington J, "The design of efficient data representations", Imperial College, 1980.
Darlington J, "The structured description of algorithm derivation", in Algorithmic Languages, ed de Bakker and von Vliet, North Holland, 1981.
Darlington J, "Unifying logic and functional languages", Imperial College, 1983.
Darlington J, "Functional programming", in Distributed Computing, ed Chambers et al, Academic Press, 1984.
Darlington J, Field AJ, Pull H, "The unification of functional and logic programming", Dept of Computer Science, Imperial College, Feb 1985.
Dijkstra EW, "The GOTO statement considered harmful", CACM 11(3), pp147–148, March 1968.
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.
Fairbairn J, "Ponder and its type system", TR 31, Computer Lab, Cambridge, Nov 1982.
Fairbairn J, "A new type checker for a functional language", Science of Computer Programming (to appear), 1985.
Fairbairn J, "Design and implementation of a simple typed language based on the lambda calculus", Tech Rep 75, Computer Lab, Cambridge, May 1985.
Glaser H, Hankin C and Till D, "Principles of functional programming", Prentice Hall, 1984.
Goldfarb W, "The undecidability of the second order unification problem", Theoretical Computer Science 13, pp225–230, 1981.
Gordon MJC, Milner AJ, Wadsworth CP, "Edinburgh LCF", Springer Verlag LNCS 78, 1979.
Hammond K, "The KRC manual", CSA/16/1984, DSAG-3, University of East Anglia, May 1984.
Harland DM, "User defined types in a polymorphic language", Computer Journal 27(1), pp47–56, Jan 1984.
Henderson P, "Functional programming", Prentice Hall, 1980.
Henderson P, "Purely functional operating systems", in Functional Programming and its Applications, ed Darlington, Henderson and Turner, CUP, pp177–192, 1982.
Hindley R, "The principal type scheme of an object in combinatory logic", Trans American Mathematical Society 146, pp29–60, 1969.
Hudak P and Kranz, "A combinator based compiler for a functional language", Proc 11th Symposium on Principles of Programming Languages, pp122–132, Jan 1984.
Hudak P and Bloss A, "The aggregate update problem in functional programming systems", Proc 12th ACM Symposium on Principles of Programming Languages, 1985.
Huet GP, "The undecidability of unification in third order logic", Information and Control 22, pp257–267, 1973.
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.
Hughes RJM, "Graph reduction with supercombinators", PRG-28, Programming Research Group, Oxford, June 1982.
Hughes RJM, "Why functional programming matters", PMG-40, Chalmers University of Technology, Goteborg, Sweden, 1984.
Hughes RJM, "Strictness detection in non-flat domains", Programming Research Group, Oxford, Aug 1985.
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.
Johnsson T, "Lambda lifting — transforming programs to recursive equations", Functional Programming and Computer Architecture, ed Jounnaud, LNCS 201, Springer Verlag, Aug 1985.
Jones S, "Abstract machine support for purely functional operating systems", PRG-34, Programming research group, Oxford, Aug 1983.
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.
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.
Kowalski R, "Logic for problem solving", North Holland, 1979.
Landin PJ, "The next 700 programming languages", CACM 9(3), pp157–166, Mar 1966.
Lindstrom G, "Functional programming and the logical variable", ACM Conference on the Principles of Programming Languages, pp266–280, Jan 1985.
MacQueen D, "Modules for Standard ML", Polymorphism 2(2), Oct 1985.
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.
Meira SRL, "On the efficiency of applicative algorithms", PhD thesis, Computer Lab, University of Kent, March 1985.
Milner R, "A theory of type polymorphism in programming", Journal of Computer and System Sciences 17(3), pp348–375, Dec 1978.
Milner R, "The Standard ML core language", Polymorphism 2(2), Oct 1985.
Moller B (ed), "A survey of the project CIP", TUM-18406, Institut fur Informatik, Technische Universtitat Munchen, July 1984.
Mycroft A, "Abstract interpretation and optimising transformations for applicative programs", Edinburgh CST-15-81, 1981.
Mycroft A and O'Keefe R, "A polymorphic type system for Prolog", Artificial Intelligence 23, Elsevier, pp295–307, 1984.
Park D, "The fairness problem and nondeterminism in computing networks", Proc 4th Advanced Course on Theoretical Computer Science, Mathematisch Centrum, 1982.
Partsch H and Steinbruggen R, "Program transformation systems", ACM Computing Surveys 15(3), pp199–236, Sept 1983.
Peyton Jones SL, "Arbitrary precision arithmetic using continued fractions", Internal Note 1533, University College London, Dec 1983.
Reddy US, "On the relationship between logic and functional languages", in Functional and logic programming, ed Degroot and Lindstrom, Prentice Hall, 1985.
Robinson JA, "The unification computation", in Machine Intelligence 6, Edinburgh University Press, pp63–72, 1971.
Robinson JA, "Syracuse University Parallel Expression Reduction — first annual report", Syracuse University, Dec 1984.
Stoye W, "The implementation of functional languages using custom hardware", PhD thesis, Computer Lab, University of Cambridge, May 1985.
Tighe S, "A study of the parallelism inherent in combinator reduction", Parallel processing program, MCC, Austin, Texas, Aug 1985.
Turner DA, "The Sasl manual", St Andrews, Dec 1976.
Turner DA, "A new implementation technique for applicative languages", Software Practice and Experience 9, pp31–49, 1979.
Turner DA, "Recursion equations as a programming language", in Functional Programming and its Applications, ed Darlington, Henderson and Turner, CUP, pp1–28, 1982.
Turner DA, "Functional programming and proofs of program correctness", in Tools and Notions for Program Construction, Neel (ed), CUP, 1983.
Turner DA, "The Miranda manual", University of Kent, Canterbury, 1985.
Turner DA, "Miranda — a non-strict functional language with polymorphic types", Functional Programming and Computer Architecture, ed Jounnaud, LNCS 201, Springer Verlag, Aug 1985.
University of Manchester, "SISAL language reference manual", M-146, Computer Science Dept, University of Manchester, Jan 1985.
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.
Wadler P, "Strictness analysis on non-flat domains", Programming Research Group, Oxford, Nov 1985.
Wadler P, "Compiling pattern matching and list comprehensions", in Implementation of Functional Programming Languages, Peyton Jones, Prentice Hall, 1986.
Author information
Authors and Affiliations
Editor information
Rights 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