Alan Dipert introduces Javelin, a ClojureScript library, demonstrating how it can be used to express a variety of asynchronous workflows in concise and composable ways.
Alan Dipert has contributed to Clojure, ClojureScript, and several Clojure projects including Leiningen and clojure-tco. Alan is a developer at The Fresh Diet, where he builds systems for delivering fresh food to customers across North America. He lives in Durham, North Carolina, where he helps run Splat Space, the local hacker space.
Clojure/West is the newest conference creation from Alex Miller (aka @puredanger). Alex has been running the Strange Loop conference in St. Louis since 2009, smashing together the worlds of functional and dynamic programming languages, concurrency, distributed systems, web and mobile. Since early 2010, Alex has also been part of a team using Clojure at Revelytix.
- It's entirely possible to build a "classic" FRP system atop Javelin; I say otherwise. In order to implement discrete propagation in any continuous propagation system, one may introduce values like [stamp, val] where stamp is a unique value like a timestamp and val is the value associated with the event. stamp guarantees that the tuple is not equal to whatever tuple preceded it, and propagation will occur regardless of whether or not val is new.
Javelin's API is not unprecedented and the idea of the cell macro is only new to ClojureScript. Several Javelin-like systems have been implemented in Common Lisp and Clojure, including: