2012-04-03 2 views
2

Я хочу сделать что-то вроде:Схема - Как использовать "." как символ

(car '(. a)) 

и получить

. 

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

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

'. 

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

Любые указания?

ответ

7

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

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

(car '(\. a)) ; returns the same thing as (string->symbol ".") 
(car '(|.| a)) ; likewise 
+0

Спасибо, что помогает разобраться. – Lebowski156

3

EDIT: Это, кажется, работает только в MIT/GNU Scheme.

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

Если a является символом буквальным, вы можете использовать

(car '(. a)) 

или

(car (list '. 'a)) 

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

(car `(. ,a)) 

или

(car (list '. a)) 
+0

Try (автомобиль «(. А)) ... это не работает для меня :(. Это проблема, которую я пытаюсь исправить на самом деле. – Lebowski156

+0

Ха. Работал для меня (MIT/GNU Scheme), но это может быть проблемой реализации. – Taymon

+0

Другой ответ здесь говорит о том, что ваше решение является недействительным синтаксисом ... Кто прав? :) – amindfv

Смежные вопросы