hmk-0.9.4: Hmk.lhs-boot
> module Control.Hmk where
>
> type Cmp m a = a -> a -> m Bool
> data Result = TaskSuccess | TaskFailure
> type Task m = m Result
> data Rule m a = Rule { target :: a
> , prereqs :: [a]
> , recipe :: Maybe ([a] -> Task m)
> , isStale :: Cmp m a }
> type DepGraph m a = [Tree m a]
> data Tree m a = Node a (DepGraph m a) (Rule m a)