C言語からGaucheを使おう! (9) Scm_Loadでloadする

こんにちは、鈴木です。

 

「C言語からGaucheを使おう!」シリーズです。

前回の「C言語からGaucheを使おう! (8) Scm_LoadFromPortでloadする」では文字列リテラルから入力ポートを作成し、そこから load する方法を調べました。

今回はファイルに保存された Scheme コードを読み込む方法を調べます。

 

Scm_Load 関数

まずは Scheme コードをファイルに保存しておきます。

カレントディレクトリに a.scm というファイルを作成し、以下の内容を記述します。

合計を求める手続き sum と、平均を求める手続き average を定義しています。

a.scm を読み込むには、以下のようにします。

内容は「C言語からGaucheを使おう! (8) Scm_LoadFromPortでloadする」のサンプルコードとほとんど同じで、sample_load_from_port 関数が sample_load 関数に変わっているだけです。

実行すると、以下の結果が得られます。(※「C言語からGaucheを使おう! (1) コンパイル環境を整える」で作成した Makefile を使用します)

前回同様、出力の 1 行目は「(apply sum '((1 2 3)))」の結果、2 行目が「(apply average '((1 2 3)))」の結果です。

 

load 関数

load 関数を詳しく見ていきましょう。

まず、Scm_AddLoadPath 関数でカレントディレクトリをロードパスに追加しています(初期状態ではカレントディレクトリはロードパスに含まれていません)。

次に Scm_Load 関数を用いて、先ほど作成した a.scm を読み込んでいます。

 

まとめ

今回はファイルとして保存されている Scheme プログラムを読み込む方法を調べました。

今までの内容で Gauche を組み込み言語として使うための準備が整いました。

C 言語で拡張できる他の言語(Ruby や Python、Java など)にも Gauche を組み込めるということですね。

 

Comments are closed, but you can leave a trackback: Trackback URL.