"((p X) (q (f X)))"
- строка в Лиспе. Строки заключены в "
.
LIST
создает список с аргументами в качестве элементов.
Итак, (list "((p X) (q (f X)))")
создает список со строкой в качестве элемента.
INTERN
создает символ.
(intern "((p X) (q (f X)))")
создает символ со строковым аргументом в качестве имени. В Common Lisp символы могут иметь произвольные имена, включая такие символы, как (
и )
. Такие символы печатаются в |
. Пример: |((p X) (q (f X)))|
- символ с таким странным именем.
Анализ s-выражения называется чтение в Лиспе. Для этого используются, например, READ
и READ-FROM-STRING
.
.
Существует два основных способа чтения s-выражения:
CL-USER 1 > (read-from-string "((p X) (q (f X)))")
((P X) (Q (F X)))
17
Но вы также можете открыть входной поток на основе строки, используя WITH-INPUT-FROM-STRING
, а затем использовать обычный READ
:
CL-USER 2 > (with-input-from-string (stream "((p X) (q (f X)))")
(read stream))
((P X) (Q (F X)))