Functional vs Data-Driven development: a Case-Study in Clojure & OCaml

Petrol: embedding a type-safe SQL API in OCaml using GADTs