

Lucid programming language - stefano
http://en.wikipedia.org/wiki/Lucid_%28programming_language%29

======
barrkel
I implemented a dataflow language a few years ago, for data binding scenarios
in a web application.

In a record-oriented data entry and validation heavy application domain,
finance sector, insurance policy records, that kind of thing, an imperative
approach to updating the user view gets messy pretty quickly. Using a dataflow
approach, the client could receive minimal incremental updates from the server
in response to events the client sent to the server, such as filling in a
field or selecting a value from a drop-down. Because the structure of the UI
was declarative, forms could be both pre-populated on download and
incrementally updated (with AJAX) using the same set of definitions, rather
than ad-hoc cooperation between either end.

Dataflow is trivially parallelizable in so far as it's not difficult to find
things to parallelize; selecting an appropriately sized unit of work is
somewhat trickier though.

------
olliesaunders
Kicking off the discussion because I'd like to know what people think:

Clojure uses streams and I imagine Haskell does too. This is a bit different
though, I guess.

~~~
eru
With streams in Haskel, did you mean lazy lists? Or is there something else,
I've missed so far?

~~~
olliesaunders
Yes. That is what I mean.

------
elblanco
Dataflow languages lend themselves to graphical programming paradigms much
more readily than imperative approaches as well. e.g. This company's
<http://www.futurepointsystems.com/?page=products> XEE product is a pretty
slick dataflow XML ETL tool.

------
zeeone

      running_avg
      where 
         sum = first(input) fby sum + next(input);
         n = 1 fby n + 1;
         running_avg = sum / n;
      end;
    

So if you change the name of the function, you have to change it everywhere
inside its body? I'm not sure if I like that.

~~~
barrkel
That's generally the way recursion works too. Do you have similar issues with
it?

IDEs have largely made this a solved problem anyway.

