|
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
|
G. L. Burn , S. L. Peyton Jones , J. D. Robson, The spineless G-machine, Proceedings of the 1988 ACM conference on LISP and functional programming, p.244-258, July 25-27, 1988, Snowbird, Utah, United States
[doi> 10.1145/62678.62717]
|
 |
25
|
R. M. Burstall , D. B. MacQueen , D. T. Sannella, HOPE: An experimental applicative language, Proceedings of the 1980 ACM conference on LISP and functional programming, p.136-143, August 25-27, 1980, Stanford University, California, United States
[doi> 10.1145/800087.802799]
|
 |
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
|
B. Goldberg , P. Hudak, Implementing functional programs on a hypercube multiprocessor, Proceedings of the third conference on Hypercube concurrent computers and applications: Architecture, software, computer systems, and general issues, p.489-504, January 19-20, 1988, Pasadena, California, United States
[doi> 10.1145/62297.62356]
|
| |
52
|
GORDON, M. J., MILNER, R., AND WADSWORTH, C. P. 1979. Edinburgh LCF. Springer-Verlag LNCS 78, Berlin.
|
 |
53
|
M. Gordon , R. Milner , L. Morris , M. Newey , C. Wadsworth, A Metalanguage for interactive proof in LCF, Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, p.119-130, January 23-25, 1978, Tucson, Arizona
[doi> 10.1145/512760.512773]
|
 |
54
|
John Guttag , James Horning , John Williams, FP with data abstraction and strong typing, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.11-24, October 18-22, 1981, Portsmouth, New Hampshire, United States
[doi> 10.1145/800223.806758]
|
| |
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
|
Paul Hudak, Arrays, non-determinism, side-effects, and parallelism: A functional perspective, Proc. of a workshop on Graph reduction, p.312-327, September 1987, Santa Fe, New Mexico, United States
|
| |
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
|
Simon L. Peyton Jones , Chris Clack , John Salkild , Mark Hardie, GRIP—A high-performance architecture for parallel graph reduction, Proc. of a conference on Functional programming languages and computer architecture, p.98-112, October 1987, Portland, Oregon, United States
|
 |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paul Hudak , John Hughes , Simon Peyton Jones , Philip Wadler, A history of Haskell: being lazy with class, Proceedings of the third ACM SIGPLAN conference on History of programming languages, p.12-1-12-55, June 09-10, 2007, San Diego, California
|
|
|
|
|
|
Emilena Specht , Ricardo Miotto Redin , Luigi Carro , Luis da Cunha Lamb , Erika Fernandes Cota , Flávio Rech Wagner, Analysis of the use of declarative languages for enhanced embedded system software development, Proceedings of the 20th annual conference on Integrated circuits and systems design, September 03-06, 2007, Copacabana, Rio de Janeiro
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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...
|