diff options
Diffstat (limited to '')
| -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>))  | 
