/+dub.sdl: dependency "frp-d:stream" path=".." +/ module cell_; // Renamed because `stream` conflicts with function name. import std.stdio; import frpd.stream; import frpd.stream.sink_stream; import frpd.stream.listener; void main() { auto a = stream!int; auto b = stream!int; auto a3 = a.map!triple; auto a3b = join!((int[] l, int[] r)=>l~r)(a3,b); a3.addListener!((int v){writeln("Event in `a3`: ",v);}); a3b.addListener!((int v){writeln("Event in `a3b`: ",v);}); writeln("Order of listeners being called from events from the same source is undefined. (More technically, events in the same transaction."); a.put(1); writeln("--- Transation break."); b.put(2); writeln("--- Transation break."); a.put(5); writeln("--- Transation break."); a.put(6); } int triple(int v) { return v*3; }