build-0.0.1: Build systems a la carte

Safe HaskellNone
LanguageHaskell2010

Build.Rebuilder

Description

Rebuilders take care of deciding whether a key needs to be rebuild and running the corresponding task if need be.

Synopsis

Documentation

type Rebuilder c i k v = k -> v -> Task c k v -> Task (MonadState i) k v Source #

Given a key-value pair and the corresponding task, a rebuilder returns a new task that has access to the build information and can use it to skip rebuilding a key if it is up to date.

perpetualRebuilder :: Rebuilder Monad () k v Source #

Always rebuilds the key.

modTimeRebuilder :: Ord k => Rebuilder Applicative (MakeInfo k) k v Source #

This rebuilder uses modification time to decide whether a key is dirty and needs to be rebuilt. Used by Make.

type MakeInfo k = (Map k Time, Time) Source #

approximationRebuilder :: Ord k => Rebuilder Monad (ApproximationInfo k) k v Source #

This rebuilders uses approximate dependencies to decide whether a key needs to be rebuilt. Used by Excel.

vtRebuilder :: (Eq k, Hashable v) => Rebuilder Monad (VT k v) k v Source #

This rebuilder relies on verifying traces.

stRebuilder :: (Eq k, Hashable v) => Rebuilder Monad (Step, ST k v) k v Source #

This rebuilder relies on version/step traces.

ctRebuilder :: (Eq k, Hashable v) => Rebuilder Monad (CT k v) k v Source #

This rebuilder relies on constructive traces.

dctRebuilder :: (Hashable k, Hashable v) => Rebuilder Monad (DCT k v) k v Source #

This rebuilder relies on deterministic constructive traces.