gpt4 book ai didi

lisp - 为什么 Setq 工作但不让?

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

我遵循我的书“Lisp 之地”中的语法,并且 let 版本仅在传递 *string* 时返回 nil。而“setq”版本返回 string 的反转版本。

(defparameter *string* "a b c")
(defun reverse-string (string)
(let (reversed (string))))

(defun setq-reverse-string (string)
(setq reversed (reverse string)))

最佳答案

LET 的语法是:

(LET ((var1 val1)
(var2 val2)
...)
body)

(varN valN) 的位置,您可以只放置 varN,它是 (varN nil) 的简写。您也可以省略 valN,在这种情况下它默认为 nil

所以你的代码等同于:

(defun reverse-string (string)
(let ((reversed nil)
(string nil))))

您缺少一定程度的括号来执行您想要的操作:

(defun reverse-string (string)
(let ((reversed (string)))))

您还缺少对 reverse 的调用,并返回变量

(defun reverse-string (string)
(let ((reversed (reverse string)))
reversed))

关于lisp - 为什么 Setq 工作但不让?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767155/

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