Lisp 让错误出现在方案中

Lisp 让错误出现在方案中,lisp,scheme,Lisp,Scheme,我在scheme中编写了以下代码段 (define (test-for-prime number divisor) (cond (prime? number) (number) (else (let ((next-divisor) (find-next-divisor number (+ 1 divisor))) (test-for-prime (/ number next-divisor) (next-divisor)))))) 但是,我

我在scheme中编写了以下代码段

(define (test-for-prime number divisor)
  (cond (prime? number) (number)
        (else (let ((next-divisor) (find-next-divisor number (+ 1 divisor)))
                 (test-for-prime (/ number next-divisor) (next-divisor))))))
但是,我得到了以下错误

let:in:(下一个除数)中的错误语法(不是绑定的标识符和表达式)


如何更正它?

试试这个版本,它修复了所有语法错误:

你有很多错放的括号。有些人失踪了,有些人搞错了。。。我建议您仔细阅读Scheme教程,并尝试编写一些基本程序来掌握诀窍,特别是
let
特殊表单的文档和正确结构:

(let ([id val-expr] ...) body ...+)
第一个表单从左到右计算val表达式,为每个id创建一个新位置,并将值放入这些位置。然后计算绑定ID的Body。最后一个主体表达式相对于let形式位于尾部位置。根据绑定标识符=,ID必须是不同的


另外,最好使用IDE/编辑器来突出此类问题,并帮助您正确缩进代码。尤其要注意的是,在编写此代码时,不能将变量括在括号中:
(x)
Scheme假设
x
是一个过程,并且您正在调用它。

Let
具有以下语法(例如有两个绑定):

(let ([id val-expr] ...) body ...+)
(let ((<var> <expr>)
      (<var1> <expr1>))
  <body>)
(let ((next-divisor (find-next-divisor number (+ 1 divisor))))
  ;; ...
  )