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

Nix.Thunk

Synopsis

class MonadThunkId & instances

class (Monad m, Eq (ThunkId m), Ord (ThunkId m), Show (ThunkId m), Typeable (ThunkId m)) => MonadThunkId m where Source #

Minimal complete definition

Nothing

Associated Types

type ThunkId m :: Type Source #

Methods

freshId :: m (ThunkId m) Source #

default freshId :: (MonadThunkId m', MonadTrans t, m ~ t m', ThunkId m ~ ThunkId m') => m (ThunkId m) Source #

Instances

Instances details
MonadThunkId (Lint s) Source # 
Instance details

Defined in Nix.Lint

Associated Types

type ThunkId (Lint s) Source #

Methods

freshId :: Lint s (ThunkId (Lint s)) Source #

MonadThunkId m => MonadThunkId (ExceptT e m) Source # 
Instance details

Defined in Nix.Thunk

Associated Types

type ThunkId (ExceptT e m) Source #

Methods

freshId :: ExceptT e m (ThunkId (ExceptT e m)) Source #

MonadThunkId m => MonadThunkId (StateT s m) Source # 
Instance details

Defined in Nix.Thunk

Associated Types

type ThunkId (StateT s m) Source #

Methods

freshId :: StateT s m (ThunkId (StateT s m)) Source #

(Monoid w, MonadThunkId m) => MonadThunkId (WriterT w m) Source # 
Instance details

Defined in Nix.Thunk

Associated Types

type ThunkId (WriterT w m) Source #

Methods

freshId :: WriterT w m (ThunkId (WriterT w m)) Source #

MonadThunkId m => MonadThunkId (ReaderT r m) Source # 
Instance details

Defined in Nix.Thunk

Associated Types

type ThunkId (ReaderT r m) Source #

Methods

freshId :: ReaderT r m (ThunkId (ReaderT r m)) Source #

(MonadAtomicRef m, Eq i, Ord i, Show i, Enum i, Typeable i) => MonadThunkId (FreshIdT i m) Source # 
Instance details

Defined in Nix.Fresh

Associated Types

type ThunkId (FreshIdT i m) Source #

Methods

freshId :: FreshIdT i m (ThunkId (FreshIdT i m)) Source #

MonadThunkId m => MonadThunkId (Fix1T StandardTF m) Source # 
Instance details

Defined in Nix.Standard

Associated Types

type ThunkId (Fix1T StandardTF m) Source #

Instances

class MonadThunk

class MonadThunkId m => MonadThunk t m a | t -> m, t -> a where Source #

Methods

thunkId :: t -> ThunkId m Source #

Return thunk ID.

thunk :: m a -> m t Source #

Create new thunk

query :: m a -> t -> m a Source #

Non-blocking query. If thunk got computed then return its value otherwise return default value (1st arg).

force :: t -> m a Source #

forceEff :: t -> m a Source #

further :: t -> m t Source #

Modify the action to be performed by the thunk. For some implicits this modifies the thunk, for others it may create a new thunk.

Instances

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

Defined in Nix.Standard

Methods

thunkId :: StdThunk m -> ThunkId m Source #

thunk :: m (StdValue m) -> m (StdThunk m) Source #

query :: m (StdValue m) -> StdThunk m -> m (StdValue m) Source #

force :: StdThunk m -> m (StdValue m) Source #

forceEff :: StdThunk m -> m (StdValue m) Source #

further :: StdThunk m -> m (StdThunk m) Source #

(MonadBasicThunk m, MonadCatch m) => MonadThunk (NThunkF m v) m v Source # 
Instance details

Defined in Nix.Thunk.Basic

Methods

thunkId :: NThunkF m v -> ThunkId m Source #

thunk :: m v -> m (NThunkF m v) Source #

query :: m v -> NThunkF m v -> m v Source #

force :: NThunkF m v -> m v Source #

forceEff :: NThunkF m v -> m v Source #

further :: NThunkF m v -> m (NThunkF m v) Source #

(Has e Options, Framed e m, MonadThunk t m v, Typeable m, Typeable f, Typeable u, MonadCatch m) => MonadThunk (Cited u f m t) m v Source # 
Instance details

Defined in Nix.Cited.Basic

Methods

thunkId :: Cited u f m t -> ThunkId m Source #

thunk :: m v -> m (Cited u f m t) Source #

query :: m v -> Cited u f m t -> m v Source #

force :: Cited u f m t -> m v Source #

forceEff :: Cited u f m t -> m v Source #

further :: Cited u f m t -> m (Cited u f m t) Source #

class MonadThunk

class MonadThunkF t m a | t -> m, t -> a where Source #

Class of Kleisli functors for easiness of customized implementation developlemnt.

Methods

queryF :: (a -> m r) -> m r -> t -> m r Source #

forceF :: (a -> m r) -> t -> m r Source #

forceEffF :: (a -> m r) -> t -> m r Source #

furtherF :: (m a -> m a) -> t -> m t Source #

Instances

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

Defined in Nix.Standard

Methods

queryF :: (StdValue m -> m r) -> m r -> StdThunk m -> m r Source #

forceF :: (StdValue m -> m r) -> StdThunk m -> m r Source #

forceEffF :: (StdValue m -> m r) -> StdThunk m -> m r Source #

furtherF :: (m (StdValue m) -> m (StdValue m)) -> StdThunk m -> m (StdThunk m) Source #

(MonadBasicThunk m, MonadCatch m) => MonadThunkF (NThunkF m v) m v Source # 
Instance details

Defined in Nix.Thunk.Basic

Methods

queryF :: (v -> m r) -> m r -> NThunkF m v -> m r Source #

forceF :: (v -> m r) -> NThunkF m v -> m r Source #

forceEffF :: (v -> m r) -> NThunkF m v -> m r Source #

furtherF :: (m v -> m v) -> NThunkF m v -> m (NThunkF m v) Source #

(Has e Options, Framed e m, MonadThunkF t m v, Typeable m, Typeable f, Typeable u, MonadCatch m) => MonadThunkF (Cited u f m t) m v Source # 
Instance details

Defined in Nix.Cited.Basic

Methods

queryF :: (v -> m r) -> m r -> Cited u f m t -> m r Source #

forceF :: (v -> m r) -> Cited u f m t -> m r Source #

forceEffF :: (v -> m r) -> Cited u f m t -> m r Source #

furtherF :: (m v -> m v) -> Cited u f m t -> m (Cited u f m t) Source #

newtype ThunkLoop

newtype ThunkLoop Source #

Constructors

ThunkLoop Text 

Instances

Instances details
Show ThunkLoop Source # 
Instance details

Defined in Nix.Thunk

Exception ThunkLoop Source # 
Instance details

Defined in Nix.Thunk

Utils