[racket] Racketrivia: Using ' as an identifier suffix

From: Jon Zeppieri (zeppieri at gmail.com)
Date: Thu Jan 8 15:51:20 EST 2015

When it's at the end of an identifier, it's pretty clear. There's no
good reason to put a single-quote there. -Jon

On Thu, Jan 8, 2015 at 3:45 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> That's a scary convention. It's hard for humans to see the difference!
>
> On Thu, Jan 8, 2015 at 2:32 PM, Jon Zeppieri <zeppieri at gmail.com> wrote:
>> You can use the unicode prime character (′) as a suffix. In DrRacket,
>> you can type that as \prime followed by ctrl-\. It would be a lot
>> nicer to map it to a simple key combo like λ is,
>>
>> -Jon
>>
>>
>> On Thu, Jan 8, 2015 at 3:15 PM, Greg Hendershott
>> <greghendershott at gmail.com> wrote:
>>> So Haskell conventionally uses ' as a suffix, prime. From what I've
>>> seen, Scheme and Racket tend to use * instead.
>>>
>>> At some point I "learned" that you cannot use ' as a suffix in Racket.
>>>
>>> Today I tried again, and was surprised to see that it works... somewhat.
>>>
>>> $ racket
>>> Welcome to Racket v6.1.1.6.
>>> -> (define x' 42)
>>> -> x'
>>> 42
>>> -> (+ x' 10)
>>> '(+ x '10)
>>> -> (+ 10 x')
>>> ; readline-input:4:8: read: unexpected `)'
>>> -> (+ 10 x' )
>>> ; readline-input:5:8: read: unexpected `)'
>>>
>>>
>>> 0. It turns out x' _is_ a valid identifier, and it self-evaluates just
>>> fine. Interesting.
>>>
>>> 1. I don't understand why (+ x' 10) evaluates not to 52, and not even
>>> an error, but... '(+ x '10).  WAT.
>>>
>>> 2. Less surprising to me is that (+ 10 x') and even (+ 10 x' ) are
>>> errors. But actually, I wonder why the reader (or lexer?) couldn't
>>> handle ' followed by a character that can't be part of an identifier?
>>>
>>>
>>> p.s. I'm not proposing this would be a great suffix style to use.
>>> Quick, distinguish x' from 'x ! And don't type one when you mean the
>>> other! I get that. Even so, I'm curious.
>>> ____________________
>>>   Racket Users list:
>>>   http://lists.racket-lang.org/users
>>
>> ____________________
>>   Racket Users list:
>>   http://lists.racket-lang.org/users


Posted on the users mailing list.