ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Communications of the ACM
Communicating sequential processes
Communications of the ACM
Lucid, a nonprocedural language with iteration
Communications of the ACM
Abstraction and verification in Alphard: defining and specifying iteration and generators
Communications of the ACM
Communications of the ACM
Communications of the ACM
Coroutines
Functional Programming
Proceedings of the 14th IBM Computer SCience Symposium on Operating Systems Engineering
Hierarchical coroutines a mechanism for improved program structure
ICSE '79 Proceedings of the 4th international conference on Software engineering
Information systems: Modelling, sequencing and transformations
ICSE '78 Proceedings of the 3rd international conference on Software engineering
Applicative style programming, program transformation, and list operators
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Principles of Program Design
SIMULA 67 common base language, (Norwegian Computing Center. Publication)
SIMULA 67 common base language, (Norwegian Computing Center. Publication)
Occam Programming Manual
History of the Icon programming language
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Exploring the Stream Data Type in SISAL and Other Languages
PACT '93 Proceedings of the IFIP WG10.3. Working Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism
History of the Icon programming language
History of programming languages---II
Hi-index | 0.00 |
A description is given of features which were added to a conventional programming language that will manipulate streams of values. A stream is a sequence of values of a certain fixed type. The number of elements of a stream may be determined at execution time, and evaluation of each element can be postponed until its value is actually needed. Many programs can be expressed naturally and clearly as networks of processes communicating by means of streams. The network is called a composite function and consists of several component functions. Since component functions are connected solely by streams, they greatly increase the flexibility of combinations and the reusability of programs. Loop statements can be considered as iterative statements over streams. One general problem in these networks is the mechanism of terminating each process of the network. A practical solution for this problem is presented. Comparisons to other programming styles, such as coroutines, Lisp, functional programming, and dataflow languages, are described. Three modes of execution are considered for the implementation of composite functions: parallel mode, coroutine mode, and inline mode. In the inline mode, a composite function is expanded and transformed into a single function, realizing maximum run-time efficiency. Algorithms for this expansion are given.