PurelyFunctional.tv Newsletter 288: Clojure Spec Tools

Issue 288 - August 20, 2018 · Archives · Subscribe

Hi Clojurers,

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.

Rock on!

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.


Specmonstah GitHub

This tool lets you generate test data according to schemas that are complex and nested.


spell-spec GitHub

Bruce Hauman created a spec that will check for misspelled keys in your map.


Expound GitHub

Expound gives you some tools for making human-oriented error messages from Spec errors.


Phrase GitHub

This looks like a cool library for generating user-centered (not programmer-centered) error messages for use with form validation.


[Ghostwheel](h

ttps://github.com/gnl/ghostwheel) GitHub

Lots of powerful, spec-fueled macros. Just what Spec was built for: easily define specs for functions and have them tested.


spec-provider GitHub

A library for turning example data into specs.


Orchestra GitHub

Instrument your function specs, testing the :ret and :fn parameters.


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.