gpt4 book ai didi

list - LISP:如何从用户那里读取数字并将其存储为列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:39 26 4
gpt4 key购买 nike

我是 lisp 的新手。我正在尝试从用户那里读取数字并将其存储为列表。例如:如果用户输入 1 2 3 4 5,则列表将包含 5 个元素 (1 2 3 4 5)。我试过 (parse-integer(read-line) :junk-allowed t) 但它只返回第一个元素。我应该怎么做?谢谢。

最佳答案

使用读取

最简单的选择是要求用户输入列表(带括号)然后调用 (read) .

第二种选择是自己放置括号:

(read-from-string (concatenate 'string "(" (read-line) ")"))

安全与保障

请注意 Lisp reader 的功率会给你带来麻烦。例如,如果用户键入 #.(start-ww3)而不是 (1 2 3) 在您的提示下,您可能无法及时到达防空洞。

这意味着您必须绑定(bind)*read-eval*在您无法控制的文本上调用 read 时为 nil

重复调用parse-integer

最后可以调用parse-integer在一个循环中

(defun parse-integers (s &optional (start 0))
(loop with num do
(setf (values num start) (parse-integer s :start start :junk-allowed t))
while num collect num))

或递归地:

(defun parse-integers (s &optional (start 0))
(multiple-value-bind (num end)
(parse-integer s :start start :junk-allowed t)
(and num (cons num (parse-integers s end)))))

关于list - LISP:如何从用户那里读取数字并将其存储为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com