Почему одинарная кавычка игнорируется в выражении case? - PullRequest
0 голосов
/ 06 декабря 2018
(case 'x
   [(x) "ex"]
   [('x) "quoted ex"])

Я думал, что результат будет "quoted ex", но на самом деле это "ex".Почему 'x соответствует x, а не 'x?

1 Ответ

0 голосов
/ 06 декабря 2018

В первом случае (x) означает уже в кавычках, из документации (выделено мной):

Выбранное предложение является первымодин с датумом , чья форма quoted равна equal? с результатом val-expr.

Следовательно, ('x) вдвойне-цитировал.Если вы хотите сопоставить второй случай, понадобится что-то вроде этого:

(case ''x
  [(x) "ex"]
  [('x) "quoted ex"])

=> "quoted ex"

Другими словами, первое условие в вашем коде проверяет, является ли (equal? 'x 'x), а второе проверяет (equal? 'x ''x), очевидно, соответствует только первый.

...