|
ABSTRACT
The benefits of programming in a functional style are well known. For example, algorithms which are expressed as compositions of functions operating on series/vectors/streams of data elements are much easier to understand and modify than equivalent algorithms expressed as loops. Unfortunately, many programmers hesitate to use series expressions because they are typically implemented very inefficiently-the prime source of inefficiency being the creation of intermediate series objects.A restricted class of series expressions, obviously synchronizable series expressions, is defined which can be evaluated very efficiently because they do not require the creation of any intermediate series objects. A Common Lisp macro package has been implemented which supports obviously synchronizable series expressions. Using this macro package, programmers can obtain the advantages of expressing computations as series expressions without incurring any runtime overhead. Obviously synchronizable series expressions could be straightforwardly supported in any programming language.
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
|
|
| |
2
|
[2] F. Allen and J. Cocke, "A Catalogue of Optimizing Transformations", in Design and Optimization of Compilers, R. Rustin (ed.), Prentice-Hall, 1971.
|
 |
3
|
|
 |
4
|
|
| |
5
|
|
| |
6
|
[6] T. Budd, An APL Compiler, Univ. of Arizona, TR 81-17, Oct. 1981.
|
 |
7
|
|
| |
8
|
[8] D. Barstow, "Automatic Programming for Streams", Proc. of the 9th Int. Joint Conf on Artificial Intelligence, Aug. 1985.
|
| |
9
|
[9] G. Burke and D. Moon, Loop Iteration Macro, MIT/LCS/TM-169, July 1980.
|
| |
10
|
[10] D. Friedman and D. Wise, CONS Should Not Evaluate Its Arguments, Indiana Tech. Rep. 44, Nov. 1975.
|
| |
11
|
[11] A. Goldberg and R. Paige, Stream Processing, Rutgers report LCSR-TR-46, Aug. 1983.
|
 |
12
|
|
| |
13
|
[13] G. Kahn and D. MacQueen, "Coroutines and Networks of Parallel Processes", Proc. 1977 IFIP congress, North-Holland, 1977.
|
| |
14
|
B Liskov , E Moss , A Snyder , R Atkinson , J C. Schaffert , T Bloom , R Scheifler, CLU reference manual, Springer-Verlag New York, Inc., New York, NY, 1984
|
| |
15
|
|
 |
16
|
|
| |
17
|
[17] G. Ruth, S. Alter, and W. Martin, A Very High Level Language for Business Data Processing, MIT/LCS/TR-254, 1981.
|
| |
18
|
|
 |
19
|
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
[doi> 10.1145/800223.806759]
|
 |
20
|
|
| |
21
|
|
| |
22
|
[22] R. Waters, "A Method for Analyzing Loop Programs", IEEE Trans. on Software Engineering, 5(3), May 1979.
|
| |
23
|
[23] R. Waters, LetS: an Expressional Loop Notation, MIT/AIM-680, Oct. 1982.
|
 |
24
|
|
| |
25
|
|
| |
26
|
[26] R. Waters, OSS: Efficient Compilation of Synchronizable Series Expressions, MIT/AI/TR-959, June 1987.
|
| |
27
|
[27] D. Wile, Generator Expressions, USC Information Sciences Institute Technical Report ISI/RR-83-116, 1983.
|
| |
28
|
Wm. A. Wulf , Ralph L. London , Mary Shaw, An introduction to the construction and verification of Alphard programs, Proceedings of the 2nd international conference on Software engineering, p.390, October 13-15, 1976, San Francisco, California, United States
|
| |
29
|
[29] Military Standard Ada Programming Language, ANSI/MIL-STD-1815A-1983, U.S. Government Printing Office, February 1983.
|
| |
30
|
[30] Lisp Machine Documentation, Symbolics, Cambridge MA, 1986.
|
|