incremental-computing-0.0.1.0: src/tools/Utilities.hs
module Utilities (
recompute,
adapt
) where
-- Data
import Data.Incremental
recompute :: (Changeable a, Changeable b)
=> (a -> b)
-> (a, [DefaultChange a]) -> [b]
recompute fun src = map fun (applyChanges src)
adapt :: (Changeable a, Changeable b)
=> (a ->> b)
-> (a, [DefaultChange a]) -> [b]
adapt trans src = applyChanges (runTrans trans src)
applyChanges :: Change p => (Value p, [p]) -> [Value p]
applyChanges (val, changes) = scanl (flip ($$)) val changes