since a data structure might contain nil, test for emptiness of input ex...

...plicitly.

The parser combinators here can be used on more than just strings, as the readme acknowledges, but if you use it to parse clojure data structures (lists etc.), then, since they might *contain* `nil`, `if-let [tok (first input)] ...)` will occasionally consider the input empty even when it is not.