PurelyFunctional.tv Newsletter 288: Clojure Spec Tools
From OO to Clojure Workshop!
Watch my free workshop to help you learn Clojure faster and shift your paradigm to functional.
Issue 288 - August 20, 2018 · Archives · Subscribe
I've been doing a lot of research into Clojure Spec this week. One of the cool things about Spec is that it's built at a rather low level. It is made to be used as a collection of tools for more powerful things. In short, you should make use of those tools in whatever way helps you out.
In this issue, I've put together links to tools that build on top of Clojure Spec. Some help you define specs more easily, some help you test, and some are for error reporting. But they all show how useful having a powerful, low-level tools can be if you can build on top of it.
Please enjoy the issue.
PS Do you have any tools that you use? Let me know!
All about clojure.set From the archives
I wrote this little article about the functions available in clojure.set a while ago, but it's still a good resource.
This tool lets you generate test data according to schemas that are complex and nested.
Bruce Hauman created a spec that will check for misspelled keys in your map.
Expound gives you some tools for making human-oriented error messages from Spec errors.
This looks like a cool library for generating user-centered (not programmer-centered) error messages for use with form validation.
Lots of powerful, spec-fueled macros. Just what Spec was built for: easily define specs for functions and have them tested.
A library for turning example data into specs.
Instrument your function specs, testing the
Clojure Collections Currently recording
I recorded five more lessons in Clojure Collections and these access patterns really show how well-designed Clojure is as a language. One of the things most big companies ask in interviews is about algorithmic complexity. It's directly related to scalability. Clojure places the algorithmic complexity front and center. It's one of the reasons learning Clojure makes you a better programmer.