|
ABSTRACT
Conventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor—the von Neumann computer, their close coupling of semantics to state transitions, their division of programming into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs.
An alternative functional style of programming is founded on the use of combining forms for creating programs. Functional programs deal with structured data, are often nonrepetitive and nonrecursive, are hierarchically constructed, do not name their arguments, and do not require the complex machinery of procedure declarations to become generally applicable. Combining forms can use high level programs to build still higher level ones in a style not possible in conventional languages.
Associated with the functional style of programming is an algebra of programs whose variables range over programs and whose operations are combining forms. This algebra can be used to transform programs and to solve equations whose “unknowns” are programs in much the same way one transforms equations in high school algebra. These transformations are given by algebraic laws and are carried out in the same language in which programs are written. Combining forms are chosen not only for their programming power but also for the power of their associated algebraic laws. General theorems of the algebra give the detailed behavior and termination conditions for large classes of programs.
A new class of computing systems uses the functional programming style both in its programming language and in its state transition rules. Unlike von Neumann languages, these systems have semantics loosely coupled to states—only one state transition occurs per major computation.
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
|
Arvind, and Gostelow, K.P. A new interpreter for data flow schemas and its implications for computer architecture. Tech. Rep. No. 72, Dept. Comptr. Sci., U. of California, Irvine, Oct. 1975.
|
 |
2
|
|
| |
3
|
Berkling, K.J. Reduction languages for reduction machines. Interner Bericht ISF-76-8, Gesellschaft f'dr Mathematik und Datenverarbeitung MBH, Bonn, Sept. 1976.
|
| |
4
|
Burge, W.H. Recursive Programming Techniques. Addison- Wesley, Reading, Mass., 1975.
|
| |
5
|
|
| |
6
|
Curry, H.B., and Feys, R. Combinatory Logic, Vol. 1. North- Holland Pub. Co., Amsterdam, 1958.
|
| |
7
|
Dennis, J.B. First version of a data flow procedure language. Tech. Mem. No. 61, Lab. for Comptr. Sci., M.I.T., Cambridge, Mass., May 1973.
|
| |
8
|
|
| |
9
|
Friedman, D.P., and Wise, D.S. CONS should not evaluate its arguments. In Automata, Languages and Programming, S. Michaelson and R. Milner, Eds., Edinburgh U. Press, Edinburgh, 1976, pp. 257-284.
|
 |
10
|
|
 |
11
|
|
| |
12
|
|
| |
13
|
Kosinski, P. A data flow programming language. Rep. RC 4264, IBM T.J. Watson Research Ctr., Yorktown Heights, N.Y., March 1973.
|
| |
14
|
Landin, P.J. The mechanical evaluation of expressions. Computer J. 6, 4 (1964), 308-320.
|
| |
15
|
Mag~, G.A. A network of microprocessors to execute reduction languages. To appear in Int. J. Comptr. and Inform. Sci.
|
 |
16
|
|
 |
17
|
|
| |
18
|
Me Jones, P. A Church-Rosser property of closed applicative languages. Rep. RJ 1589, IBM Res. Lab., San Jose, Calif., May 1975.
|
 |
