Affiliation:
1. MIT Artificial Intelligence Lab, Cambridge, MA
Abstract
The benefits of programming in a functional style are well known. In particular, algorithms that are expressed as compositions of functions operating on sequences/vectors/streams of data elements are easier to understand and modify than equivalent algorithms expressed as loops. Unfortunately, this kind of expression is not used anywhere near as often as it could be, for at least three reasons: (1) most programmers are less familiar with this kind of expression than with loops; (2) most programming languages provide poor support for this kind of expression; and (3) when support is provided, it is seldom effcient.
In any programming language, the second and third problems can be largely solved by introducing a data type called
series
, a comprehensive set of procedures operating on series, and a preprocessor (or compiler extension) that automatically converts most series expressions into efficient loops. A set of restrictions specifies which series expressions can be optimized. If programmers stay within the limits imposed, they are guaranteed of high efficiency at all times.
A common Lisp macro package supporting series has been in use for some time. A prototype demonnstrates that series can be straightforwardly supported in Pascal.
Publisher
Association for Computing Machinery (ACM)
Cited by
26 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Eliminating abstraction overhead of Java stream pipelines using ahead-of-time program optimization;Proceedings of the ACM on Programming Languages;2020-11-13
2. Stream fusion, to completeness;ACM SIGPLAN Notices;2017-05-11
3. Stream fusion, to completeness;Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages;2017-01
4. Data flow fusion with series expressions in Haskell;ACM SIGPLAN Notices;2014-01-31
5. The HERMIT in the stream;Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation - PEPM '14;2014