[racket] Racketrivia: Using ' as an identifier suffix

From: Greg Hendershott (greghendershott at gmail.com)
Date: Thu Jan 8 15:15:55 EST 2015

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.

Posted on the users mailing list.