Portability | Haskell 2010 |
---|---|

Stability | experimental |

Maintainer | Luke Palmer <lrpalmer@gmail.com> |

Safe Haskell | Safe-Inferred |

Provides a minimal infinite, lazy trie for integral types. It intentionally leaves out ideas such as delete and emptiness so that it can be used lazily, eg. as the target of an infinite foldr. Essentially its purpose is to be an efficient implementation of a function from integral type, given point-at-a-time modifications.

- data IntTrie a
- identity :: (Num a, Bits a) => IntTrie a
- apply :: (Ord b, Num b, Bits b) => IntTrie a -> b -> a
- modify :: (Ord b, Num b, Bits b) => b -> (a -> a) -> IntTrie a -> IntTrie a
- modify' :: (Ord b, Num b, Bits b) => b -> (a -> a) -> IntTrie a -> IntTrie a
- overwrite :: (Ord b, Num b, Bits b) => b -> a -> IntTrie a -> IntTrie a

# Documentation

A trie from integers to values of type a.

Semantics: [[IntTrie a]] = Integer -> a

apply :: (Ord b, Num b, Bits b) => IntTrie a -> b -> aSource

Apply the trie to an argument. This is the semantic map.

modify :: (Ord b, Num b, Bits b) => b -> (a -> a) -> IntTrie a -> IntTrie aSource

Modify the function at one point

apply (modify x f t) i | i == x = f (apply t i) | otherwise = apply t i