[gambit-list] Creating and returning scheme lists inside C
Christian
christian at pflanze.mine.nu
Fri Dec 30 21:44:51 EST 2005
At 3:57 Uhr +0730 31.12.2005, TJay wrote:
>How do I create a scheme list inside a C function, and return that
>list? I couldn't find any documentation on this, so I searched through
>gambit.h and came up with this, which fails to compile due to "___hp"
>being "undeclared".
I've failed to do things like this as well, due to missing knowledge
about those details. (In my gambit->perl interface, I had to use
"trampoline" functions to be able to allocate `values' tuples, which
is nasty since I had to generate one for each of the possible
lengths, alas I limited the possible lengths to 0..10 to be
practical, and am waiting for a better way to do this.)
Gambit-compiled functions do set up such variables in their code. I
guess that ___hp might stand for "heap pointer" and for some reason
(possibly using multiple gambit systems in one program binary?) it is
not a global.
Marc: can you give more info? Which parts of the Gambit source do you
recommend to try to understand first?
> ___S8 one, two, three;
> one = 1;
> two = 2;
> three = 3;
>
> return
> ___CONS(one,
> ___CONS(two,
> ___CONS(three,
> ___NUL)));
Note that you would also have to convert the ___S8 values to
___SCMOBJ, using ___FIX() probably.
>(read) ;So that I can enter the REPL by interrupting the program.
Maybe you would like to use (##repl) instead.
Christian.
More information about the Gambit-list
mailing list