ACM Home Page
Please provide us with feedback. Feedback
Conception, evolution, and application of functional programming languages
Full text PdfPdf (5.19 MB)
Source ACM Computing Surveys (CSUR) archive
Volume 21 ,  Issue 3  (September 1989) table of contents
Pages: 359 - 411  
Year of Publication: 1989
ISSN:0360-0300
Author
Paul Hudak  Yale Univ., New Haven, CT
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 121,   Downloads (12 Months): 633,   Citation Count: 39
Additional Information:

abstract   references   cited by   index terms   review   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/72551.72554
What is a DOI?

ABSTRACT

The foundations of functional programming languages are examined from both historical and technical perspectives. Their evolution is traced through several critical periods: early work on lambda calculus and combinatory calculus, Lisp, Iswim, FP, ML, and modern functional languages such as Miranda1 and Haskell. The fundamental premises on which the functional programming methodology stands are critically analyzed with respect to philosophical, theoretical, and pragmatic concerns. Particular attention is paid to the main features that characterize modern functional languages: higher-order functions, lazy evaluation, equations and pattern matching, strong static typing and type inference, and data abstraction. In addition, current research areas—such as parallelism, nondeterminism, input/output, and state-oriented computations—are examined with the goal of predicting the future development and application of functional languages.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
AASA, A., HOLMSTROM, $., AND NILSSON, C. 1987. An efficiency comparison of some representations of purely functional arrays. Tech. Rep. 33. Programming Methodology Group, Chalmers University of Technology.
 
2
 
3
 
4
ANDERSON, $., AND HUDAK, P. 1989. Efficient compilation of Haskell array comprehensions. Tech. Rep. YALEU/DCS/RR693. Yale University, Department of Computer Science.
 
5
 
6
ARVIND AND GOSTELOW, K. P. 1977. A computer capable of exchanging processors for time. In Proceedings IFIP Congress, pp. 849-853.
 
7
ARVIND AND GOSTELOW, K. P. 1982. The U-interpreter. Computer 15, 2, 42-50.
 
8
 
9
ASHCROFT, r. A., AND WADGE, W. W. 1976a. Lucid--A formal system for writing and proving programs. SIAM J. Comput. 5, 3, 336-354.
10
11
 
12
13
 
14
BACKUS, J., WILLIAMS, J. S., AND WIMMERS, E. L. 1986. FL language manual (preliminary version). Tech. Rep. RJ 5339 (54809). Computer Science, IBM Almaden Research Center, Almaden, CA.
 
15
BARENDREGT, H. P. 1984. The Lambda Calculus, Its Syntax and Semantics. Revised ed. North- Holland, Amsterdam.
 
16
BERRY, G. 1978. S~quentialit~ de l'~valuation formelle des ~,-expressions. In Proceedings 3-e Coltoque International SUE la Programmation.
 
17
 
18
BLOSS, A. 1988. Path analysis: Using order-ofevaluation information to optimize lazy functional languages. Ph.D. Dept. Computer Science, dissertation, Yale Univ.
 
19
 
20
BLOSS, A., HUDAK, P., AND YOUNG, J. 1988. Code optimizations for lazy evaluation. Lisp and Symbolic Computation: An International Journal 1, 147-164.
 
21
BOEHM, H.-J. 1985. Partial polymorphic type inference is undecidable. In Proceedings of 26th Sympsoium on Foundations of Computer Science. IEEE pp. 339-345.
 
22
BOUTEL, B. E. 1988. Tui language manual. Tech. Rep. CSD-8-021. Victoria University of Wellington, Department of Computer Science.
 
23
BURGE, W. H. 1975. Recursive Programming Techniques. Addison-We~ley, Reading, Mass.
24
25
26
 
27
28
 
29
CARTWRIGHT, R. 1976. A practical formal semantic definition and verification system for typed Lisp. Tech. Rep. AIM-296. Stanford Artificial Intelligence Laboratory.
 
30
CnEN, M. C. 1986. Transformations of parallel programs in crystal. In Information Processing '86, Elsevier North-Holland, New York, pp. 455-462.
 
31
CHURCH, A. 1932-1933. A set of postulates for the foundation of logic. Ann. Math. 2, 33-34, 346- 366, 839-864.
 
32
 
33
CHURCH, A., AND ROSSER, J. B. 1936. Some properties of conversion. Trans. Am. Math. Soc. 39, 472-482.
 
34
CURRY, H. B., AND FEYS, R. 1958. Combinatory Logic. Vol. 1. North-Holland, The Netherlands.
35
 
36
37
 
38
DEGROOT, D., AND LINDSTROM, G. 1985. Functional and Logic Programming. Prentice-Hall, EngleP wood Cliffs, N.J.
 
