This creates a lazy Trie based on a finite range of Ints and is used to memorize a function over the subsets of this range.
To create a Trie you need two supply 2 things * Range of keys to bound * A function or functions used to construct the value for a subset of keys
The Trie uses the Array type internally.
Documentation
lookupAsc :: TrieSet v -> [Int] -> vSource
This is the accessor for the Trie. The list of keys should be sorted.
:: (Int, Int) | (lower,upper) range of keys, lower<=upper |
-> ([Int] -> v) | Function from list of keys to its value. It must work for distinct ascending lists. |
-> TrieSet v | The constructed Trie |
This is a Trie constructor for a complete range of keys.
:: v | value for (lookupAsc trie []) |
-> (v -> v -> v) | merge operation on values |
-> (Int, Int) | (lower,upper) range of keys, lower<=upper |
-> (Int -> v) | Function from a single key to its value |
-> TrieSet v | The constructed Trie |
This is a Trie constructor for a complete range of keys that uses a function from single values and a merge operation on values to fill the Trie.
:: ([v] -> v) | summation operation for values |
-> (Int, Int) | (lower,upper) range of keys, lower <= upper |
-> (Int -> v) | Function from a single key to its value |
-> TrieSet v | The constructed Trie |
This is a Trie constructor for a complete range of keys that uses a function from single values and a sum operation of values to fill the Trie.