Схема - Как использовать "." как символ - PullRequest
2 голосов
/ 03 апреля 2012

Я хочу сделать что-то вроде:

(car '(. a))

и получите

.

в результате.

Например, если вы наберете

'.

в консоль вы получите вывод, который я хочу. Проблема в том, что я не хочу иметь апостроф перед всем этим. в списке.

Любое руководство?

Ответы [ 2 ]

7 голосов
/ 03 апреля 2012

В синтаксисе чтения схемы отдельная точка является особенной. '. не даст вам символ точки; это неверный синтаксис. (Если это работает в вашей реализации, то это просто особенность вашей реализации.)

Вместо этого вы должны избежать этого. В большинстве реализаций Схемы вы можете использовать '|.| или '\..

(car '(\. a))   ; returns the same thing as (string->symbol ".")
(car '(|.| a))  ; likewise
3 голосов
/ 03 апреля 2012

РЕДАКТИРОВАТЬ: Это, кажется, работает только в схеме MIT / GNU.

' создает символ и список литералов.Если вы хотите . в качестве символа, это '..

Если a является литералом символа, вы можете использовать

(car '(. a))

или

(car (list '. 'a))

Если a является переменной, попробуйте

(car `(. ,a))

или

(car (list '. a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...