Встроенная схема 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);
Я получаю эту ошибку обратно из Chibi: пунктирный список в источнике
Как я могу вызвать процедуру с несколькими параметрами?
1 ответ
Это сделал это:
// (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";
}