встроенная схема chibi: функция схемы вызова с несколькими параметрами из C - PullRequest
0 голосов
/ 17 июня 2019

На следующем сайте показан пример встраивания схемы чиби в программу переменного тока:

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 Ответ

0 голосов
/ 17 июня 2019

Это сделал это:

// (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"; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...