39
DELOSME, J.-M., AND IPSEN, I. C. F. 1985. An illustration of a methodology for the construction of efficient systolic architectures in VLSI. In Proceedings 2nd International Symposium on VLSI Technology, Systems, and Applications, ITRI, NSC pp. 268-273.
40
 
41
FAmBAIRN, J. 1985. Design and implementation of a simple typed language based on the lambda calculus. Ph.D. dissertation, Univ. of Cambridge. Available as Computer Laboratory TR No. 75.
 
42
 
43
FIELD, A. J., AND HARRISON, P. G. 1988. Functional Programming. Addison-Wesley, Workingham, England.
44
 
45
FRIEDMAN, D. P., AND WISE, D. $. 1976. Cons should not evaluate its arguments. In Automata, Languages and Programming, Edinburgh University Press, pp. 257-284.
46
47
 
48
GIRARD, J.-Y. 1972. Interpretation Fonctionelle et Elimination des Coupures dans l'Arithm~tique d'Ordre Sup~rieur. Ph.D. dissertation, Univ. of Paris.
49
 
50
51
 
52
GORDON, M. J., MILNER, R., AND WADSWORTH, C. P. 1979. Edinburgh LCF. Springer-Verlag LNCS 78, Berlin.
53
54
 
55
HANCOCK, P. 1987. Polymorphic type-checking. In The Implementation of Functional Programming Languages, S. L. Peyton Jones, Ed. Prentice-Hall International, Englewood Cliffs, N.J., Chapters 8 and 9.
 
56
 
57
HENDERSON, P. 1982. Purely functional operating systems. In Functional Programming and Its Applications: An Advance Course. Cambridge University Press, pp. 177-192.
58
 
59
HINDLEY, R. 1969. The principle type scheme of an object in combinatory logic. Trans. Amer. Math. Soc. 146, 29-60.
 
60
HOLMSTROM, S. 1983. How to handle large data structures in functional languages. In Proceedings of SERC/Chalmers Workshop on Declarative Programming Languages. SERC.
 
61
HUDAK, P. 1984. ALFL Reference Manual and Programmer's Guide. 2nd ed. Res. Rep. YALEU/ DCS/RR-322. Yale University.
 
62
 
63
 
64
 
65
 
66
HUDAK, P., AND ANDERSON, S. 1988. Haskell solutions to the language session problems at the 1988 Salishan high-speed computing conference. Tech. Rep. YALEU/DCS/RR-627. Department of Computer Science, Yale University.
67
 
68
HUDAK, P., AND SUNDARESH, R. 1988. On the expressiveness of purely functional I/O systems. Tech. Rep. YALEU/DCS/RR-665. Department of Computer Science. Yale University.
69
 
70
HUDAK, P., AND WADLER, P. Eds. 1988. Report on the Functional Programming Language Haskell. Tech. Rep. YALEU/DCS/RR656. Department of Computer Science, Yale University.
 
71
HUGHES, J. 1984. Why functional programming matters. Tech. Rep. 16. Programming Methodology Group, Chalmers University of Technology.
 
72
HUGHES, J. 1985a. An efficient implementation of purely functional arrays. Tech. Rep. Programming Methodology Group, Chalmers University of Technology.
 
73
 
74
 
75
JOHNSON, S. D. 1988. Daisy Programming Manual. Tech. Rep. Indiana University Computer Science Department.
 
76
KAES, S. 1988. Parametric polymorphism. In Proceedings of the 2nd Eupropean Symposium on Programming. Springer-Verlag LNCS 300.
 
77
KELLER, R. M. 1982. FEL programmer's guide. AMPS TR 7. University of Utah.
 
78
KELLER, R. M., AND LiNDSTROM, G. 1985. Approaching distributed database implementations through functional programming concepts. In International Conference on Distributed Systems. IEEE.
79
 
80
KELLER, R. M., JAYARAMAN, B., ROSE, D., AND LINDSTROM, G. 1980. FGLprogrammer's guide. AMPS Tech. Memo 1. Department of Computer Science, University of Utah.
 
81
KLEENE, S. C. 1936. n-definability and recursiveness. Duke Math. J. 2, 340-353.
 
82
KLEENE, S. C., AND ROSSER, J. B. 1935. The inconsistency of certain forms of logic. Ann. Math. 2, 36, 630-636.
 
83
KROEZE, H. J. 1986-1987. The TWENTEL system (version 1). Tech. Rep. Department of Computer Science, University of Twente, The Netherlands.
 
84
LANDIN, P. J. 1964. The mechanical evaluation of expressions. Comput. J. 6, 4, 308-320.
85
86
87
 
88
MARKOV, A. A. 1951. Teoriya algorifmov (Theory of algorithms). Trudy Mat. Inst. Steklov 38, 176-189.
89
 
