source



3. プログラムファイル

3.1. 前章までのおさらい

前章まで,お話したことの奥にある要点は,

  • 数や文字列のような基本的データを表現する
  • 四則演算や文字列演算などの組み込みの関数が使える
  • 式があらわす値に名前をつけられる
  • 共通のふるまいを関数として表現できる

ということでした.強力なプログラミング言語ならどれでもがもつ機能です. そして,Gauche (Scheme) がもつ強力な機能は,

  • 関数は値である

ということです.これについては今はピンとこないかもしれませんが, 先にすすんでいくと自然に理解できるようになります.

3.2. プログラムの保存

さて,前章で mag-cup という関数をつくりましたが,これは,Gauche の対話 モードを終了すると消えてしまいます.せっかく作ったのに...ということに なると悲しいですので,Gauche の対話モードを終了する前に別のウィンドウで エディタを開いて,書いたプログラムをコピー&ペーストしましょう.そして ファイルには適当な名前と拡張子を付けます.たとえば,mag-cup.scm です. 拡張子の scm は Scheme のプログラムを表す拡張しとしてもっともよく使われて いるものです.

3.3. プログラムの読み込み

さて,プログラムを保存したのはいいですが,再びそのプログラムを使いたい ときにはどうすればいいでしょう.それは,load という手続きを使います. さきほどのプログラムファイルが mag-cup.scm が現在のワーキングディレクトリ にあるとすると対話モードのプロンプトがでているところで (load "./mag-cup.scm") とすれば,mag-cup.scm に書かれているプログラムが対話モードのインタープリタ に読み込まれます.

$ gosh
gosh> (load "./mag-cup.scm")
#t

load 関数は指定されたファイルが "/", "./" または "../" で始まっていない 場合は、システムファイルサーチパス(変数*load-path* に格納されています)の 中から該当ファイルが探されます.

*load-path* の値はこのシンボルを評価してみればわかります.たとえば,

gosh> *load-path*
("/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.8/lib")

さて,これがわかれば,まとまったコード量になりそうなプログラムは対話モードの インタープリタ上でいきなりプログラミングするより,エディタでプログラムを 編集して対話モードに読み込むというやり方の方がやりやすいでしょう.

残念ながら Gauche インタープリタの対話モードは編集補助機能(括弧の対応とか, 自動インデントとか)がほとんどありません.Gauche のインタープリタの対話モード は評価すべき式を対話的に指定するためのもので,おおがかりなプログラムを 編集するものではないからです.

Powered by Kahua