Effect-ive Clojure


(((The building is locked at 6pm. If you arrive after 6, call[masked] and someone will come up to let you in.)))

Pure functions are the building blocks of idiomatic Clojure(Script) programs, since we can easily understand and test them. By definition, these functions should not have any effects i.e. should not change the outside world. However, our programs are only useful if they produce effects like sending emails, displaying information, or saving information to databases.

This talk explores techniques for writing effects in ClojureScript. We’ll look at how to separate effects from pure functions, discuss the tradeoffs of tools like callbacks, Promises, and core.async, and explore some strategies for simplifying sequences of effects.

Bio: Ben has written code professionally for over a decade, working on projects ranging from IDEs, compilers, distributed test runners, code quality metrics, and web apps. After years of frustration with the verbosity of OOP (and a few production bugs related to mutable state), Ben switched to using Clojure professionally in 2015. His interests include data-driven programming and model-based testing. He currently works at Remix Labs, building native apps with ClojureScript and React Native.