gpt4 book ai didi

lisp - 简单的 LISP 函数不起作用

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

我今天决定学习 LISP,并且已经尝试了一段时间。我写了一个简单的baby函数只是为了测试我的理解,现在明白我的理解并没有像我理解的那样理解。 :D

无论如何,这是函数。这个想法是,当它被调用时,例如(esexp base x) 它应该返回值 base^x。所以 (esexp 3 4) = 3^4 = 81。

(如果重要的话,我正在使用 Common Lisp 的 CMU 实现。)

(defun esexp (base x)
(if (= x 0)
1
(if (< x 0)
(/ esexp (base (+ x 1)) base)
(* esexp (base (+ x 1)) base))))

这行不通。我得到的错误看起来像 (Warning: This variable is undefined: SLBEXP) and (Error in KERNEL::UNBOUND-SYMBOL-ERROR-HANDLER: the variable SLBEXP is unbound.) 所以。我究竟做错了什么?并且会有更好的(或更像 LISP 的方式)来编写这个函数吗?

预计到达时间

更正后的代码:

(defun esexp (base x)
(if (= x 0)
1
(if (< x 0)
(/ (esexp base (+ x 1)) base)
(* (esexp base (- x 1)) base))))

最佳答案

esexp(base (+ x 1))

应该是

(esexp base (+ x 1))

esexp 是一个类似于+ 的函数。调用函数的语法是

(function-name arg1 arg2 ...)

关于lisp - 简单的 LISP 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129735/

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