Besides the major abstractions we saw earlier in the chapter, there are other smaller, but nevertheless very performance-critical, parts of Clojure that we will see in this section.
Assertions are very useful to catch logical errors in the code during development, but they impose a runtime overhead that you may like to avoid in production environment. Since clojure.core/*assert*
is a compile time var, the assertions can be silenced either by binding *assert*
to false or by using alter-var-root
before the code is loaded. Unfortunately, both the techniques are cumbersome to use. Paul Stadig's library called assertions (https://github.com/pjstadig/assertions) helps with this exact use case by enabling or disabling assertions via command-line argument -ea
to the Java Runtime. You must include it in your Leiningen project.clj
file as a dependency to use it:
:dependencies [;; other dependencies… [pjstadig/assertions "0.1.0"...