читать строку в общем lisp - PullRequest
4 голосов
/ 19 апреля 2011

Я хочу прочитать ввод из STDIN и просто прочитать, что это такое: если ввод - это список, то то, что читается - это список. Однако функция read-line всегда возвращает строку! Например: в интерактивном окружении clisp:

(read-line)

Я ввел:

("(define M ::int )" "(define X ::int )")

Это вернет мне строку:

"(\"(define M ::int )\" \"(define X ::int )\")" ;

То, что я хочу, все еще является исходным списком: ("(define M ::int )" "(define X ::int )")

Итак, как заставить чтение строки прочитать на каком входе это было?

Ответы [ 3 ]

13 голосов
/ 19 апреля 2011

Попробуйте просто с:

(read)

Это должно работать

1 голос
/ 22 апреля 2011
(let ((a read)))
   (eval a))

(+ 2 2 2)

=> 6

есть причина, по которой они называют это ЧИТАТЬ ПЕРЕДАЧНОЙ ПЕЧАТЬ.

0 голосов
/ 20 июля 2014

(read-line) возвращает строку, оканчивающуюся новой строкой.(read) - это анализатор Лиспа.

...