Recursion LISP中的let语法错误

Recursion LISP中的let语法错误,recursion,lisp,let,Recursion,Lisp,Let,我在尝试运行代码时不断遇到此错误: (let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x))))) 错误: let: bad syntax in: (let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x))))) 我的函数应该定义递归求幂,但let有问题。lambda前面缺少一个圆括号,let表单缺少一个主体。此外,不能使用let定义递归函数;对于Scheme,您需要

我在尝试运行代码时不断遇到此错误:

(let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))
错误:

let: bad syntax in: (let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))

我的函数应该定义递归求幂,但let有问题。

lambda前面缺少一个圆括号,let表单缺少一个主体。此外,不能使用let定义递归函数;对于Scheme,您需要使用letrec;对于Common Lisp,您需要使用标签。也许你是指这个计划:

(letrec ((exp (lambda (x y)
                (if (= y 1) x
                    (* (exp x (- y 1)) x)))))
  exp)

lambda前面缺少一个左括号,let表单缺少一个主体。此外,不能使用let定义递归函数;对于Scheme,您需要使用letrec;对于Common Lisp,您需要使用标签。也许你是指这个计划:

(letrec ((exp (lambda (x y)
                (if (= y 1) x
                    (* (exp x (- y 1)) x)))))
  exp)

@RainerJoswig错误消息中出现的短语bad syntax在很大程度上是正在使用的Scheme的一个死赠品-@克里斯·杰斯特·杨:是的,但是哪一个呢?我不想猜测正在使用的是什么,而是把这些信息作为问题的一部分。例如,他是否在与某种“命名let”进行斗争?@RainerJoswig错误消息中出现的短语bad syntax几乎是正在使用的Scheme的一种致命的泄露-@克里斯·杰斯特·杨:是的,但是哪一个呢?我不想猜测正在使用的是什么,而是把这些信息作为问题的一部分。例如,他是否与某种“命名let”斗争?