You are being so terribly tricked by the reader here. x followed by ' is never an identifer.
(define x' 42) is the same as (define x '42) which is the same as (define x 42) But then the terribleness comes in. x' reads a "x" followed by an unfinished expression. So when you do: > x' 42 and then the next thing you type is going to be quoted. Welcome to Racket v6.1.1.6. > (define x 1) > x' 1 > quoteme 'quoteme Robby On Thu, Jan 8, 2015 at 2:15 PM, Greg Hendershott <[email protected]> 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

