We often use names like val|err. If I set *allow-symbol-escape* to false, then my dependencies using symbol escape break. Any workaround besides wrapping the dependency requires with (binding [*allow-symbol-escape* true]?
No workaround you're likely to appreciate.
Clojure 1.12.0-alpha8
user=> `val||||err
user/val|err
user=> `|val||err|
user/val|err
user=>
If we had had tagged literals back when I implemented this, I would have done it differently. This particular technique was taken from CommonLisp, with some simplifications and some modifications to deal with namespaces.In a future version of ClojureCLR, I may actually get around to defining that tagged literal alternative. Then anyone not dealing with backward compatibility can turn off *allow-symbol-escape*. But first I need a long think on how we deal with types, how to get closer to the syntax of the C#/F# world, which means dealing with .Net namespaces, maybe type aliasing, and things under rocks I don't want to turn over.