(.module: lux (lux (data [text] (coll [list "list/" Fold] (dictionary ["dict" unordered #+ 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))