集合としてのリスト

(間違えて自分で自分に付けてしまったスターがどうしても取れない。仕方ないので削除して再度添付)

自由変数を探す find-free-variables を実装中。リストで処理してもいいけど、ぐちゃぐちゃになるので srfi-1 の lset-union を使ってみた。

Gauche はドキュメントがとても整備されているので、毎回こんな感じで探している。

  1. http://practical-scheme.net/gauche/man/gauche-refj_70.html 「必要なライブラリの探し方」をまず見に行って、
  2. http://practical-scheme.net/gauche/man/gauche-refj_70.html#SEC202 「ライブラリディレクトリ - データコンテナ」を見つけて、
  3. http://practical-scheme.net/gauche/man/gauche-refj_102.htmlsrfi-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)