A list of all the patterns I've discovered, as well as what they do.
Retention Distillation (list, (num | [num]) → list)
Keeps elements of the list based on the second argument. If it's a number and positive, it keeps the first n elements of the list, if negative; the last n. If given a list, then its elements are treated as indices to keep.
Rejection Distillation (list, (num | [num]) → list)
The exact inverse of Retention Distillation, dropping the specified elements instead of dropping the rest.
Ferris Distillation (list, num → list)
Shifts the contents of the list by the specified amount, wrapping elements that go "outside" the list.
Deduction Purification (list → list)
Pushes a list containing the indices of values that are considered true by Nature.
Division Dstl. (list, list → list)
Pushes a list containing pairs of values corresponding to the values at that index in each list.
Multiplicative Dstl. (list, list → list)
Pushes a list containing every combination of elements between the two lists.
Impasse Reflection (→ dict)
Creates an empty Dictionary iota.
Accessor's Purification (dict → list)
Pushes a list of the keys present in the Dictionary.
Accessed's Purification (dict → list)
Pushes a list of the values present in the Dictionary.
Entry Purification (dict → list)
Pushes a list of the key-value pairs in this Dictionary, each being a 2 element list.
Length Purification (dict → num)
Pushes the number of entries in the Dictionary
Locator's Distillation (dict, key → any)
Pushes the value present at the provided key, or Null if no value was present.
Excisor's Distillation (dict, key → dict, any)
Removes the key-value pair from the Dictionary, pushing the previous value, or Null if no value was present.
Surgeon's Exaltation (dict, key, any → dict)
Places the iota in the Dictionary at the specified key. Not every iota type is allowed to be used as a key, with notable the exceptions being Garbage and Jump iota. Attempting to set the value of a key to Null will remove the key the same way using Excisor's Distillation would.
Patience
Does nothing, but the tail can be any shape. Useful as a placeholder to be replaced later
Patience Patterns
Some examples of Patience patterns that can be used.
Shard Reflection (→ bool | null)
Pushes if my current sentinel is a Greater Sentinel, or Null if I have no sentinel at all.
Flattening Exaltation (list, num, list → list)
Similar to Surgeon's Exaltation, but replaces the element of the first list instead with the contents of the second list, rather than with the list itself.
Iota Embedding
In my studies, I've discovered a way to... "embed" iota within a hex itself, allowing me to avoid the need to reconstruct them with every cast. This becomes especially useful when combined with casting items, allowing for much faster casts, or simply making the process of using the hex within them easier.
Typically, this process involves starting an Introspection-Retrospection pair, using a placeholder pattern, modifying the list after the fact using Locator's Distillation and Surgeon's Exaltation, and placing a Flock's Disintegration afterwards to access the iota — a very annoying and time-consuming process, certainly. It does seem my forays into this art are viewed favorably by Nature, as I've recently found two patterns for simplifying the process.
Introjection
This pattern can be used to place raw iota directly into an Introspection-Restrospection pair. After drawing this pattern, all subsequent patterns are "unescaped", allowing them to be executed as normal until a Retrojection is encountered.
Retrojection
When used after an Introjection, This pattern puts all iota on the stack into the escaped list, with the previous state of the stack being restored.