hnix-0.13.1: Haskell implementation of the Nix language
Safe HaskellSafe-Inferred
LanguageHaskell2010

Nix.Value.Monad

Synopsis

MonadValue - a main implementation class

class MonadValue v m where Source #

Methods

defer :: m v -> m v Source #

demand :: v -> m v Source #

inform :: v -> m v Source #

If v is a thunk, inform allows us to modify the action to be performed by the thunk, perhaps by enriching it with scope info, for example.

Instances

Instances details
(MonadThunkId m, MonadAtomicRef m, MonadCatch m) => MonadValue (Symbolic m) m Source # 
Instance details

Defined in Nix.Lint

Methods

defer :: m (Symbolic m) -> m (Symbolic m) Source #

demand :: Symbolic m -> m (Symbolic m) Source #

inform :: Symbolic m -> m (Symbolic m) Source #

(MonadAtomicRef m, MonadCatch m, Typeable m, MonadReader (Context m (StdValue m)) m, MonadThunkId m) => MonadValue (StdValue m) m Source # 
Instance details

Defined in Nix.Standard

Methods

defer :: m (StdValue m) -> m (StdValue m) Source #

demand :: StdValue m -> m (StdValue m) Source #

inform :: StdValue m -> m (StdValue m) Source #

MonadValueF - a Kleisli-able customization class

class MonadValueF v m where Source #

Methods

demandF :: (v -> m r) -> v -> m r Source #

informF :: (m v -> m v) -> v -> m v Source #

Instances

Instances details
(MonadThunkId m, MonadAtomicRef m, MonadCatch m) => MonadValueF (Symbolic m) m Source # 
Instance details

Defined in Nix.Lint

Methods

demandF :: (Symbolic m -> m r) -> Symbolic m -> m r Source #

informF :: (m (Symbolic m) -> m (Symbolic m)) -> Symbolic m -> m (Symbolic m) Source #

(MonadAtomicRef m, MonadCatch m, Typeable m, MonadReader (Context m (StdValue m)) m, MonadThunkId m) => MonadValueF (StdValue m) m Source # 
Instance details

Defined in Nix.Standard

Methods

demandF :: (StdValue m -> m r) -> StdValue m -> m r Source #

informF :: (m (StdValue m) -> m (StdValue m)) -> StdValue m -> m (StdValue m) Source #