Clojure, with its dabbling in schemas and rule systems / logic programming (as a substitute for conditional statements) and thanks to its great tools (like figwheel or devcards), could really be establishing a cheaper, "as-good" alternative to static typing and full formal verification.

Instead of encoding constraints as type signatures, the Clojure folks (true to character) encode them in data. In my eyes a very interesting, pragmatic trade-off between expressiveness and automatic verifiability.

> dabbling in schemas and rule systems / logic programming (as a substitute for conditional statements

That sounds interesting. Could you elaborate or post a link?

Quick refs to logic programming and pattern matching in Clojure.

core.logic https://github.com/clojure/core.logic core.match https://github.com/clojure/core.match