Контракт здесь не является точным, но отмечается в начале документации , что:
- Все хеш-наборы реализуют set-> stream, set-пусто ?, set-member ?, set-count, subset ?, Proper-subset ?, set-map, set-for-each, set-copy, set-copy-clear, set-> list и set-first.
- Неизменяемые хэш-наборы дополнительно реализуют набор-добавление, набор-удаление, удаление-набор, объединение наборов, набор-пересечение, набор-вычитание и набор-симметричную разность.
- Изменяемые хэш-множества, кроме того, реализуют set-add !, set-remove !, set-clear !, set-union, set-intersect !, set-subtract !, и set-симметричной-разности !.
Однако я думаю, что документация может быть улучшена.
Если вы хотите увидеть реализацию наборов, здесь где изменяемые наборы запрещают set-union
.
Обратите внимание, однако, что хорошо иметь (mutable-set)
в не первой позиции (и это явно задокументировано в документации).Например, это работает:
> (set-union (set) (mutable-set 1 2 3) (mutable-set 4 5 6))
(set 1 5 3 2 6 4)