Many of these come in both generic (set, bag, etc.) and implementation-specific
(ch-set, wb-set, etc.) flavors. In the past, there were performance reasons to
prefer the specific ones when the implementation were known, but that is mostly no longer the case.
The one situation in which you might notice a difference is when doing parallel iteration over two
or more collections; even then, the difference will be small. So I recommend sticking with the
generic ones; I have documented the specific ones here just for completeness.
Yields the elements of seq, which can be of any CL sequence type as well as an FSet seq, or a
set or bag as well — any type for which iterator has a method.
Yields the values returned by it, which must be an FSet stateful iterator.
Yields the elements of fun-iterable, which can be an FSet seq, set, or bag. If :from-end? is true, iterates in reverse order. (Uses a functional iterator. There’s no reason to use this unless you want the from-end? behavior.)
Yields the elements of s.
Yields the elements of s. (Uses a functional iterator. There’s no reason to use this unless you want the from-end? behavior.)
Yields each pair of m as two values.
Yields the pairs of m as two values. (Uses a functional iterator. There’s no reason to use this unless you want the from-end? behavior.)
Yields each element of b repeatedly, as many times as its multiplicity.
Yields each element of b and its multiplicity as two values.
Yields the elements of seq. The keyword parameters start and end can be supplied to restrict the range of the iteration; start is inclusive and defaults to 0, while end is exclusive and defaults to the size of the seq. If from-end? is true, the elements will be yielded in reverse order.
Yields the elements of s. As always, the iteration is in replay order.