SRFI 113 のドラフトが公開されました。この提案では、集合(set)やそれに類する型と、そのインターフェイスを定義しています。Scheme では集合という型がこれまでありそうでなかったのは、実用上リストで集合を表現して済ませていたからだと考えられます。
提案されている仕様のうち、特にいいなと思う部分は set<?
など部分集合についての述語です。順序関係のための述語となっており、2つ以上引数を渡せます。また proper な部分集合かどうかも調べられます。
逆に個人的に気になったのは、set-find
で #f
を探すことができないという点です。理由は明確できちんと説明に記述してありますが、トリッキーな点と言えます。また、set-add!
で要素を追加したときに「それが既に存在していたかどうか」を #t
(もしくは #f
)を返して分かるようになっていると便利かもしれません。set-delete!
がそうなっている分、一見その方が一貫していそうです。これは要素の存在を判定せずに追加できる実装が可能になっているということかもしれませんし、Issues に挙げられている set-intern!
との兼ね合いで議論されるのかもしれません。
参考