Избежание двойной кавычки в Common Lisp - PullRequest
8 голосов
/ 14 марта 2012

Как избежать двойных кавычек при конкатенации строки? Например я надеялся

(concatenate 'string "Mama said: " "\"Son, your life is an open book...\"")

дать:

"Mama said: "Son, your life is an open book...""

но вместо этого вернул его с обратной косой чертой как:

"Mama said: \"Son, your life is an open book...\""

1 Ответ

14 голосов
/ 14 марта 2012

Возвращаемое значение печатается читабельно, то есть с использованием представления, которое можно проанализировать с помощью READ в объекте CL.Если вы используете функцию типа PRINC , которая печатает строку как есть, вы увидите, что цитирование сделало то, что вы хотели (внешние кавычки не являются частью строки):

CL-USER> (princ (concatenate 'string "Mama said: " "\"Son, your life is an open book...\""))
Mama said: "Son, your life is an open book..."
"Mama said: \"Son, your life is an open book...\""

Первая строка - результат PRINC, вторая - часть PRINT READ-EVAL-PRINT-LOOP.

...