Common Lisp:未定义的函数k

tgt*_*rmr 2 common-lisp

我是Common Lisp的新手.我尝试建立自己的运营商功能.在第一个函数中,我尝试将一个添加到给定的数字.第二个函数应该以m的频率递归使用第一个函数.当我输入totaladd(5 3)时,我期待一个8.我怎么能对未定义的函数k做什么?和

(defun add1(n)
    (+ n 1)
    )

(write (add1 5))

(defun totaladd (k m)
    (if (eq m 0)
        0
        (totaladd(add1(k) (- m 1)))
    )
)

(write (totaladd 5 3))
Run Code Online (Sandbox Code Playgroud)

Rai*_*wig 5

下一行有三个错误:

(totaladd(add1(k) (- m 1)))
Run Code Online (Sandbox Code Playgroud)

我们来看看吧:

(totaladd                 ; totaladd is a function with two parameters
                          ;  you pass only one argument -> first ERROR
  (add1                   ; add1 is a function with one parameter
                          ;  you pass two arguments -> second ERROR
    (k)                   ; K is a variable, but you call it as a function,
                          ;   but the function K is undefined -> third ERROR
    (- m 1)))
Run Code Online (Sandbox Code Playgroud)