Thank you, Alex and Andy. This answers my question regarding leading digit 
in keywords.


Alex,
You describe an error with autoresolved keywords in my example. Is this 
also true of the second example I posted (in response to Justin), which 
does not use the user namespace? Am I correct to use double-quote inside a 
namespace, and double-quote, namespace-alias, slash when using the keyword 
in another namespace?

Thank you!



On Tuesday, January 29, 2019 at 7:40:51 PM UTC-8, Alex Miller wrote:
>
> There are two interrelated issues here.
>
> First, when you are using autoresolved keywords, the qualifier part must 
> be an alias. Here it is a fully-qualified namespace (user). Instead, you 
> should be using :user/015-00. Note that before Clojure 1.10, this would not 
> produce an error - this was an oversight that was tightened up in 1.10.
>
> :user/015-00 introduces the second error. Keywords with a leading digit 
> were not originally legal (according to the reader reference), but have 
> been grandfathered in (like :1st, etc). However, qualified keywords with a 
> digit name have never been accepted by the reader and this is kind of an 
> unresolved issue.
>
>
> On Tuesday, January 29, 2019 at 4:52:09 PM UTC-6, Philip Markgraf wrote:
>>
>> I am moving some code to use spec and namespaced keywords under Clojure 
>> 1.10.0 (release). One group of keywords starts with a numeric character 
>> after the colon, which has worked fine in the non-namespaced context. 
>> Creating and using the namespaced keyword works correctly in the local 
>> namespace (using only the double-colon), but fails with "Invalid Token" 
>> when dereferencing from another workspace.
>>
>> I'm not sure if this is a bug or if I have been taking advantage of an 
>> undocumented/unsupported feature.
>> Having a leading-digit keyword has been very useful, as the names are an 
>> exacting fit of the problem domain and don't suffer from the addition of 
>> any visual pollution.
>>
>> user=> (def example-a {:015-00 "015-00"})
>> #'user/example-a
>> user=> (def example-b {::015-00 "015-00"})
>> #'user/example-b
>> user=> (:015-00 example-a)
>> "015-00"
>> user=> (:015-00 example-b)
>> nil
>> user=> (::015-00 example-b)
>> "015-00"
>> user=> (::015-00 example-a)
>> nil
>> user=> (ns try) 
>> nil
>> try=> (:015-00 user/example-a)
>> "015-00"
>> try=> (::user/015-00 user/example-b)
>>
>> Syntax error reading source at (REPL:1:15).
>> Invalid token: ::user/015-00
>> Syntax error reading source at (REPL:1:31).
>> Unmatched delimiter: )
>> try=>
>>
>> The current behavior is certainly inconsistent, even if it is not a 
>> serious bug.
>>
>> Thank you!
>>
>>
>>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to