# (chibi iset constructors)

#### `(iset . args)`

Create a new iset composed of each of the integers in `args`.

#### `(list->iset! ls iset)`

Returns an iset with all integers in the list `ls` added to `iset`, possibly mutating `iset` in the process.

#### `(list->iset ls . opt)`

Returns an iset with all integers in the list `ls`. If the optional argument `iset` is provided, also includes all elements in `iset`, leaving `iset` unchanged.

#### `(iset->node-list a)`

#### `(iset-copy iset)`

Returns a new copy of `iset`.

#### `(iset-copy-node iset)`

#### `(iset-max-end iset)`

#### `(iset-insert-left! iset new)`

#### `(iset-insert-right! iset new)`

#### `(iset-squash-bits! iset)`

#### `(iset-adjoin! iset . ls)`

Returns an iset with the integers in `ls` added to `iset`, possibly mutating `iset` in the process.

#### `(iset-adjoin iset . ls)`

Returns an iset with the integers in `ls` added to `iset`, without changing `iset`.

#### `(%iset-delete1! iset n)`

#### `(iset-delete! iset . args)`

Returns an iset with the integers in `ls` removed (if present) from `iset`, possibly mutating `iset` in the process.

#### `(iset-delete iset . args)`

Returns an iset with the integers in `ls` removed (if present) from `iset`, without changing `iset`.

#### `(iset-map proc iset)`

Returns an iset composed of the integers resulting from applying `proc` to every element of `iset`.

#### `(iset-union2! a b)`

#### `(iset-union! [a b . args])`

#### `(iset-union . args)`

Returns an iset containing all integers which occur in any of the isets `args`. If no `args` are present returns an empty iset.

#### `(iset-intersection! a . args)`

#### `(iset-intersection a . args)`

Returns an iset containing all integers which occur in `a` and every of the isets `args`. If no `args` are present returns `a`.

#### `(iset-difference2! a b)`

#### `(iset-difference! a . args)`

Returns an iset containing all integers which occur in `a`, but removing those which occur in any of the isets `args`. If no `args` are present returns `a`. May mutate `a`.

#### `(iset-difference a . args)`

As above but doesn't change `a`.