集合としてのリスト
(間違えて自分で自分に付けてしまったスターがどうしても取れない。仕方ないので削除して再度添付)
自由変数を探す find-free-variables を実装中。リストで処理してもいいけど、ぐちゃぐちゃになるので srfi-1 の lset-union を使ってみた。
Gauche はドキュメントがとても整備されているので、毎回こんな感じで探している。
- http://practical-scheme.net/gauche/man/gauche-refj_70.html 「必要なライブラリの探し方」をまず見に行って、
- http://practical-scheme.net/gauche/man/gauche-refj_70.html#SEC202 「ライブラリディレクトリ - データコンテナ」を見つけて、
- http://practical-scheme.net/gauche/man/gauche-refj_102.html 「srfi-1 - List library」の「集合としてのリスト」にたどりつく。
こんな感じか。
gosh> (find-free-variables '(lambda (x) (list y z x)) '(list) ()) (z y) gosh> (find-free-variables '(lambda (x) (lambda (y) (list x y z))) '(list) ()) (z) gosh> (find-free-variables '(lambda (x) (lambda (y) (list x y))) '(list) ()) () gosh> (find-free-variables '(lambda (x) (lambda (y z) (list x y))) '(list) ()) () gosh> (find-free-variables '(lambda (x) (lambda (y z) (list x y w))) '(list)