diff options
author | Eduardo Julian | 2017-12-05 22:55:11 -0400 |
---|---|---|
committer | Eduardo Julian | 2017-12-05 22:55:11 -0400 |
commit | 2e86fefe6f15877e8c46a45411a9cbd04b26e2e3 (patch) | |
tree | c95f8c1391b907a3e9076f4eadb831aa274cfbea /new-luxc/source/luxc/cache/influences.lux | |
parent | 0b87f118978e9971828d2c9ccabe685b0c5e4c35 (diff) |
- WIP: Caching.
Diffstat (limited to 'new-luxc/source/luxc/cache/influences.lux')
-rw-r--r-- | new-luxc/source/luxc/cache/influences.lux | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/new-luxc/source/luxc/cache/influences.lux b/new-luxc/source/luxc/cache/influences.lux new file mode 100644 index 000000000..a75e1a7a1 --- /dev/null +++ b/new-luxc/source/luxc/cache/influences.lux @@ -0,0 +1,27 @@ +(.module: + lux + (lux (data [text] + (coll [list "list/" Fold<List>] + [dict #+ Dict])))) + +(type: #export Influences (Dict Text (List Text))) + +(def: #export (track to from) + (-> Text Text Influences Influences) + (|>> (dict.update~ from (list) (|>> (#.Cons to))) + (dict.update~ to (list) id))) + +(def: (effluents module influences) + (-> Text Influences (Maybe (List Text))) + (dict.get module influences)) + +(def: #export (untrack module influences) + (-> Text Influences Influences) + (case (effluents module influences) + (#.Some effluents) + (list/fold untrack (dict.remove module influences) effluents) + + #.None + influences)) + +(def: #export empty Influences (dict.new text.Hash<Text>)) |