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.

Reply via email to