我有以下程序:
(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)部分声明。 为什么会这样?
谢谢!
答案 0 :(得分:3)
n
和m
是(我推测)数字,而不是程序。你不能打电话给他们。然而,当你说(n)
和(m)
时,这正是你想要做的。它等同于JavaScript中的表达式n()
和m()
。
请注意,在Scheme中,(foo bar baz)
相当于JS中foo(bar, baz)
的相似内容,而(foo)
相当于foo()
,((foo))
相当于foo()()
到#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct test_t {
char (*p)[20];
} test;
int main(int argc, char **argv) {
test t;
t.p = malloc(2 * sizeof(*t.p));
strcpy(t.p[0], "hello");
strcpy(t.p[1], "world");
printf("[%s]\n", t.p[0]);
printf("[%s]\n", t.p[1]);
free(t.p);
}
。你不能无缘无故地添加括号。