The modules in rebellion/collection provide a wide selection of
different collections. Choosing the right one can be tricky, so this document
aims to make that decision easier. Treat this as guidance rather than
The first question you should ask yourself is, do the items of this collection have keys? Can items be looked up by key? If so, you have a dictionary-like collection, also called a bicollection. There are many different kinds of bicollections that vary in whether or not keys are unique, whether entries are unordered, ordered, or sorted, and whether any type of value can serve as a key or only certain types of values. Bicollections can usually be viewed as a collection of key-value entries.
Instead of using...
An unordered list with no duplicates
An unordered list
A hash whose values are always #true
A hash whose values are positive integers representing frequencies
An unordered list of key-value pairs with no duplicate keys
An unordered list of key-value pairs
A list of key-value pairs where order is significant
A hash whose keys are symbols or strings