build-0.0.1.1: Build systems a la carte

Safe HaskellSafe
LanguageHaskell2010

Build.Task.Wrapped

Description

This whole module is just a tiresome workaround for the lack of impredicative polymorphism. If GHC adds impredicative polymorphism, we can drop it entirely and simplify the rest of the code by removing unnecessary task unwrapping.

Synopsis

Documentation

newtype GTask c k v a Source #

GTask is a generalised Task wrapped in a newtype. It is generalised in the sense that it computes a value of type a given a fetch of type k -> f v.

Constructors

GTask 

Fields

  • runGTask :: forall f. c f => (k -> f v) -> f a
     

Instances

Monad (GTask Monad k v) Source # 

Methods

(>>=) :: GTask Monad k v a -> (a -> GTask Monad k v b) -> GTask Monad k v b #

(>>) :: GTask Monad k v a -> GTask Monad k v b -> GTask Monad k v b #

return :: a -> GTask Monad k v a #

fail :: String -> GTask Monad k v a #

Monad (GTask MonadPlus k v) Source # 

Methods

(>>=) :: GTask MonadPlus k v a -> (a -> GTask MonadPlus k v b) -> GTask MonadPlus k v b #

(>>) :: GTask MonadPlus k v a -> GTask MonadPlus k v b -> GTask MonadPlus k v b #

return :: a -> GTask MonadPlus k v a #

fail :: String -> GTask MonadPlus k v a #

Functor (GTask Monad k v) Source # 

Methods

fmap :: (a -> b) -> GTask Monad k v a -> GTask Monad k v b #

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

Functor (GTask Functor k v) Source # 

Methods

fmap :: (a -> b) -> GTask Functor k v a -> GTask Functor k v b #

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

Functor (GTask Applicative k v) Source # 

Methods

fmap :: (a -> b) -> GTask Applicative k v a -> GTask Applicative k v b #

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

Functor (GTask Alternative k v) Source # 

Methods

fmap :: (a -> b) -> GTask Alternative k v a -> GTask Alternative k v b #

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

Functor (GTask MonadPlus k v) Source # 

Methods

fmap :: (a -> b) -> GTask MonadPlus k v a -> GTask MonadPlus k v b #

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

Applicative (GTask Monad k v) Source # 

Methods

pure :: a -> GTask Monad k v a #

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

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

(*>) :: GTask Monad k v a -> GTask Monad k v b -> GTask Monad k v b #

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

Applicative (GTask Applicative k v) Source # 

Methods

pure :: a -> GTask Applicative k v a #

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

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

(*>) :: GTask Applicative k v a -> GTask Applicative k v b -> GTask Applicative k v b #

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

Applicative (GTask Alternative k v) Source # 

Methods

pure :: a -> GTask Alternative k v a #

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

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

(*>) :: GTask Alternative k v a -> GTask Alternative k v b -> GTask Alternative k v b #

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

Applicative (GTask MonadPlus k v) Source # 

Methods

pure :: a -> GTask MonadPlus k v a #

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

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

(*>) :: GTask MonadPlus k v a -> GTask MonadPlus k v b -> GTask MonadPlus k v b #

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

Alternative (GTask Alternative k v) Source # 

Methods

empty :: GTask Alternative k v a #

(<|>) :: GTask Alternative k v a -> GTask Alternative k v a -> GTask Alternative k v a #

some :: GTask Alternative k v a -> GTask Alternative k v [a] #

many :: GTask Alternative k v a -> GTask Alternative k v [a] #

Alternative (GTask MonadPlus k v) Source # 

Methods

empty :: GTask MonadPlus k v a #

(<|>) :: GTask MonadPlus k v a -> GTask MonadPlus k v a -> GTask MonadPlus k v a #

some :: GTask MonadPlus k v a -> GTask MonadPlus k v [a] #

many :: GTask MonadPlus k v a -> GTask MonadPlus k v [a] #

MonadPlus (GTask MonadPlus k v) Source # 

Methods

mzero :: GTask MonadPlus k v a #

mplus :: GTask MonadPlus k v a -> GTask MonadPlus k v a -> GTask MonadPlus k v a #

type Wrapped c k v = (k -> GTask c k v v) -> GTask c k v v Source #

unwrap :: forall c k v. Wrapped c k v -> Task c k v Source #