Hi Andy,

Thanks for this, I hadn't realized there was a ticket and prior discussion. 
I've voted on the ticket and will add a mention of '#' and this thread to 
the ticket. 

All best,
steven

On Tuesday, November 8, 2016 at 11:31:03 AM UTC-5, Andy Fingerhut wrote:
>
> Steven:
>
> Regarding Alex Miller's "Voting" message of today, you could consider 
> voting on this related ticket if you are so inclined: 
> http://dev.clojure.org/jira/browse/CLJ-1527
>
> I just realized that having a warning in a lint tool like Eastwood for 
> using characters other than those explicitly endorsed in the documentation 
> might be useful.  I also suspect a lot of people would want it off by 
> default, given that it might be fairly noisy for some projects.
>
> Andy
>
> On Tue, Nov 8, 2016 at 8:17 AM, Steven Yi <stev...@gmail.com <javascript:>
> > wrote:
>
>> Hi Alex,
>>
>> Thanks for the reply, that was how I understood the intention of that 
>> text as well.  It is ambiguous though, considering the discussion of 
>> auto-gensyms later in the page mentions:
>>
>> "If a symbol is non-namespace-qualified and ends with '#', it is 
>> resolved to a generated symbol with the same name to which '_' and a unique 
>> id have been appended. e.g. x# will resolve to x_123. All references to 
>> that symbol within a syntax-quoted expression resolve to the same generated 
>> symbol."
>>
>> Which is to say, the text describes symbol names and using '#'. 
>>
>> Anyways, I get that '#' usage remains open for interpretation and later 
>> design decisions. I thought maybe because it was already used in 
>> auto-gensyms and because of how read() and syntaxQuote() relate in 
>> LispReader, it might mean that '#' became a definitive part of permitted 
>> symbol name characters. I think a second look at that made me realize it 
>> could still be reinterpreted.
>>
>> So, although I like the use of '#' for my use case, it's easy enough to 
>> revise my design to use a different character here. 
>>
>> That said, wouldn't it better then for the compiler be made more 
>> restrictive now (i.e., only permit symbol names with '#' within syntax 
>> quote)? For example, the following compiles and runs fine in the REPL:
>>
>>  (let [a# 4 b#a 3] (println a# b#3))
>>
>> Because you're telling me I can not depend on '#' for symbols, I will 
>> have to make this change in some released code, where I had been using '#' 
>> in keywords, and that's a breaking change for my API. It would have been 
>> much nicer for me if such reserved things are treated as errors, so that I 
>> don't write valid code now that is at risk of breaking later. 
>>
>> There are also other characters, such as '$', '%', '=', '&', '|', '>', 
>> '<', that also work now but are not listed in the website text regarding 
>> symbol names. Some, like '=', '>', and '<' are in common use as part of 
>> symbol names. ('$' seems often used with as->). As a user, I see one 
>> description in text, but in real world code I see other things in use, and 
>> that makes it confusing. It would be useful (to me at least) to have this 
>> be a little clearer what is reserved and what is not. 
>>
>> Thanks!
>> steven
>>
>>
>>
>> On Monday, November 7, 2016 at 8:38:28 PM UTC-5, Alex Miller wrote:
>>>
>>>
>>>
>>> On Monday, November 7, 2016 at 6:33:49 PM UTC-6, Steven Yi wrote:
>>>>
>>>> Hi All, 
>>>>
>>>> I wanted to understand whether '#' may be treated as a valid character 
>>>> for symbols. The Clojure site [1] has: 
>>>>
>>>> "Symbols begin with a non-numeric character and can contain 
>>>> alphanumeric characters and *, +, !, -, _, ', and ? (other characters 
>>>> may be allowed eventually)." 
>>>>
>>>
>>> The general advice here is that the characters listed here are 
>>> guaranteed to be valid now and in the future. Characters not listed here 
>>> may be accepted now or used within Clojure, but are not guaranteed to work 
>>> in the future.
>>>  
>>>
>>>> I realized I was using # today in a symbol without thinking much of 
>>>> it. However, the syntax highlighting in Vim marked it oddly when it 
>>>> was at the end of the symbol name versus in the middle of the name. 
>>>> (The use case is denoting musical notes using lists of symbols, such 
>>>> as '(c c# d eb) ). 
>>>>
>>>
>>> Same as above - this works now, but is not guaranteed to always be valid.
>>>
>>> auto-gensyms also employ # as part of symbol names, but I do not know 
>>>> if that should be considered a kind of special case. 
>>>>
>>>
>>> Same as above - Clojure may use these symbols to mean special things 
>>> (like auto gensyms in syntax quote), but that right is reserved for Clojure.
>>>  
>>>
>>>> Any clarifications appreciated! 
>>>> steven 
>>>>
>>>> [1] - http://clojure.org/reference/reader 
>>>>
>>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com 
>> <javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> 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+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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