Nov 28, 2017

Lucid is a functional programming language from the '80s that took a very different approach. All variables are infinite streams of values. It is a grandfather of sorts of reactive programming. Although the book title claims it's a dataflow language, the original Lucid is more a type of reduction-strategy functional language with a twist (viz. they call it Eduction).

The authors later refined the idea with Multidimensional Lucid, which replaces a slew of special forms (e.g. next, fby) and better deals with complex nested iterations, essentially by introducing a eval-at-context operator (context being a vector of dimension values). The Multidimensional Programming (https://books.google.be/books/about/Multidimensional_Program...) book starts with the example of transposing a matrix without touching its values.

Here's the Lucid wikipedia page: https://en.wikipedia.org/wiki/Lucid_(programming_language)

The relatively ancient pLucid implementation can be found here: https://code.google.com/archive/p/plucid/

The original book's PDF can be found on various sites, such as Bret Victor's http://worrydream.com/refs/Wadge%20-%20Lucid,%20the%20Datafl...