Abstract

We present an initial draft of the “Luminous" interactive interpreter for a new dialect of the functional dataflow language Lucid. Luminous is not the first implementation of Lucid but it is novel in several ways. First, the dialect is two dimensional (has a space as well as a time dimension) with special space operators. And it performs dimensional analysis to determine, for each program variable, which dimensions may be required to evaluate a variable and which are irrelevant. This information is vital for producing output and for avoiding expensive redundancy in the cache. Also, Luminous is interactive: the user can demand the value of an arbitrary expression and immediately see the results in an appropriate form, depending on the dimensionality of the expression. The user can also alter existing definitions and re-demand the value of expressions, to see the effect of the change. Unlike previous Lucid implementation, Luminous operates directly on the source - it doesn’t build a parse tree. The source is ‘dismantled’ into elementary equations in a bottom-up procedure based on program transformation which skips building a parse tree. Dismantling is a non deterministic distributable dataflow procedure. This could become very important when (in the future) we deal with programs millions of lines long, when parsing is a major problem. The final result of dismantling is an (unordered) set of ‘atomic’ equations – so called because they cannot be simplified, each consisting of a simple variable equated to an expression consisting of a single operator applied to arguments, which are also simple variables (or literals). Converting a program to a set of atomic equations (another first for Luminous) vastly simplifies evaluation and static analysis. We discuss shortcomings of the current interpreter, the most glaring of which is the lack of user defined stream transformations.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call