19
|
|
| |
20
|
Reynolds, J..C. Notes on a lattice-theoretic approach to the theory of computation. Dept. Syst. and Inform. Sci., Syracuse U., Syracuse, N.Y., 1972.
|
| |
21
|
Scott, D. Outline of a mathematical theory of computation. Proc. 4th Princeton Conf. on Inform. Sci. and Syst., 1970.
|
| |
22
|
Scott, D. Lattice-theoretic models for various type-free calculi. Proc. Fourth Int. Congress for Logic, Methodology, and the Philosophy of Science, Bucharest, 1972.
|
| |
23
|
Scott, D., and Strachey, C. Towards a mathematical semantics for computer languages. Proc. Symp. on Comptrs. and Automata, Polytechnic Inst. of Brooklyn, 1971.
|
CITED BY 418
|
|
|
|
|
|
|
|
|
|
|
A. J. van der Hoeven , A. A. de Lange , E. F. Deprettere , P. M. Dewilde, A new model for the high level description and simulation of VLSI networks, Proceedings of the 26th ACM/IEEE conference on Design automation, p.738-741, June 25-28, 1989, Las Vegas, Nevada, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S. N. Zilles , P. Lucas , T. M. Linden , J. B. Lotspiech , A. R. Harbury, The escher document imaging model, Proceedings of the ACM conference on Document processing systems, p.159-168, December 05-08, 1988, Santa Fe, New Mexico, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sidney C. Bailin , Manju Bewtra , J. Mike Moore, Combining object-oriented and functional paradigms in a design methodology for Ada, Proceedings of the conference on TRI-ADA '90, p.102-113, December 03-06, 1990, Baltimore, Maryland, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Philip Wadler, Applicative style programming, program transformation, and list operators, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.25-32, October 18-22, 1981, Portsmouth, New Hampshire, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Donald F. Stanat , E. Hollins Williams, Jr., Optimal associative searching on a cellular computer, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.99-106, October 18-22, 1981, Portsmouth, New Hampshire, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N. Islam , T. J. Myers , P. Broome, A simple optimizer for FP-like languages, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.33-40, October 18-22, 1981, Portsmouth, New Hampshire, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Polen Kission , Hong Ding , Ahmed A. Jerraya, Structured design methodology for high-level design, Proceedings of the 31st annual conference on Design automation, p.466-471, June 06-10, 1994, San Diego, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B. E. Hart , S. Danforth , P. Valduriez, Parallelizing a database programming language, Proceedings of the first international symposium on Databases in parallel and distributed systems, p.72-79, December 05-07, 1988, Austin, Texas, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kourosh Gharachorloo , Vivek Sarkar , John L. Hennessy, A simple and efficient implmentation approach for single assignment languages, Proceedings of the 1988 ACM conference on LISP and functional programming, p.259-268, July 25-27, 1988, Snowbird, Utah, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Peter Buneman , Rishiyur Nikhil , Robert Frankel, A practical functional programming system for databases, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.195-202, October 18-22, 1981, Portsmouth, New Hampshire, United States
|
|
|
|
|
|
Isabel Gouveia Lima , Richard Hopkins , Lindsay Marshall , David Mundy , Philip Treleaven, Decentralised control flow - based on UNIX, Proceedings of the 1983 ACM SIGPLAN symposium on Programming language issues in software systems, p.192-201, June 27-29, 1983, San Francisco, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C. A. R. Hoare , I. J. Hayes , He Jifeng , C. C. Morgan , A. W. Roscoe , J. W. Sanders , I. H. Sorensen , J. M. Spivey , B. A. Sufrin, Laws of programming, Communications of the ACM, v.30 n.8, p.672-686, Aug. 1987
|
|
|
|
|
|
|
|
|
V. Stavridou , H. Barringer , D. A. Edwards, Formal specification and verification of hardware: a comparative case study, Proceedings of the 25th ACM/IEEE conference on Design automation, p.197-204, June 12-15, 1988, Atlantic City, New Jersey, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Noah Prywes , Evan Lock , Xiang Ge, Automatic abstraction of real-time software and re-implementation in Ada, Proceedings of the conference on TRI-Ada '91: today's accomplishments; tomorrow's expectations, p.238-247, October 21-25, 1991, San Jose, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alexander Aiken , Edward L. Wimmers , T. K. Lakshman, Soft typing with conditional types, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.163-173, January 16-19, 1994, Portland, Oregon, United States
|
|
|
K. Cheung , G. Sohi , K. Saluja , D. Pradhan, Organization and analysis of a gracefully-degrading interleaved memory system, Proceedings of the 14th annual international symposium on Computer architecture, p.224-231, June 02-05, 1987, Pittsburgh, Pennsylvania, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M. Azuma , M. Takahashi , S. Kamiya , K. Minomura, Interactive software development tool: ISDT, Proceedings of the 5th international conference on Software engineering, p.153-162, March 09-12, 1981, San Diego, California, United States
|
|
|
|
|
|
Alexander S. Yeh , David R. Harris , Melissa P. Chase, Manipulating recovered software architecture views, Proceedings of the 19th international conference on Software engineering, p.184-194, May 17-23, 1997, Boston, Massachusetts, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. Kapur , D. R. Musser , A. A. Stepanov, Operators and algebraic structures, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.59-64, October 18-22, 1981, Portsmouth, New Hampshire, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R. L. Johnson , S. Krauwer , M. A. Rosner , G. B. Varile, The design of the kernel architecture for the Eurotra software, Proceedings of the 22nd annual meeting on Association for Computational Linguistics, p.226-235, July 02-06, 1984, Stanford, California
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
V. Radonjic´ , M. Krieger , J-P. Corriveau, A response oriented paradigm for software engineering, Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research, p.58, October 31-November 03, 1994, Toronto, Ontario, Canada
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
J. Herath , Y. Yamaguchi , N. Saito , T. Yuba, Dataflow Computing Models, Languages, and Machines for Intelligence Computations, IEEE Transactions on Software Engineering, v.14 n.12, p.1805-1828, December 1988
|
|
|
|
|
|
|
|
|
|
|
|
Paul Hudak , Simon Peyton Jones , Philip Wadler , Brian Boutel , Jon Fairbairn , Joseph Fasel , María M. Guzmán , Kevin Hammond , John Hughes , Thomas Johnsson , Dick Kieburtz , Rishiyur Nikhil , Will Partain , John Peterson, Report on the programming language Haskell: a non-strict, purely functional language version 1.2, ACM SIGPLAN Notices, v.27 n.5, p.1-164, May 1992
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mashhuda Glencross , Alan G. Chalmers , Ming C. Lin , Miguel A. Otaduy , Diego Gutierrez, Exploiting perception in high-fidelity virtual environmentsAdditional presentations from the 24th course are available on the citation page, ACM SIGGRAPH 2006 Courses, July 30-August 03, 2006, Boston, Massachusetts
|
|
|
|
|
|
|
|
|
|
|
|
Jung Ho Ahn , Mattan Erez , William J. Dally, Tradeoff between data-, instruction-, and thread-level parallelism in stream processors, Proceedings of the 21st annual international conference on Supercomputing, June 17-21, 2007, Seattle, Washington
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
Armelle Bonenfant , Zezhi Chen , Kevin Hammond , Greg Michaelson , Andy Wallace , Iain Wallace, Towards resource-certified software: a formal cost model for time and its application to an image-processing example, Proceedings of the 2007 ACM symposium on Applied computing, March 11-15, 2007, Seoul, Korea
|
|
|
|
|
|
|
|
|
|
|
|
Joseph Y. Halpern , John H. Williams , Edward L. Wimmers , Timothy C. Winkler, Denotational semantics and rewrite rules for FP, Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, p.108-120, January 14-16, 1985, New Orleans, Louisiana, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
J. R. Goodman , Jian-tu Hsieh , Koujuch Liou , Andrew R. Pleszkun , P. B. Schechter , Honesty C. Young, PIPE: a VLSI decoupled architecture, ACM SIGARCH Computer Architecture News, v.13 n.3, p.20-27, June 1985
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Daniel E. Cooke , J. Nelson Rushton , Brad Nemanich , Robert G. Watson , Per Andersen, Normalize, transpose, and distribute: An automatic approach for handling nonscalars, ACM Transactions on Programming Languages and Systems (TOPLAS), v.30 n.2, p.1-49, March 2008
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Toshio Yokoi , Shooichi Yokoyama , Taisuke Satoo , Fumio Motoyoshi , Kazuhiro Fuchi, SYSP: a new programming language to the next generation, Proceedings of the 6th international joint conference on Artificial intelligence, p.998-1000, August 20-23, 1979, Tokyo, Japan
|
|
|
|
|
|
|
|
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.1
PROGRAMMING TECHNIQUES
General Terms:
Design,
Performance,
Theory
Keywords:
algebra of programs,
applicative computing systems,
applicative state transition systems,
combining forms,
functional forms,
functional programming,
metacomposition,
models of computing systems,
program correctness,
program termination,
program transformation,
programming languages,
von Neumann computers,
von Neumann languages
|