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