How to replace failure by a list of successes
Proc. of a conference on Functional programming languages and computer architecture
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Making form follow function: an exercise in functional programming style
Software—Practice & Experience
Proc. of a conference on Functional programming languages and computer architecture
Concrete syntax for data objects in functional languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
The definition of Standard ML
Parsers and printers as stream destructors and constructors embedded in functional languages
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Polymorphic type inference and assignment
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference for polymorphic references
Information and Computation
Elements of functional programming
Elements of functional programming
“little language” project modules
Journal of Functional Programming
Hi-index | 0.00 |
We present the operational semantics of streams and stream matching as discussed in. Streams are data structures such as lists, but with different primitive operations. Streams not only provide an interface to usual imput/output channels, but may used as a data structure per se, holding any kind of element. A special pattern matching construct is dedicated to streams and the actual matching process will be called parsing.The primary parsing semantics that we propose here is predictive parsing, i.e. recursive descent semantics with a one token look-ahead: although this choice seems to restrict us to the recognition of LL9(1) languages, we show by examples that full functionality and parameter passing allow us to write parsers for complex languages. The operational semantics of parsers is given by transforming parsers into regular functions.We introduce a non-strict semantics of streams by translating stream expression into more classical data structures; we also investigate different sharing mechanisms for some of the stream operations.