4 ms·
It seems to be node-based programming, done textually instead of graphically. In PureData (or Max/MSP) each node has some number of inputs and outputs, and you
by kmill 5y ago
It seems to be node-based programming, done textually instead of graphically. In PureData (or Max/MSP) each node has some number of inputs and outputs, and you wire them up.
The semantics here are a bit different though. The idea is that a "scheme" has a way to be instantiated, and then when you use an output, it's as if the equations for that output are substituted in. PureData uses a message passing style instead.
There is some prior art -- take a look at the work by Alexey Radul and Gerald Sussman on propagator networks. They were also interested in partial information and networks that could have cycles, so they solve problems with how to update information in nodes.
Another similar thing is Verilog, where each module has inputs and outputs you connect together. (For handling cycles, you use a clock and registers.)
There's also OCaml "functors," which seem somewhat similar. Pay no attention to the name -- a "functor" is a module parameterized by another module. The "schemes" seem to be like a functor in that you can pass in specific definitions, and then the "outputs" are members of the resulting module.