嵌入的chibi-scheme:使用C中的多个参数调用方案函数

时间:2019-06-17 14:36:53

标签: chibi-scheme

以下站点显示了将chibi方案嵌入到c程序中的示例:

http://synthcode.com/scheme/chibi/

/* construct a Scheme expression to eval */
obj1 = sexp_intern(ctx, "my-procedure", -1);
obj2 = sexp_cons(ctx, obj1, SEXP_NULL);
sexp_eval(ctx, obj2, NULL);

该代码段显示了如何调用过程。现在,我试图用一个参数调用一个过程,但是我无法使其正常工作。

我在计划和赤壁上都是新手。这就是我的想法:

obj1 = sexp_intern(ctx, "my-procedure", -1);
obj2 = sexp_make_fixnum(3); 
tmp  = sexp_cons(ctx, obj1, obj2);
sym  = sexp_cons(ctx, tmp, SEXP_NULL);
res  = sexp_eval(ctx, sym, NULL);

我从赤壁那里得到了这个错误:源代码中的虚线列表

如何调用具有多个参数的过程?

1 个答案:

答案 0 :(得分:0)

做到了:

// (define (addValues a) (+ a 5))
obj1 = sexp_intern(ctx, "addValues", -1);
obj2 = sexp_make_fixnum(3); 
tmp  = sexp_list1(ctx, obj2);
tmp  = sexp_cons(ctx, obj1, tmp);
res  = sexp_eval(ctx, tmp, NULL);
if (sexp_numberp(res)) {
    auto x = sexp_unbox_fixnum(res);
    std::cout << "addValues:" << x << "\n"; 
}