Kahua
- 本家
- KahuaSeminar (臨時)
- 実験室
News
- ド素人とKahua (2007-07-04 13:58:34(+0900))
- Kahua Wish List (2006-09-28 06:48:12(+0900))
- Kahua Bug (2006-11-22 07:51:39(+0900))
- 日誌 (2007-07-04 14:00:20(+0900))
- Enjoy Gauche (2007-07-04 13:59:46(+0900))
Site Info
Kahua開発日記
Enjoy Gauche
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 のインタープリタの対話モード は評価すべき式を対話的に指定するためのもので,おおがかりなプログラムを 編集するものではないからです.