build-0.0.1: Build systems a la carte

Safe HaskellSafe
LanguageHaskell2010

Build.Task.Depend

Description

The "free" structures for dependencies, providing either an applicative interface (for Depend) or a monadic interface (for Depends). By passing them to a suitable Task you can reconstruct all necessary dependencies.

Synopsis

Documentation

data Depend k v r Source #

A list of dependencies, and a function that when applied to those dependencies produces the result.

Constructors

Depend [k] ([v] -> r) 

Instances

Functor (Depend k v) Source # 

Methods

fmap :: (a -> b) -> Depend k v a -> Depend k v b #

(<$) :: a -> Depend k v b -> Depend k v a #

Applicative (Depend k v) Source # 

Methods

pure :: a -> Depend k v a #

(<*>) :: Depend k v (a -> b) -> Depend k v a -> Depend k v b #

liftA2 :: (a -> b -> c) -> Depend k v a -> Depend k v b -> Depend k v c #

(*>) :: Depend k v a -> Depend k v b -> Depend k v b #

(<*) :: Depend k v a -> Depend k v b -> Depend k v a #

data Depends k v r Source #

A list of dependencies, and a function that when applied to those dependencies either the result or more dependencies.

Constructors

Depends [k] ([v] -> Depends k v r) 
Done r 

Instances

Monad (Depends k v) Source # 

Methods

(>>=) :: Depends k v a -> (a -> Depends k v b) -> Depends k v b #

(>>) :: Depends k v a -> Depends k v b -> Depends k v b #

return :: a -> Depends k v a #

fail :: String -> Depends k v a #

Functor (Depends k v) Source # 

Methods

fmap :: (a -> b) -> Depends k v a -> Depends k v b #

(<$) :: a -> Depends k v b -> Depends k v a #

Applicative (Depends k v) Source # 

Methods

pure :: a -> Depends k v a #

(<*>) :: Depends k v (a -> b) -> Depends k v a -> Depends k v b #

liftA2 :: (a -> b -> c) -> Depends k v a -> Depends k v b -> Depends k v c #

(*>) :: Depends k v a -> Depends k v b -> Depends k v b #

(<*) :: Depends k v a -> Depends k v b -> Depends k v a #