Support writing needed extension types

You could probably define a boolean? yourself and just use it.  The following seems to work properly in the REPL:

```clojure
(defn boolean? [x] (or (= x true) (= x false)))
```