libgauche 試す

とりあえず固定なソレを試してみます。色々試行錯誤したんですが以下なソースで

#include <stdio.h>
#include <gauche.h>
#include <gauche/symbol.h>

int main(void)
{
    ScmObj proc;

    Scm_Init(GAUCHE_SIGNATURE);
    proc = Scm_GlobalVariableRef(Scm_SchemeModule(),
                                 SCM_SYMBOL(SCM_INTERN("+")),
                                 0);
    ScmObj r = Scm_ApplyRec(proc, Scm_List(Scm_MakeInteger(1),
                                           Scm_MakeInteger(2)));

    printf("%ld\n", Scm_GetInteger(r));

    return 0;
}

以下でコンパイル。

$ gcc -o test main.c -Wall -g `gauche-config -I` `gauche-config -l` `gauche-config -L`

で、実行したのが以下。

$ ./test
3
$

コンパイルスイッチが全部指定必要とか + に渡す引数を '(1 . 2) ってしたりとか他にも色々ハマッた上に Scm_ApplyRec の戻りが apply した手続きの戻りになるって思ってなくて、試しに実行してみたら 3 が出たのでびっくり。

別途

Scm_ApplyRec 手続きについて確認してみます。今日はいまからブラタモリを見つつ冷えたパスタをナニ。