2-3 May 2017, Oslo Norway
flatMap(Oslo) a functional programming conference with focus on Scala and the Java Virtual Machine
Looking for 2018?

clojure.spec: a lisp-flavoured type system

Presentation abstract

You can do cool and unexpected things if your entire type system is a first class citizen and accessible at runtime.

With the introduction of spec, Clojure got its own distinct spin on a type system. Just as macros add another -time (runtime and compile time) where the full power of the language can be used, spec does to describing data.

The result is an entire additional type system that is a first class citizen and accessible at runtime that facilitates validation, generative testing (a la QuickCheck), destructuring (pattern matching into deeply nested data), data macros (recursive transformations of data) and a pluginable error system. And then you can start building on top of it.

The talk will be half introduction to spec and the ideas packed within it, and half experience report instrumenting 15k loc production codebase (primarily ETL and analytics) with spec.

Simon Belak

Simon Belak


Simon Belak is the Chief Analytics Officer at GoOpti where he is in charge of making the company data-driven; building analytics infrastructure (end goal: provide any answer stemming from data in 2 min or less); and developing a predictive real-time pricing engine.

Before GoOpti he worked with over 20 startups and growth companies helping them become data driven and set up (or level up) their analytics departments.