mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-22 07:09:17 +02:00
246 lines
4.4 KiB
Markdown
246 lines
4.4 KiB
Markdown
# SRFI 113 - Sets and bags
|
|
|
|
Sets and bags (also known as multisets) are unordered collections that can contain any Scheme object. Sets enforce the constraint that no two elements can be the same in the sense of the set's associated equality predicate; bags do not.
|
|
|
|
See the [SRFI document](http://srfi.schemers.org/srfi-113/srfi-113.html) for more information.
|
|
|
|
# Index
|
|
|
|
- Constructors:
|
|
[`set `](#set)
|
|
[`set-unfold `](#set-unfold)
|
|
[`set-contains? `](#set-contains)
|
|
[`bag`](#bag)
|
|
[`bag-unfold`](#bag-unfold)
|
|
[`bag-contains? `](#bag-contains)
|
|
|
|
- Predicates:
|
|
[`set? `](#set-1)
|
|
[`set-empty? `](#set-empty)
|
|
[`set-disjoint?`](#set-disjoint)
|
|
[`bag? `](#bag-1)
|
|
[`bag-empty? `](#bag-empty)
|
|
[`bag-disjoint?`](#bag-disjoint)
|
|
|
|
- Accessors:
|
|
[`set-member `](#set-member)
|
|
[`set-element-comparator`](#set-element-comparator)
|
|
[`bag-member `](#bag-member)
|
|
[`bag-element-comparator`](#bag-element-comparator)
|
|
|
|
- Updaters:
|
|
[`set-adjoin `](#set-adjoin)
|
|
[`set-adjoin! `](#set-adjoin-1)
|
|
[`set-replace `](#set-replace)
|
|
[`set-replace! `](#set-replace-1)
|
|
[`set-delete `](#set-delete)
|
|
[`set-delete! `](#set-delete-1)
|
|
[`set-delete-all `](#set-delete-all)
|
|
[`set-delete-all! `](#set-delete-all-1)
|
|
[`set-search! `](#set-search)
|
|
[`bag-adjoin `](#bag-adjoin)
|
|
[`bag-adjoin! `](#bag-adjoin-1)
|
|
[`bag-replace `](#bag-replace)
|
|
[`bag-replace! `](#bag-replace-1)
|
|
[`bag-delete `](#bag-delete)
|
|
[`bag-delete! `](#bag-delete-1)
|
|
[`bag-delete-all `](#bag-delete-all)
|
|
[`bag-delete-all! `](#bag-delete-all-1)
|
|
[`bag-search! `](#bag-search)
|
|
|
|
- The whole set:
|
|
[`set-size `](#set-size)
|
|
[`set-find `](#set-find)
|
|
[`set-count `](#set-count)
|
|
[`set-any? `](#set-any)
|
|
[`set-every?`](#set-every)
|
|
[`bag-size `](#bag-size)
|
|
[`bag-find `](#bag-find)
|
|
[`bag-count `](#bag-count)
|
|
[`bag-any? `](#bag-any)
|
|
[`bag-every?`](#bag-every)
|
|
|
|
- Mapping and folding:
|
|
|
|
[`set-map `](#set-map)
|
|
[`set-for-each `](#set-for-each)
|
|
[`set-fold `](#set-fold)
|
|
[`set-filter `](#set-filter)
|
|
[`set-filter! `](#set-filter-1)
|
|
[`set-remove `](#set-remove)
|
|
[`set-remove! `](#set-remove-1)
|
|
[`set-partition `](#set-partition)
|
|
[`set-partition!`](#set-partition-1)
|
|
[`bag-map `](#bag-map)
|
|
[`bag-for-each `](#bag-for-each)
|
|
[`bag-fold `](#bag-fold)
|
|
[`bag-filter `](#bag-filter)
|
|
[`bag-filter! `](#bag-filter-1)
|
|
[`bag-remove `](#bag-remove)
|
|
[`bag-remove! `](#bag-remove-1)
|
|
[`bag-partition `](#bag-partition)
|
|
[`bag-partition!`](#bag-partition-)
|
|
|
|
- Copying and conversion:
|
|
|
|
[`set-copy `](#set-copy)
|
|
[`set->list `](#set->list)
|
|
[`list->set `](#list->set)
|
|
[`list->set!`](#list->set-1)
|
|
[`bag-copy `](#bag-copy)
|
|
[`bag->list `](#bag->list)
|
|
[`list->bag `](#list->bag)
|
|
[`list->bag!`](#list->bag-1)
|
|
|
|
- Subsets:
|
|
set=?
|
|
set<?
|
|
set>?
|
|
set<=?
|
|
set>=?
|
|
bag=?
|
|
bag<?
|
|
bag>?
|
|
bag<=?
|
|
bag>=?
|
|
|
|
- Set theory operations:
|
|
|
|
set-union
|
|
set-intersection
|
|
set-difference
|
|
set-xor
|
|
set-union!
|
|
set-intersection!
|
|
set-difference!
|
|
set-xor!
|
|
bag-union
|
|
bag-intersection
|
|
bag-difference
|
|
bag-xor
|
|
bag-union!
|
|
bag-intersection!
|
|
bag-difference!
|
|
bag-xor!
|
|
|
|
- Additional bag procedures:
|
|
|
|
bag-sum bag-sum! bag-product bag-product!
|
|
bag-unique-size bag-element-count bag-for-each-unique bag-fold-unique
|
|
bag-increment! bag-decrement! bag->set set->bag set->bag!
|
|
bag->alist alist->bag
|
|
|
|
- Comparators:
|
|
|
|
set-comparator
|
|
bag-comparator
|
|
|
|
|
|
# set
|
|
|
|
# set-unfold
|
|
|
|
# set-contains?
|
|
|
|
# bag
|
|
|
|
# bag-unfold
|
|
|
|
# bag-contains?
|
|
|
|
#set?
|
|
#set-empty?
|
|
#set-disjoint?
|
|
#bag?
|
|
#bag-empty?
|
|
#bag-disjoint?
|
|
|
|
#set-member
|
|
#set-element-comparator
|
|
#bag-member
|
|
#bag-element-comparator
|
|
#set-adjoin
|
|
#set-adjoin!
|
|
#set-replace
|
|
#set-replace!
|
|
#set-delete
|
|
#set-delete!
|
|
#set-delete-all
|
|
#set-delete-all!
|
|
#set-search!
|
|
#bag-adjoin
|
|
#bag-adjoin!
|
|
#bag-replace
|
|
#bag-replace!
|
|
#bag-delete
|
|
#bag-delete!
|
|
#bag-delete-all
|
|
#bag-delete-all!
|
|
#bag-search!
|
|
|
|
#set-size
|
|
#set-find
|
|
#set-count
|
|
#set-any?
|
|
#set-every?
|
|
#bag-size
|
|
#bag-find
|
|
#bag-count
|
|
#bag-any?
|
|
#bag-every?
|
|
|
|
#set-map
|
|
#set-for-each
|
|
#set-fold
|
|
#set-filter
|
|
#set-filter!
|
|
#set-remove
|
|
#set-remove!
|
|
#set-partition
|
|
#set-partition!
|
|
#bag-map
|
|
#bag-for-each
|
|
#bag-fold
|
|
#bag-filter
|
|
#bag-remove
|
|
#bag-partition
|
|
#bag-filter!
|
|
#bag-remove!
|
|
#bag-partition!
|
|
|
|
#set-copy
|
|
#set->list
|
|
#list->set
|
|
#list->set!
|
|
#bag-copy
|
|
#bag->list
|
|
#list->bag
|
|
#list->bag!
|
|
|
|
#set=?
|
|
#set<?
|
|
#set>?
|
|
#set<=?
|
|
#set>=?
|
|
#bag=?
|
|
#bag<?
|
|
#bag>?
|
|
#bag<=?
|
|
#bag>=?
|
|
|
|
#set-union
|
|
#set-intersection
|
|
#set-difference
|
|
#set-xor
|
|
#set-union!
|
|
#set-intersection!
|
|
#set-difference!
|
|
#set-xor!
|
|
#bag-union
|
|
#bag-intersection
|
|
#bag-difference
|
|
#bag-xor
|
|
#bag-union!
|
|
#bag-intersection!
|
|
#bag-difference!
|
|
#bag-xor!
|