90
MCCARTHY, J. 1963. A basis for a mathematical theory of computation. In Computer Programming and Formal Systems. North-Holland, The Netherlands, pp. 33-70.
91
92
 
93
MCGRAW, J., ALLAN, S., GLAUERT, J., AND DOBES, I. 1983. SISAL: Streams and Iteration in a Single- Assignment Language, Language Reference Manual. Tech. Rep. M-146. Lawrence Livermore National Laboratory.
 
94
 
95
MILNER, R. A. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 3, 348-375.
96
 
97
MULLIN, L. R. 1988. A mathematics of arrays. Ph.D dissertation, Computer and Information Science and CASE Center, Syracuse University.
 
98
NIKHIL, R. S., PINGALI, K., AND ARVIND. 1986. Id nouveau. Computation Structures Group Memo 265. Laboratory for Computer Science, Massachusetts Institute of Technology.
 
99
 
100
101
 
102
POST, E.L. Formal reductions of the general combinatorial decision problem. Am. J. Math. 65, 197-215.
103
 
104
 
105
106
107
 
108
SCHONrINKEL, M. 1924. Uber die bausteine dee mathematischen logik. Mathematische Annalen 92, 305.
 
109
SCOTT, D. S. 1970. Outline of a mathematical theory of computation. Programming Research Group PRG-2, Oxford University.
 
110
SHAPIRO, E. 1989.' Systolic Programming: A Paradigm of Parallel Processing. Department of Applied Mathematics Tech. Rep. CS84-21, The Weizmann Institute of Science.
 
111
SRIDHARAN, N. S. 1985. Semi-applicative programming: An example. Tech. Rep. BBN Laboratories.
112
 
113
 
114
STOYE, W. 1985. A New Scheme for Writing Functional Operating Systems. Tech. Rep. 56. Computer Laboratory, University of Cambridge.
 
115
 
116
TORTE, M. 1988. Operational semantics and polymorphic type inference. Ph.D. dissertation, Dept. Computer Science, Univ. of Edinburgh (CST-52- 88).
 
117
TRAKHTENBROT, B. A. 1988. Comparing the Church and Turing approaches: Two prophetic messages. Tech. Rep. 98/88. Eskenasy Institute of Computer Science, Tel-Aviv University.
118
 
119
 
120
Tu, H-C., AND PERLIS, A. J. 1986. FAC: A functional APL language. IEEE Software 3, 1, 36-45.
 
121
TURING, A. M. 1936. On computable numbers with an application to the entscheidungsproblem. Proc. London Math. Soc. 42, 230-265.
 
122
TURING, A. M. 1937. Computability and k-definability. J. Symbolic Logic 2, 153-163.
 
123
TURNER, D. A. 1976. SASL language manual. Tech. Rep. Univ. St. Andrews.
 
124
TURNER, U. A. 1979. A new implementation techinque for applicative languages. Softw. Pract. Exper. 9, 31-49.
125
 
126
TURNER, D. A., 1982. Recursion equations as a programming language. In Functional Programming and Its Applications: An Advanced Course. Cambridge University Press, New York, pp. 1-28.
 
127
 
128
VAN HEIJENOORT, J. 1967. From Frege to GSdel. Harvard University Press, Cambridge, Mass.
 
129
VEGDAHL, S. R. 1984. A survey of proposed architectures for the execution of functional languages. IEEE Trans. Comput. C-23, 12, 1050-1071.
 
130
VUILLEMiN, J. 1974. Correct and optimal implementations of recursion in a simple programming language. J. Comput. Syst. Sci. 9, 3.
 
131
 
132
 
133
WADLER, P. 1987a. Efficient compilation of patternmatching. In The Implementation of Functional Programming Languages, S. L. Peyton Jones, Ed. Prentice-Hall International, Englewood Cliffs, N.J., Chapter 5.
134
135
 
136
WADLER, P., AND MILLER, Q. 1988. An introduction to Orwell. Tech. Rep. Programming Research Group, Oxford University. (First version, 1985.)
 
137
WADSWORTH, C. P. 1971. Semantics andpragmatics of the lambda calculus. Ph.D. dissertation, Oxford Univ.
 
138
 
139
 
140
WIKSTROM, ,A. 1988. Standard ML. Prentice-Hall, Englewood Cliffs, N.J.
 
141
 
142
YOUNG, J. 1988. The Semantic Analysis of Functional Programs: Theory and Practice. Ph.D. dissertation, Dept. Computer Science, Yale Univ., 130-142.

CITED BY  39


REVIEW

"Edward A. Schneider : Reviewer"

Papers in Computing Surveys are meant to be surveys or tutorials. This paper serves both purposes for modern functional programming languages, although it does a better job as a survey. A good introduction to these languages is Hughes  more...