为什么从字符串读取 (+ 4 5 6) 等于 9?

rub*_*ect -2 common-lisp

为什么从字符串中读取会产生无意义的结果?

CL-USER> (read-from-string "(+ 4 5 6)")
(+ 4 5 6)
9
CL-USER> (+ 4 5 6)
15
CL-USER> (eval (read-from-string "(+ 4 5 6)"))
15
CL-USER> 
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 6

来自CLHS >

第二个值position是有界字符串中未读取的第一个字符的索引。该位置可能取决于 的值preserve-whitespace。如果读取了整个字符串,则返回的位置要么是字符串的长度,要么是比字符串的长度大一的位置。

9是字符串的长度"(+ 4 5 6)"

如果字符串中有多个对象,这非常有用。您可以使用此返回的位置作为:start下一次调用中的值。