はじめに
定理証明手習いの流れから、このごろ Gauche をやっています。
repl でリロード時にハマったので書きます。
Haskell の GHCi のように単純ではなかったです。
解決方法
- 使用するファイル全てをモジュール化する
- add-load-path
- use
- reload
使用するファイル全てをモジュール化する
使用するファイルに以下追記します。
ファイル名は foo.scm
とします。
;; モジュールのインタフェースの定義 (define-module foo (use xxx) (use yyy) (export foo1 foo2 foo3) ) ;; モジュール本体 (select-module foo) 。。。本コード。。。 (provide "foo")
add-load-path
ロードパスにファイルのある場所を加えます。相対パスも使えます。
$ rlwrap gosh -i -I "." gosh> (add-load-path "./j-bob/scheme") ("./j-bob/scheme" "." ...) gosh>
use と reload
gosh> (use foo) gosh> (chapter1.example5) 'nil 。。。ファイルの中身を書き換える。。。 gosh> (reload 'foo) ←★シングルクォートがポイント #<undef> gosh> (chapter1.example5) (equal 'flapjack 'nil) gosh>
以上になります