Gaucheで今日理解したこと
ちょっとしかしてないけど。
モジュールニツイテ
(use gauche.interactive) (apropos 'module)
てやるとわかるんだけど、
- (all-modules)
- (current-module)
なんていう関数がある。
それぞれ、
- 現在存在するすべての名前つきモジュールのリスト
- コンパイル時のカレントモジュール
を返す。
後者は特殊形式らしい。うーむどういうことだ。
コンパイル時まで評価されないてことかな。
なぜモジュールについて調べたかというと、
(set! define 1)
てやったあとにどうやって元のdefineに戻すのかわからない。
(set! define (with-module gauche define))
などとしてもだめ。
現在調査中。
定数
「gaucheで最初から束縛されてるグローバル定数てあんのかな」
とついったーで投げたら、
suztomo「define.」
naoya_t「*program-name*とか?」
などと返ってきた。
前者は盲点、というかわからなかった自分が情けない。
「定数の値=数値or文字列」という思考だった。
「関数も変数も一緒」というのはschemeの特徴なのに。だめですね:p
後者は知らなかった。
gosh>*program-name* "/usr/local/bin/gosh" gosh>*load-path* ("/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.8.13/lib")
ほかにもありそうだ。
一覧で出してくれる手続きてのはなさげ。
そのた
パターンマッチ&正規表現がおもしろそう。
これマクロと組合せたらすごいことになるな。
それができてやっとscheme(gauche)の真髄をちょこっと理解できそうだ。
とりあえず理解して逆ポーランドをmatchを使って書き変える。