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.
- 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.Google Scholar
- ABELSON, H., SUSSMAN, G. J., AND SUSSMAN, J. 1985. Structure and Interpretation of Computer Programs. The MIT Press, Cambridge, Mass., and McGraw-Hill New York. Google Scholar
- ACKERMAN, W. B., AND DENNIS, J. B. 1979. VAL-- A value-oriented algorithmic language preliminary reference manual. Laboratory for Computer Science MIT/LCS/TR-218, MIT. Google Scholar
- ANDERSON, $., AND HUDAK, P. 1989. Efficient compilation of Haskell array comprehensions. Tech. Rep. YALEU/DCS/RR693. Yale University, Department of Computer Science.Google Scholar
- APPEL, A. W., AND MACQUEEN, D. B. 1987. A standard ML compiler. In Proceedings of the 1987 Functional Programming Languages and Computer Architecture Conference (Sept. 1987). Springer-Verlag LNCS 274, iFIP pp. 301-324. Google Scholar
- ARVIND AND GOSTELOW, K. P. 1977. A computer capable of exchanging processors for time. In Proceedings IFIP Congress, pp. 849-853.Google Scholar
- ARVIND AND GOSTELOW, K. P. 1982. The U-interpreter. Computer 15, 2, 42-50.Google Scholar
- ARVIND AND KATHAIL, V. 1981. A multiple processor data flow machine that supports generalized procedures. In Proceedings of the 8th Annual Symposium on Computer Architecture. Vol. 9, No. 3. ACM SIGARCH, pp. 291-302. Google Scholar
- ASHCROFT, r. A., AND WADGE, W. W. 1976a. Lucid--A formal system for writing and proving programs. SIAM J. Comput. 5, 3, 336-354.Google Scholar
- ASHCROFT, E. A., AND WADGE, W. W. 1976b. Lucid, a nonprocedural language with iteration. Commun. ACM 20, 519-526. Google Scholar
- AUGUSTSSON, L. 1984. A compiler for Lazy ML. In Proceedings 1984 A CM Conference on LISP and Functional Programming (August). ACM, pp. 218-227. Google Scholar
- AUGUSTSSON, L. 1985. Compilingpattern-matching. In Functional Programming Languages and Computer Architecture. Springer-Verlag LNCS 201, pp. 368-381. Google Scholar
- BACKUS, J. 1978. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Commun. ACM 21, 8, 613-641. Google Scholar
- 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.Google Scholar
- BARENDREGT, H. P. 1984. The Lambda Calculus, Its Syntax and Semantics. Revised ed. North- Holland, Amsterdam.Google Scholar
- BERRY, G. 1978. S~quentialit~ de l'~valuation formelle des ~,-expressions. In Proceedings 3-e Coltoque International SUE la Programmation.Google Scholar
- BIRD, R., AND WADLER, P. 1988. Introduction to Functional Programming. Prentice Hall, Englewood Cliffs, N.J. Google Scholar
- BLOSS, A. 1988. Path analysis: Using order-ofevaluation information to optimize lazy functional languages. Ph.D. Dept. Computer Science, dissertation, Yale Univ.Google Scholar
- BLOSS, A., AND HUDAK, P. 1987. Path semantics. In Proceedings of Third Workshop on the Mathematical Foundations of Programming Language Semantics. Springer-Verlag LNCS (Tulane Univ., April 1987), 298, 476-489. Google Scholar
- BLOSS, A., HUDAK, P., AND YOUNG, J. 1988. Code optimizations for lazy evaluation. Lisp and Symbolic Computation: An International Journal 1, 147-164.Google Scholar
- BOEHM, H.-J. 1985. Partial polymorphic type inference is undecidable. In Proceedings of 26th Sympsoium on Foundations of Computer Science. IEEE pp. 339-345.Google Scholar
- BOUTEL, B. E. 1988. Tui language manual. Tech. Rep. CSD-8-021. Victoria University of Wellington, Department of Computer Science.Google Scholar
- BURGE, W. H. 1975. Recursive Programming Techniques. Addison-We~ley, Reading, Mass.Google Scholar
- BURN, G. L., PEYTON JONES, S. L., AND ROBSON, J. D. 1988. The spineless G-machine. In Proceedings 1988 A CM Conference on Lisp and Functional Programming (Salt Lake City, Utah). ACM SIGPLAN/SIGACT/SIGART, 244-258. Google Scholar
- BURSTALL, R. M., MACQUEEN, D. B., AND SANNELLA, D. T. 1980. HOPE: An experimental applicative language. In The 1980 LISP Conference. Stanford University, Santa Clara Univ. The USP Co., pp. 136-143. Google Scholar
- BURTON, F. W. 1984. Annotations to control parallelism and reduction order in the distributed evaluation of functional programs. A CM Trans. Program. Lang. Syst. 6, 2, 159-174. Google Scholar
- BURTON, F. W. 1988. Nondeterminism with referential transparency in functional programming languages. Comput. J. 31, 3, 243-247. Google Scholar
- CARDELLI, L., AND WEANER, P. 1985. On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17, 4, 471-522. Google Scholar
- CARTWRIGHT, R. 1976. A practical formal semantic definition and verification system for typed Lisp. Tech. Rep. AIM-296. Stanford Artificial Intelligence Laboratory.Google Scholar
- CnEN, M. C. 1986. Transformations of parallel programs in crystal. In Information Processing '86, Elsevier North-Holland, New York, pp. 455-462.Google Scholar
- CHURCH, A. 1932-1933. A set of postulates for the foundation of logic. Ann. Math. 2, 33-34, 346- 366, 839-864.Google Scholar
- CHURCH, A. 1941. The Calculi of Lambda Conversion. Princeton University Press, Princeton, N.J. Google Scholar
- CHURCH, A., AND ROSSER, J. B. 1936. Some properties of conversion. Trans. Am. Math. Soc. 39, 472-482.Google Scholar
- CURRY, H. B., AND FEYS, R. 1958. Combinatory Logic. Vol. 1. North-Holland, The Netherlands.Google Scholar
- DAMAS, L., AND MILNER, R. 1982. Principle type schemes for functional languages. In 9th A CM Symposium on Principles of Programming Languages. ACM. Google Scholar
- DARLINGTON, J., AND WHILE, L. 1987. Controlling the behavior of functional language systems. In Proceedings of 1987 Functional Programming Languages and Computer Architecture Conference. Springer-Verlag LNCS 274, pp. 278-300. Google Scholar
- DAVIS, A. L. 1978. The architecture and system method of DDM-I: A recursively structured data driven machine. In Proceedings 5th Annual Symposium on Computer Architecture. IEEE, ACM. Google Scholar
- DEGROOT, D., AND LINDSTROM, G. 1985. Functional and Logic Programming. Prentice-Hall, EngleP wood Cliffs, N.J.Google Scholar
- 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.Google Scholar
- DENNIS, J. B., AND MISUNAS, D. P. 1974. A preliminary architecture for a basic datafiow processor. In Proceedings of the 2nd Annual Symposium on Computer Architecture. ACM, IEEE, pp. 126-132. Google Scholar
- 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.Google Scholar
- FAIRBAIRN, J., AND WRAY, S. 1987. Tim: A simple, lazy abstract machine to execute supercombinatoes. In Proceedings of 1987 Functional Programming Languages and Computer Architecture Conference. Springer Verlag LNCS 274, pp. 34-45. Google Scholar
- FIELD, A. J., AND HARRISON, P. G. 1988. Functional Programming. Addison-Wesley, Workingham, England.Google Scholar
- FORTUNE, S., LEIVANT, D., AND O'DONNELL, M. 1985. The expressiveness of simple and secondorder type structures. J. ACM 30, 1, 151-185. Google Scholar
- FRIEDMAN, D. P., AND WISE, D. $. 1976. Cons should not evaluate its arguments. In Automata, Languages and Programming, Edinburgh University Press, pp. 257-284.Google Scholar
- GELERNTER, H., HANSEN, J. R., AND GERBERICH, C. L. 1960. A FORTRAN-compiled list processing language. J. ACM 7, 2, 87-101. Google Scholar
- GIFFORD, D. K., AND LUCASSEN, J. M. 1986. Integrating functional and imperative programming. In Proceedings 1986 A CM Conference on Lisp and Functional Programming. ACM SIG- PLAN/SIGACT/SIGART, pp. 28-38. Google Scholar
- GIRARD, J.-Y. 1972. Interpretation Fonctionelle et Elimination des Coupures dans l'Arithm~tique d'Ordre Sup~rieur. Ph.D. dissertation, Univ. of Paris.Google Scholar
- GOLDBERO, B. 1988a. Buckwheat: Graph reduction on a shared memory multiprocessor. In Proceedings 1988 A CM Conference on Lisp and Functional Programming (Salt Lake City, Utah, August 1988) ACM SIGPLAN/SIGACT/SIGART. Google Scholar
- GOLDBERG, B. 1988b. Multiprocessor execution of functional programs. Ph.D. dissertation, Dept. of Computer Science, Yale Univ. Available as Tech. Rep. YALEU/DCS/RR-618. Google Scholar
- GOLDBERG, B., AND HUDAK, P. 1988. Implementing functional programs on a hypercube multiprocessor. In Proceedings of 3rd Conference on Hypercube Concurrent Computers and Applications. ACM. Google Scholar
- GORDON, M. J., MILNER, R., AND WADSWORTH, C. P. 1979. Edinburgh LCF. Springer-Verlag LNCS 78, Berlin.Google Scholar
- GORDON, M., MILNER, R., MORRIS, L., NEWEY, M., AND WADSWORTH, C. 1978. A metalanguage for interactive proof in LCF. In Conference Record of the 5th Annual A CM Symposium on Principles of Programming Languages. ACM, pp. 119-130. Google Scholar
- GUTTAG, J., HORNING, J., AND WILLIAMS, J. 1981. FP with data abstraction and strong typing. In Proceedings of the 1981 Conference on Functional Programming Languages and Computer Architecture. ACM, pp. 11-24. Google Scholar
- 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.Google Scholar
- HENDERSON, P. 1980. Functional Programming: Application and Implementation. Prentice-Hall, Englewood Cliffs, N.J. Google Scholar
- HENDERSON, P. 1982. Purely functional operating systems. In Functional Programming and Its Applications: An Advance Course. Cambridge University Press, pp. 177-192.Google Scholar
- HENDERSON, P. AND MORRIS, r. 1976. A lazy evaluator. In 3rd A CM Symposium on Principles of Programming Languages. ACM, pp. 95-103. Google Scholar
- HINDLEY, R. 1969. The principle type scheme of an object in combinatory logic. Trans. Amer. Math. Soc. 146, 29-60.Google Scholar
- HOLMSTROM, S. 1983. How to handle large data structures in functional languages. In Proceedings of SERC/Chalmers Workshop on Declarative Programming Languages. SERC.Google Scholar
- HUDAK, P. 1984. ALFL Reference Manual and Programmer's Guide. 2nd ed. Res. Rep. YALEU/ DCS/RR-322. Yale University.Google Scholar
- HUDAK, P. 1986a. Arrays, non-determinism, sideeffects, and parallelism: a functional perspective. In Proceedings of the Santa Fe Graph Reduction Workshop (Los Alamos/MCC). Springer-Verlag LNCS 279, pp. 312-327. Google Scholar
- HUDAK, P. 1986b. Denotational semantics ofa parafunctional programming language. Int. J. Parallel Program. 15, 2, 103-125. Google Scholar
- HUDAK, P. 1986. Para-functional programming. Computer 19, 8, 60-71. Google Scholar
- HUDAK, P., AND ANDERSON, S. 1987. Pomset interpretations of parallel functional programs, in Proceedings of 1987 Functional Programming Languages and Computer Architecture Conference. Springer Verlag LNCS 274, pp. 234-256. Google Scholar
- 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.Google Scholar
- HUDAK, P., AND MOHR, E. 1989. Graphinators and the duality of SIMD and MIMD. In Proceedings 1988 A CM Conference on Lisp and Functional Programming (Salt Lake City, Utah, August). ACM SIGPLAN/SIGACT/SIGART. Google Scholar
- 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.Google Scholar
- HUDAK, P., AND SMITH, L. 1986. Para-functional programming: A paradigm for programming multiprocessor systems, tn I2th ACM Symposium on Principles of Programming Languages. ACM, pp. 243-254. Google Scholar
- 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.Google Scholar
- HUGHES, J. 1984. Why functional programming matters. Tech. Rep. 16. Programming Methodology Group, Chalmers University of Technology.Google Scholar
- HUGHES, J. 1985a. An efficient implementation of purely functional arrays. Tech. Rep. Programming Methodology Group, Chalmers University of Technology.Google Scholar
- HUGHES, J. 1985b. Lazy memo-functions. In Functional Programming Languages and Computer Architecture. Springer-Verlag LNCS 201, pp. 129-146. Google Scholar
- IVERSON, K. 1962. A Programming Language. Wiley, New York. Google Scholar
- JOHNSON, S. D. 1988. Daisy Programming Manual. Tech. Rep. Indiana University Computer Science Department.Google Scholar
- KAES, S. 1988. Parametric polymorphism. In Proceedings of the 2nd Eupropean Symposium on Programming. Springer-Verlag LNCS 300.Google Scholar
- KELLER, R. M. 1982. FEL programmer's guide. AMPS TR 7. University of Utah.Google Scholar
- KELLER, R. M., AND LiNDSTROM, G. 1985. Approaching distributed database implementations through functional programming concepts. In International Conference on Distributed Systems. IEEE.Google Scholar
- KELLER, R. M., AND SLEEP, R. 1986. Applicative caching. A CM Trans. Program. Lang. Syst. 8, 1, 88-108. Google Scholar
- 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.Google Scholar
- KLEENE, S. C. 1936. n-definability and recursiveness. Duke Math. J. 2, 340-353.Google Scholar
- KLEENE, S. C., AND ROSSER, J. B. 1935. The inconsistency of certain forms of logic. Ann. Math. 2, 36, 630-636.Google Scholar
- KROEZE, H. J. 1986-1987. The TWENTEL system (version 1). Tech. Rep. Department of Computer Science, University of Twente, The Netherlands.Google Scholar
- LANDIN, P. J. 1964. The mechanical evaluation of expressions. Comput. J. 6, 4, 308-320.Google Scholar
- LANDIN, P. J. 1965. A correspondence between ALGOL 60 and Church's lambda notation. Commun. ACM 8, 89-101, 158-165. Google Scholar
- LANDIN, P. J. 1966. The next 700 programming languages. Commun. ACM 9, 3, 157-166. Google Scholar
- LUCASSEN, J. M., AND GIFFORD, D. K. 1988. Polymorphic effect systems. In Proceedings of 15th A CM Symposium on Principles of Programming Languages. ACM, pp. 47-57. Google Scholar
- MARKOV, A. A. 1951. Teoriya algorifmov (Theory of algorithms). Trudy Mat. Inst. Steklov 38, 176-189.Google Scholar
- MCCARTHY, J. 1960. Recursive functions of symbolic expressions and their computation by machine, Part I. Commun. ACM 3, 4, 184-195. Google Scholar
- MCCARTHY, J. 1963. A basis for a mathematical theory of computation. In Computer Programming and Formal Systems. North-Holland, The Netherlands, pp. 33-70.Google Scholar
- MCCARTHY, J. 1978. History of Lisp. In Preprints of Proceedings of A CM SIGPLAN History of Programming Languages Conference. SIGPLAN Notices, Vol. 13, pp. 217-223. Google Scholar
- MCGRAW, J. R. 1982. The VAL language: Description and analysis. TOPLAS, 4, 1, 44-82. Google Scholar
- 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.Google Scholar
- MILNE, R. E., AND STRACHEY, C. 1976. A Theory of Programming Language Semantics. Chapman and Hall, London, and John Wiley, New York. Google Scholar
- MILNER, R. A. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 3, 348-375.Google Scholar
- MILNER, R. 1984. A proposal for Standard ML. In Proceedings 1984 A CM Conference on LISP and Functional Programming. ACM, pp. 184-197. Google Scholar
- MULLIN, L. R. 1988. A mathematics of arrays. Ph.D dissertation, Computer and Information Science and CASE Center, Syracuse University.Google Scholar
- NIKHIL, R. S., PINGALI, K., AND ARVIND. 1986. Id nouveau. Computation Structures Group Memo 265. Laboratory for Computer Science, Massachusetts Institute of Technology.Google Scholar
- PEYTON JONES, S. L. 1987. The Implementation of Functional Programming Languages. Prentice- Hall International, Englewood Cliffs, N.J. Google Scholar
- PEYTON JONES, S. L., CLACK, C., SALKILD, J., AND HARDIE, M. GRIP--A high-performance architecture for parallel graph reduction. In Proceedings of 1987 Functional Programming Languages and Computer Architecture Conference. Springer- Verlag LNCS 274, pp. 98-112. Google Scholar
- PFENNING, F. 1988. Partial polymorphic type inference and higher-order unification. In Proceedings 1988 A CM Conference on Lisp and Functional Programming (Salt Lake City, Utah). ACM SIG- PLAN/SIGACT/SIGART, pp. 153-163. Google Scholar
- POST, E.L. Formal reductions of the general combinatorial decision problem. Am. J. Math. 65, 197-215.Google Scholar
- REES, J., AND CLINGER, W. Eds. 1986. The revised report on the algorithmic language Scheme. SiGPLAN Notices 21, 12, 37-79. Google Scholar
- REYNOLDS, J. C. 1974. Towards a theory of type structure. In Proceedings of Colloque SUE la Programmation. Springer-Verlag LNCS 19, pp. 408-425. Google Scholar
- REYNOLDS, J. C. 1985. Three approaches to type structure. In Mathematical Foundations of Software Development, Springer-Verlag LNCS 185, pp. 97-138. Google Scholar
- ROSSER, J. B. 1982. Highlights of the history of the lambda-calculus. In Proceedings 1982 A CM Conference on LISP and Functional Programming. ACM, pp. 216-225. Google Scholar
- SCHMIDT, D. A. 1985. Detecting global variables in denotational specifications. ACM Trans. Program. Lang. Syst. 7, 2, 299-310. Google Scholar
- SCHONrINKEL, M. 1924. Uber die bausteine dee mathematischen logik. Mathematische Annalen 92, 305.Google Scholar
- SCOTT, D. S. 1970. Outline of a mathematical theory of computation. Programming Research Group PRG-2, Oxford University.Google Scholar
- SHAPIRO, E. 1989.' Systolic Programming: A Paradigm of Parallel Processing. Department of Applied Mathematics Tech. Rep. CS84-21, The Weizmann Institute of Science.Google Scholar
- SRIDHARAN, N. S. 1985. Semi-applicative programming: An example. Tech. Rep. BBN Laboratories.Google Scholar
- STEELE, JR., L. G., AND HILLIS, n. W. 1986. Connection machine lisp: Fine-grained parallel symbolic processing. In Proceedings 1986 A CM Conference on Lisp and Functional Programming (Cambridge, Mass.). ACM SIGPLAN/SIGACT/ SIGART, pp. 279-297. Google Scholar
- STOY, J. E. 1977. Denotational Semantics: The Scott- Strachey Approach to Programming Language Theory. The MIT Press, Cambridge, Mass. Google Scholar
- STOYE, W. 1985. A New Scheme for Writing Functional Operating Systems. Tech. Rep. 56. Computer Laboratory, University of Cambridge.Google Scholar
- THAKKAR, S. S. Ed. 1987. Selected Reprints on Datafiow and Reduction Architectures. The Computer Society Press, Washington, DC. Google Scholar
- TORTE, M. 1988. Operational semantics and polymorphic type inference. Ph.D. dissertation, Dept. Computer Science, Univ. of Edinburgh (CST-52- 88).Google Scholar
- 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.Google Scholar
- TRELEAVEN, P. C., BROWNBRIDGE, D. R., AND HOP- gINS, R. P. 1982. Data-driven and demanddriven computer architectures. Comput. Surv. 14, 1, 93-143. Google Scholar
- TU, H-C. 1988. FAC: Functional array calculator and its application to APL and functional programming. Ph.D. dissertation, Dept. Computer Science, Yale Univ. Available as Res. Rep. YALEU/DCS/RR-468. Google Scholar
- Tu, H-C., AND PERLIS, A. J. 1986. FAC: A functional APL language. IEEE Software 3, 1, 36-45.Google Scholar
- TURING, A. M. 1936. On computable numbers with an application to the entscheidungsproblem. Proc. London Math. Soc. 42, 230-265.Google Scholar
- TURING, A. M. 1937. Computability and k-definability. J. Symbolic Logic 2, 153-163.Google Scholar
- TURNER, D. A. 1976. SASL language manual. Tech. Rep. Univ. St. Andrews.Google Scholar
- TURNER, U. A. 1979. A new implementation techinque for applicative languages. Softw. Pract. Exper. 9, 31-49.Google Scholar
- TURNER, D. A. 1981. The semantic elegance of applicative languages. In Proceedings of the 1981 Conference on Functional Programming Languages and Computer Architecture. ACM, pp. 85-92. Google Scholar
- 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.Google Scholar
- TURNER, D. A. 1985. Miranda: A non-strict functional language with polymorphic types. In Functional Programming Languages and Computer Architecture. Springer-Verlag LNCS 201, pp. 1-16. Google Scholar
- VAN HEIJENOORT, J. 1967. From Frege to GSdel. Harvard University Press, Cambridge, Mass.Google Scholar
- VEGDAHL, S. R. 1984. A survey of proposed architectures for the execution of functional languages. IEEE Trans. Comput. C-23, 12, 1050-1071.Google Scholar
- VUILLEMiN, J. 1974. Correct and optimal implementations of recursion in a simple programming language. J. Comput. Syst. Sci. 9, 3.Google Scholar
- WADGE, W. W., AND ASHCROFT, E. A. 1985. Lucid, the Datafiow Programming Language. Academic Press, London. Google Scholar
- WADLER, P. 1986. A new array operation. In Workshop on Graph Reduction Techniques, Springer- Verlag LNCS 279. Google Scholar
- 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.Google Scholar
- WADLER, P. 1987. Views: A way for pattern-matching to cohabit with data abstraction. Tech. Rep. 34. Programming Methodology Group, Chalmers Univ. of Technology, March 1987. Preliminary version appeared in the Proceedings of the 14th A CM Symposium on Principles of Programming Languages (January 1987). Google Scholar
- WADLER, P., AND BLOTT, S. 1989. How to make ad hoc polymorphism less ad hoc. In Proceedings of 16th A CM Symposium on Principles of Programming Languages. ACM, pp. 60-76. Google Scholar
- WADLER, P., AND MILLER, Q. 1988. An introduction to Orwell. Tech. Rep. Programming Research Group, Oxford University. (First version, 1985.)Google Scholar
- WADSWORTH, C. P. 1971. Semantics andpragmatics of the lambda calculus. Ph.D. dissertation, Oxford Univ.Google Scholar
- WATSON, P., AND WATSON, I. 1987. Evaluating functional programs on the FLAGSHIP machine. In Proceedings of 1987 Functional Programming Languages and Computer Architecture Conference. Springer-Verlag LNCS 274, pp. 80-97. Google Scholar
- WEGNER, P. 1968. Programming Languages, in{ormation Structures, and Machine Organization. McGraw-Hill, New York. Google Scholar
- WIKSTROM, ,A. 1988. Standard ML. Prentice-Hall, Englewood Cliffs, N.J.Google Scholar
- WISE, D. 1987. Matrix algebra and applicative programming. In Proceedings o{ 1987 Functional Programming Languages and Computer Architecture Conference, Springer Verlag LNCS 274, pp. 134-153. Google Scholar
- YOUNG, J. 1988. The Semantic Analysis of Functional Programs: Theory and Practice. Ph.D. dissertation, Dept. Computer Science, Yale Univ., 130-142.Google Scholar
Recommendations
Definitional Interpreters for Higher-Order Programming Languages
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Functional programming languages for verification tools: a comparison of Standard ML and Haskell
We compare Haskell with Standard ML as programming languages for verification tools based on our experience developing the verification platform Truth in Haskell and the Edinburgh Concurrency Workbench (CWB) in Standard ML. We review not only technical ...
Definitional interpreters for higher-order programming languages
ACM '72: Proceedings of the ACM annual conference - Volume 2Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters which are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Comments