Overview
Explore Clojure's spec library in this conference talk from Philly ETE 2017. Dive into the world of expressing data constraints without types, learning how spec enhances Clojure by providing a system for declarative specifications of data and functions. Discover the benefits of using specs for validation, documentation, destructuring, instrumentation, data generation, and automatic generative testing. Understand the flexibility of adding specs iteratively or selectively to your programs, and gain insights into predicative and structural aspects of spec. Learn about modeling information, syntax operations, and working with points, lines, and polygons. Explore function specs, enhanced documentation, and robustness through instrumentation and generative testing. Gain practical knowledge on using spec in production, including spec transformation, construction, and testing techniques.
Syllabus
Intro
What are we doing?
Data processing
Clojure and data
The Clojure Promise
Why spec?
Why not types?
Predicative
Structural
Generating from collection specs
Modeling information
Syntax - regex ops
Points and lines
Conforming
Polygons
Functional
Function specs
A function spec
Spec with arg constraint
Spec with args/ret constraint
Enhanced docs
Exercising functions
Robustness
Instrument
Generative testing
Successful check
Failing check
spec in Production
Spec specs
Spec transformation
Spec construction
Spec testing
Taught by
ChariotSolutions