Scheme 方案-';应用:非程序';错误

Scheme 方案-';应用:非程序';错误,scheme,Scheme,我有以下计划: (define (myFunc x e) (let loop ((n x) (m e) (acc 2)) (cond ( (eqv? (abs (- ( * (expt -1 (+ acc 1)) (/ (expt n acc) acc) ) ( * (expt -1 (+ acc 1)) (/ (expt n (- acc 1) ) (- acc 1)) ) )) m) (begin (display "result is: "

我有以下计划:

(define (myFunc x e)
  (let loop ((n x) (m e) (acc 2))
    (cond   
    ( (eqv? (abs (-   ( * (expt -1 (+ acc 1)) (/ (expt n acc) acc) )    ( * (expt -1 (+ acc 1)) (/ (expt n (- acc 1) ) (- acc 1)) ) )) m)
      (begin  (display "result is: ") (display acc) #f))
    (else
        (loop (n) (m) (+ acc 1))

    ))
  ))
您可以看到它计算值,检查是否相等,如果不成功,则重复循环

但是,当我运行它时,我得到了错误:

应用:不是一个程序
期望一个可以 应用于参数
给定值:0.5
参数…:[无]

指向“else”语句后的循环(n)部分。 为什么会这样


谢谢

n
m
是(我想)数字,而不是程序。你不能给他们打电话。然而,当你说
(n)
(m)
时,这正是你想要做的。它相当于JavaScript中的表达式
n()
m()


记住,在Scheme中,
(foo-bar-baz)
相当于JS中的
foo(bar,baz)
,而
(foo)
相当于
foo()
,而
((foo))
相当于
foo()
。你不能随意添加括号。

n
m
是(我想)数字,而不是过程。你不能给他们打电话。然而,当你说
(n)
(m)
时,这正是你想要做的。它相当于JavaScript中的表达式
n()
m()


记住,在Scheme中,
(foo-bar-baz)
相当于JS中的
foo(bar,baz)
,而
(foo)
相当于
foo()
,而
((foo))
相当于
foo()
。你不能随意添加括号。

所以我想我只需要用m和n调用循环而不需要括号?所以我想我只需要用m和n调用循环而不需要括号?