Hi All, I'd like to announce a new Clojure library called Signals:
http://github.com/kunstmusik/signals This is a library for working with time-varying signals (mutable data). It's designed with the view that Clojure's IDeref's (i.e. atoms, refs, agents) are time-varying signal sources. It uses those as the base and adds ways to create your own signals (IDerefs) as well as event code that reacts to changes in signals. It is also built around the apply!*! operator, which becomes the basis by which lift operations are made. It owes a lot to FRP systems like Elm and Yampa, as well as all of the other reactive systems in the Clojure world (OM, Reagent, freactive, and more). Some background about the library is available at: https://github.com/kunstmusik/signals/blob/master/doc/intro.md and demo code is available at: https://github.com/kunstmusik/signals/blob/master/src/signals/demo.clj To note, while this library has a lot of influences from FRP, that is not it's only concern. I see some of the features in this library to be useful outside the context of a signal-flow worldview, such as using d!*! blocks as saved queries and transformations upon changing data. Regarding the design, I wanted to reuse existing mutable constructs rather than create my own. This was so that the library could easily be introduced into other work that already uses atoms/refs/agents. Also, I wanted to avoid using macros to build this system and went with using functions/closures/protocols. For this first release I wanted to implement a base set of features that I thought would be necessary for another project I am working on. I am planning on working on optimizing signal update notifications for the next release, as well as address anything that comes up while developing this other project. Thanks! steven -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.