While writing a new reader I used
clojure.lang.LispReader code as the reference and I discovered there are two type of spaces:
- pure whitespace (anything that matches
- unvalued stuff (any sequence of: whitespace, comments, discard (
#_), elided conditionals).
This leads to some quirks. For example in namespaced map syntax is:
namespaced-map: "#:" (?! whitespace) unvalued-stuff symbol whitespace map