Skip to end of metadata
Go to start of metadata


Inevitably, we regret some decisions. Fix when the opportunity presents itself.


  • The special ops are not namespace qualified
    • should be in clojure ns
  • Simplify require/use


  • Wait for new compiler
  1. Jul 28, 2012

    RE: namespace qualified special ops


    I found this to be surprising at first:

    user=> `[foo nil true false]
    [user/foo nil true false]
    user=> (map class [user/foo nil true false])
    (clojure.lang.Symbol nil java.lang.Boolean java.lang.Boolean)

    I expected

    [user/foo core/nil core/true core/false] ; all symbols

    I wonder if a top-level letmacro could bind nil, true, and false:

    (letmacro [nil clojure.lang.RT/NIL
               true java.lang.Boolean/TRUE
               false java.lang.Boolean/FALSE]


    This would allow me to redefine true, false, nil, etc in my own namespace. Or to create a symbol of them without having to call (symbol "nil") etc

    1. Aug 13, 2012

      This seems that arise from a misunderstanding.

      true, false, and nil are not, and have never been symbols. The come out of the reader as nil, and booleans. They are not "special symbols" and eval to nil and booleans.

      There also seems to be a misunderstanding of letmacro here