essence-of-live-coding-0.2.8: General purpose live coding framework
Safe HaskellNone
LanguageHaskell2010

LiveCoding

Synopsis

Documentation

module Data.Data

stateT :: State stateT stateInternal -> stateT Source #

stateInternal :: State stateT stateInternal -> stateInternal Source #

class Category a => Arrow (a :: Type -> Type -> Type) where #

The basic arrow class.

Instances should satisfy the following laws:

where

assoc ((a,b),c) = (a,(b,c))

The other combinators have sensible default definitions, which may be overridden for efficiency.

Minimal complete definition

arr, (first | (***))

Methods

arr :: (b -> c) -> a b c #

Lift a function to an arrow.

first :: a b c -> a (b, d) (c, d) #

Send the first component of the input through the argument arrow, and copy the rest unchanged to the output.

second :: a b c -> a (d, b) (d, c) #

A mirror image of first.

The default definition may be overridden with a more efficient version if desired.

(***) :: a b c -> a b' c' -> a (b, b') (c, c') infixr 3 #

Split the input between the two argument arrows and combine their output. Note that this is in general not a functor.

The default definition may be overridden with a more efficient version if desired.

(&&&) :: a b c -> a b c' -> a b (c, c') infixr 3 #

Fanout: send the input to both argument arrows and combine their output.

The default definition may be overridden with a more efficient version if desired.

Instances

Instances details
Monad m => Arrow (Cell m) Source # 
Instance details

Defined in LiveCoding.Cell

Methods

arr :: (b -> c) -> Cell m b c #

first :: Cell m b c -> Cell m (b, d) (c, d) #

second :: Cell m b c -> Cell m (d, b) (d, c) #

(***) :: Cell m b c -> Cell m b' c' -> Cell m (b, b') (c, c') #

(&&&) :: Cell m b c -> Cell m b c' -> Cell m b (c, c') #

Monad m => Arrow (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

arr :: (b -> c) -> Kleisli m b c #

first :: Kleisli m b c -> Kleisli m (b, d) (c, d) #

second :: Kleisli m b c -> Kleisli m (d, b) (d, c) #

(***) :: Kleisli m b c -> Kleisli m b' c' -> Kleisli m (b, b') (c, c') #

(&&&) :: Kleisli m b c -> Kleisli m b c' -> Kleisli m b (c, c') #

Arrow p => Arrow (Closure p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

arr :: (b -> c) -> Closure p b c #

first :: Closure p b c -> Closure p (b, d) (c, d) #

second :: Closure p b c -> Closure p (d, b) (d, c) #

(***) :: Closure p b c -> Closure p b' c' -> Closure p (b, b') (c, c') #

(&&&) :: Closure p b c -> Closure p b c' -> Closure p b (c, c') #

Arrow p => Arrow (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

arr :: (b -> c) -> Tambara p b c #

first :: Tambara p b c -> Tambara p (b, d) (c, d) #

second :: Tambara p b c -> Tambara p (d, b) (d, c) #

(***) :: Tambara p b c -> Tambara p b' c' -> Tambara p (b, b') (c, c') #

(&&&) :: Tambara p b c -> Tambara p b c' -> Tambara p b (c, c') #

Arrow (->)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

arr :: (b -> c) -> b -> c #

first :: (b -> c) -> (b, d) -> (c, d) #

second :: (b -> c) -> (d, b) -> (d, c) #

(***) :: (b -> c) -> (b' -> c') -> (b, b') -> (c, c') #

(&&&) :: (b -> c) -> (b -> c') -> b -> (c, c') #

Arrow p => Arrow (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

arr :: (b -> c) -> WrappedArrow p b c #

first :: WrappedArrow p b c -> WrappedArrow p (b, d) (c, d) #

second :: WrappedArrow p b c -> WrappedArrow p (d, b) (d, c) #

(***) :: WrappedArrow p b c -> WrappedArrow p b' c' -> WrappedArrow p (b, b') (c, c') #

(&&&) :: WrappedArrow p b c -> WrappedArrow p b c' -> WrappedArrow p b (c, c') #

(Arrow p, Arrow q) => Arrow (Product p q) 
Instance details

Defined in Data.Bifunctor.Product

Methods

arr :: (b -> c) -> Product p q b c #

first :: Product p q b c -> Product p q (b, d) (c, d) #

second :: Product p q b c -> Product p q (d, b) (d, c) #

(***) :: Product p q b c -> Product p q b' c' -> Product p q (b, b') (c, c') #

(&&&) :: Product p q b c -> Product p q b c' -> Product p q b (c, c') #

(Applicative f, Arrow p) => Arrow (Tannen f p) 
Instance details

Defined in Data.Bifunctor.Tannen

Methods

arr :: (b -> c) -> Tannen f p b c #

first :: Tannen f p b c -> Tannen f p (b, d) (c, d) #

second :: Tannen f p b c -> Tannen f p (d, b) (d, c) #

(***) :: Tannen f p b c -> Tannen f p b' c' -> Tannen f p (b, b') (c, c') #

(&&&) :: Tannen f p b c -> Tannen f p b c' -> Tannen f p b (c, c') #

(Applicative f, Arrow p) => Arrow (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

arr :: (b -> c) -> Cayley f p b c #

first :: Cayley f p b c -> Cayley f p (b, d) (c, d) #

second :: Cayley f p b c -> Cayley f p (d, b) (d, c) #

(***) :: Cayley f p b c -> Cayley f p b' c' -> Cayley f p (b, b') (c, c') #

(&&&) :: Cayley f p b c -> Cayley f p b c' -> Cayley f p b (c, c') #

(>>>) :: forall {k} cat (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c infixr 1 #

Left-to-right composition

class Arrow a => ArrowChoice (a :: Type -> Type -> Type) where #

Choice, for arrows that support it. This class underlies the if and case constructs in arrow notation.

Instances should satisfy the following laws:

where

assocsum (Left (Left x)) = Left x
assocsum (Left (Right y)) = Right (Left y)
assocsum (Right z) = Right (Right z)

The other combinators have sensible default definitions, which may be overridden for efficiency.

Minimal complete definition

(left | (+++))

Methods

left :: a b c -> a (Either b d) (Either c d) #

Feed marked inputs through the argument arrow, passing the rest through unchanged to the output.

right :: a b c -> a (Either d b) (Either d c) #

A mirror image of left.

The default definition may be overridden with a more efficient version if desired.

(+++) :: a b c -> a b' c' -> a (Either b b') (Either c c') infixr 2 #

Split the input between the two argument arrows, retagging and merging their outputs. Note that this is in general not a functor.

The default definition may be overridden with a more efficient version if desired.

(|||) :: a b d -> a c d -> a (Either b c) d infixr 2 #

Fanin: Split the input between the two argument arrows and merge their outputs.

The default definition may be overridden with a more efficient version if desired.

Instances

Instances details
Monad m => ArrowChoice (Cell m) Source # 
Instance details

Defined in LiveCoding.Cell

Methods

left :: Cell m b c -> Cell m (Either b d) (Either c d) #

right :: Cell m b c -> Cell m (Either d b) (Either d c) #

(+++) :: Cell m b c -> Cell m b' c' -> Cell m (Either b b') (Either c c') #

(|||) :: Cell m b d -> Cell m c d -> Cell m (Either b c) d #

Monad m => ArrowChoice (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

left :: Kleisli m b c -> Kleisli m (Either b d) (Either c d) #

right :: Kleisli m b c -> Kleisli m (Either d b) (Either d c) #

(+++) :: Kleisli m b c -> Kleisli m b' c' -> Kleisli m (Either b b') (Either c c') #

(|||) :: Kleisli m b d -> Kleisli m c d -> Kleisli m (Either b c) d #

ArrowChoice p => ArrowChoice (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

left :: Tambara p b c -> Tambara p (Either b d) (Either c d) #

right :: Tambara p b c -> Tambara p (Either d b) (Either d c) #

(+++) :: Tambara p b c -> Tambara p b' c' -> Tambara p (Either b b') (Either c c') #

(|||) :: Tambara p b d -> Tambara p c d -> Tambara p (Either b c) d #

ArrowChoice (->)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

left :: (b -> c) -> Either b d -> Either c d #

right :: (b -> c) -> Either d b -> Either d c #

(+++) :: (b -> c) -> (b' -> c') -> Either b b' -> Either c c' #

(|||) :: (b -> d) -> (c -> d) -> Either b c -> d #

ArrowChoice p => ArrowChoice (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

left :: WrappedArrow p b c -> WrappedArrow p (Either b d) (Either c d) #

right :: WrappedArrow p b c -> WrappedArrow p (Either d b) (Either d c) #

(+++) :: WrappedArrow p b c -> WrappedArrow p b' c' -> WrappedArrow p (Either b b') (Either c c') #

(|||) :: WrappedArrow p b d -> WrappedArrow p c d -> WrappedArrow p (Either b c) d #

(ArrowChoice p, ArrowChoice q) => ArrowChoice (Product p q) 
Instance details

Defined in Data.Bifunctor.Product

Methods

left :: Product p q b c -> Product p q (Either b d) (Either c d) #

right :: Product p q b c -> Product p q (Either d b) (Either d c) #

(+++) :: Product p q b c -> Product p q b' c' -> Product p q (Either b b') (Either c c') #

(|||) :: Product p q b d -> Product p q c d -> Product p q (Either b c) d #

(Applicative f, ArrowChoice p) => ArrowChoice (Tannen f p) 
Instance details

Defined in Data.Bifunctor.Tannen

Methods

left :: Tannen f p b c -> Tannen f p (Either b d) (Either c d) #

right :: Tannen f p b c -> Tannen f p (Either d b) (Either d c) #

(+++) :: Tannen f p b c -> Tannen f p b' c' -> Tannen f p (Either b b') (Either c c') #

(|||) :: Tannen f p b d -> Tannen f p c d -> Tannen f p (Either b c) d #

(Applicative f, ArrowChoice p) => ArrowChoice (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

left :: Cayley f p b c -> Cayley f p (Either b d) (Either c d) #

right :: Cayley f p b c -> Cayley f p (Either d b) (Either d c) #

(+++) :: Cayley f p b c -> Cayley f p b' c' -> Cayley f p (Either b b') (Either c c') #

(|||) :: Cayley f p b d -> Cayley f p c d -> Cayley f p (Either b c) d #

class Arrow a => ArrowLoop (a :: Type -> Type -> Type) where #

The loop operator expresses computations in which an output value is fed back as input, although the computation occurs only once. It underlies the rec value recursion construct in arrow notation. loop should satisfy the following laws:

extension
loop (arr f) = arr (\ b -> fst (fix (\ (c,d) -> f (b,d))))
left tightening
loop (first h >>> f) = h >>> loop f
right tightening
loop (f >>> first h) = loop f >>> h
sliding
loop (f >>> arr (id *** k)) = loop (arr (id *** k) >>> f)
vanishing
loop (loop f) = loop (arr unassoc >>> f >>> arr assoc)
superposing
second (loop f) = loop (arr assoc >>> second f >>> arr unassoc)

where

assoc ((a,b),c) = (a,(b,c))
unassoc (a,(b,c)) = ((a,b),c)

Methods

loop :: a (b, d) (c, d) -> a b c #

Instances

Instances details
MonadFix m => ArrowLoop (Cell m) Source # 
Instance details

Defined in LiveCoding.Cell

Methods

loop :: Cell m (b, d) (c, d) -> Cell m b c #

MonadFix m => ArrowLoop (Kleisli m)

Beware that for many monads (those for which the >>= operation is strict) this instance will not satisfy the right-tightening law required by the ArrowLoop class.

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

loop :: Kleisli m (b, d) (c, d) -> Kleisli m b c #

ArrowLoop p => ArrowLoop (Closure p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

loop :: Closure p (b, d) (c, d) -> Closure p b c #

ArrowLoop p => ArrowLoop (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

loop :: Tambara p (b, d) (c, d) -> Tambara p b c #

ArrowLoop (->)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

loop :: ((b, d) -> (c, d)) -> b -> c #

ArrowLoop p => ArrowLoop (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

loop :: WrappedArrow p (b, d) (c, d) -> WrappedArrow p b c #

(ArrowLoop p, ArrowLoop q) => ArrowLoop (Product p q) 
Instance details

Defined in Data.Bifunctor.Product

Methods

loop :: Product p q (b, d) (c, d) -> Product p q b c #

(Applicative f, ArrowLoop p) => ArrowLoop (Tannen f p) 
Instance details

Defined in Data.Bifunctor.Tannen

Methods

loop :: Tannen f p (b, d) (c, d) -> Tannen f p b c #

(Applicative f, ArrowLoop p) => ArrowLoop (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

loop :: Cayley f p (b, d) (c, d) -> Cayley f p b c #

data Handling h Source #

Constructors

Handling 

Fields

(<<<) :: forall {k} cat (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c infixr 1 #

Right-to-left composition

newtype ArrowMonad (a :: Type -> Type -> Type) b #

The ArrowApply class is equivalent to Monad: any monad gives rise to a Kleisli arrow, and any instance of ArrowApply defines a monad.

Constructors

ArrowMonad (a () b) 

Instances

Instances details
ArrowPlus a => Alternative (ArrowMonad a)

Since: base-4.6.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

empty :: ArrowMonad a a0 #

(<|>) :: ArrowMonad a a0 -> ArrowMonad a a0 -> ArrowMonad a a0 #

some :: ArrowMonad a a0 -> ArrowMonad a [a0] #

many :: ArrowMonad a a0 -> ArrowMonad a [a0] #

Arrow a => Applicative (ArrowMonad a)

Since: base-4.6.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

pure :: a0 -> ArrowMonad a a0 #

(<*>) :: ArrowMonad a (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b #

liftA2 :: (a0 -> b -> c) -> ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a c #

(*>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b #

(<*) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a a0 #

Arrow a => Functor (ArrowMonad a)

Since: base-4.6.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

fmap :: (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b #

(<$) :: a0 -> ArrowMonad a b -> ArrowMonad a a0 #

ArrowApply a => Monad (ArrowMonad a)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

(>>=) :: ArrowMonad a a0 -> (a0 -> ArrowMonad a b) -> ArrowMonad a b #

(>>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b #

return :: a0 -> ArrowMonad a a0 #

(ArrowApply a, ArrowPlus a) => MonadPlus (ArrowMonad a)

Since: base-4.6.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

mzero :: ArrowMonad a a0 #

mplus :: ArrowMonad a a0 -> ArrowMonad a a0 -> ArrowMonad a a0 #

ArrowChoice a => Selective (ArrowMonad a) 
Instance details

Defined in Control.Selective

Methods

select :: ArrowMonad a (Either a0 b) -> ArrowMonad a (a0 -> b) -> ArrowMonad a b #

class Arrow a => ArrowApply (a :: Type -> Type -> Type) #

Some arrows allow application of arrow inputs to other inputs. Instances should satisfy the following laws:

Such arrows are equivalent to monads (see ArrowMonad).

Minimal complete definition

app

Instances

Instances details
Monad m => ArrowApply (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

app :: Kleisli m (Kleisli m b c, b) c #

ArrowApply p => ArrowApply (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

app :: Tambara p (Tambara p b c, b) c #

ArrowApply (->)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

app :: (b -> c, b) -> c #

ArrowApply p => ArrowApply (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

app :: WrappedArrow p (WrappedArrow p b c, b) c #

class ArrowZero a => ArrowPlus (a :: Type -> Type -> Type) where #

A monoid on arrows.

Methods

(<+>) :: a b c -> a b c -> a b c infixr 5 #

An associative operation with identity zeroArrow.

Instances

Instances details
MonadPlus m => ArrowPlus (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

(<+>) :: Kleisli m b c -> Kleisli m b c -> Kleisli m b c #

ArrowPlus p => ArrowPlus (Closure p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

(<+>) :: Closure p b c -> Closure p b c -> Closure p b c #

ArrowPlus p => ArrowPlus (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

(<+>) :: Tambara p b c -> Tambara p b c -> Tambara p b c #

(ArrowPlus p, ArrowPlus q) => ArrowPlus (Product p q) 
Instance details

Defined in Data.Bifunctor.Product

Methods

(<+>) :: Product p q b c -> Product p q b c -> Product p q b c #

(Applicative f, ArrowPlus p) => ArrowPlus (Tannen f p) 
Instance details

Defined in Data.Bifunctor.Tannen

Methods

(<+>) :: Tannen f p b c -> Tannen f p b c -> Tannen f p b c #

(Applicative f, ArrowPlus p) => ArrowPlus (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

(<+>) :: Cayley f p b c -> Cayley f p b c -> Cayley f p b c #

class Arrow a => ArrowZero (a :: Type -> Type -> Type) where #

Methods

zeroArrow :: a b c #

Instances

Instances details
MonadPlus m => ArrowZero (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

zeroArrow :: Kleisli m b c #

ArrowZero p => ArrowZero (Closure p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

zeroArrow :: Closure p b c #

ArrowZero p => ArrowZero (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

zeroArrow :: Tambara p b c #

ArrowZero p => ArrowZero (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

zeroArrow :: WrappedArrow p b c #

(ArrowZero p, ArrowZero q) => ArrowZero (Product p q) 
Instance details

Defined in Data.Bifunctor.Product

Methods

zeroArrow :: Product p q b c #

(Applicative f, ArrowZero p) => ArrowZero (Tannen f p) 
Instance details

Defined in Data.Bifunctor.Tannen

Methods

zeroArrow :: Tannen f p b c #

(Applicative f, ArrowZero p) => ArrowZero (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

zeroArrow :: Cayley f p b c #

newtype Kleisli (m :: Type -> Type) a b #

Kleisli arrows of a monad.

Constructors

Kleisli 

Fields

Instances

Instances details
Monad m => Category (Kleisli m :: Type -> Type -> Type)

Since: base-3.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

id :: Kleisli m a a #

(.) :: Kleisli m b c -> Kleisli m a b -> Kleisli m a c #

Generic1 (Kleisli m a :: Type -> Type) 
Instance details

Defined in GHC.Internal.Control.Arrow

Associated Types

type Rep1 (Kleisli m a :: Type -> Type)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

type Rep1 (Kleisli m a :: Type -> Type) = D1 ('MetaData "Kleisli" "GHC.Internal.Control.Arrow" "ghc-internal" 'True) (C1 ('MetaCons "Kleisli" 'PrefixI 'True) (S1 ('MetaSel ('Just "runKleisli") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ((FUN 'Many a :: Type -> Type) :.: Rec1 m)))

Methods

from1 :: Kleisli m a a0 -> Rep1 (Kleisli m a) a0 #

to1 :: Rep1 (Kleisli m a) a0 -> Kleisli m a a0 #

Monad m => Arrow (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

arr :: (b -> c) -> Kleisli m b c #

first :: Kleisli m b c -> Kleisli m (b, d) (c, d) #

second :: Kleisli m b c -> Kleisli m (d, b) (d, c) #

(***) :: Kleisli m b c -> Kleisli m b' c' -> Kleisli m (b, b') (c, c') #

(&&&) :: Kleisli m b c -> Kleisli m b c' -> Kleisli m b (c, c') #

Monad m => ArrowApply (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

app :: Kleisli m (Kleisli m b c, b) c #

Monad m => ArrowChoice (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

left :: Kleisli m b c -> Kleisli m (Either b d) (Either c d) #

right :: Kleisli m b c -> Kleisli m (Either d b) (Either d c) #

(+++) :: Kleisli m b c -> Kleisli m b' c' -> Kleisli m (Either b b') (Either c c') #

(|||) :: Kleisli m b d -> Kleisli m c d -> Kleisli m (Either b c) d #

MonadFix m => ArrowLoop (Kleisli m)

Beware that for many monads (those for which the >>= operation is strict) this instance will not satisfy the right-tightening law required by the ArrowLoop class.

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

loop :: Kleisli m (b, d) (c, d) -> Kleisli m b c #

MonadPlus m => ArrowPlus (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

(<+>) :: Kleisli m b c -> Kleisli m b c -> Kleisli m b c #

MonadPlus m => ArrowZero (Kleisli m)

Since: base-2.1

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

zeroArrow :: Kleisli m b c #

Monad m => Choice (Kleisli m) 
Instance details

Defined in Data.Profunctor.Choice

Methods

left' :: Kleisli m a b -> Kleisli m (Either a c) (Either b c) #

right' :: Kleisli m a b -> Kleisli m (Either c a) (Either c b) #

(Distributive f, Monad f) => Closed (Kleisli f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Kleisli f a b -> Kleisli f (x -> a) (x -> b) #

(Monad m, Distributive m) => Mapping (Kleisli m) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => Kleisli m a b -> Kleisli m (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Kleisli m a b -> Kleisli m s t #

(Monad m, Functor m) => Representable (Kleisli m) 
Instance details

Defined in Data.Profunctor.Rep

Associated Types

type Rep (Kleisli m) 
Instance details

Defined in Data.Profunctor.Rep

type Rep (Kleisli m) = m

Methods

tabulate :: (d -> Rep (Kleisli m) c) -> Kleisli m d c #

MonadFix m => Costrong (Kleisli m) 
Instance details

Defined in Data.Profunctor.Strong

Methods

unfirst :: Kleisli m (a, d) (b, d) -> Kleisli m a b #

unsecond :: Kleisli m (d, a) (d, b) -> Kleisli m a b #

Monad m => Strong (Kleisli m) 
Instance details

Defined in Data.Profunctor.Strong

Methods

first' :: Kleisli m a b -> Kleisli m (a, c) (b, c) #

second' :: Kleisli m a b -> Kleisli m (c, a) (c, b) #

Monad m => Traversing (Kleisli m) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

traverse' :: Traversable f => Kleisli m a b -> Kleisli m (f a) (f b) #

wander :: (forall (f :: Type -> Type). Applicative f => (a -> f b) -> s -> f t) -> Kleisli m a b -> Kleisli m s t #

Monad m => Profunctor (Kleisli m) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Kleisli m b c -> Kleisli m a d #

lmap :: (a -> b) -> Kleisli m b c -> Kleisli m a c #

rmap :: (b -> c) -> Kleisli m a b -> Kleisli m a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Kleisli m a b -> Kleisli m a c #

(.#) :: forall a b c q. Coercible b a => Kleisli m b c -> q a b -> Kleisli m a c #

(Monad m, Functor m) => Sieve (Kleisli m) m 
Instance details

Defined in Data.Profunctor.Sieve

Methods

sieve :: Kleisli m a b -> a -> m b #

Alternative m => Alternative (Kleisli m a)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

empty :: Kleisli m a a0 #

(<|>) :: Kleisli m a a0 -> Kleisli m a a0 -> Kleisli m a a0 #

some :: Kleisli m a a0 -> Kleisli m a [a0] #

many :: Kleisli m a a0 -> Kleisli m a [a0] #

Applicative m => Applicative (Kleisli m a)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

pure :: a0 -> Kleisli m a a0 #

(<*>) :: Kleisli m a (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b #

liftA2 :: (a0 -> b -> c) -> Kleisli m a a0 -> Kleisli m a b -> Kleisli m a c #

(*>) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a b #

(<*) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a a0 #

Functor m => Functor (Kleisli m a)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

fmap :: (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b #

(<$) :: a0 -> Kleisli m a b -> Kleisli m a a0 #

Monad m => Monad (Kleisli m a)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

(>>=) :: Kleisli m a a0 -> (a0 -> Kleisli m a b) -> Kleisli m a b #

(>>) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a b #

return :: a0 -> Kleisli m a a0 #

MonadPlus m => MonadPlus (Kleisli m a)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

Methods

mzero :: Kleisli m a a0 #

mplus :: Kleisli m a a0 -> Kleisli m a a0 -> Kleisli m a a0 #

Generic (Kleisli m a b) 
Instance details

Defined in GHC.Internal.Control.Arrow

Associated Types

type Rep (Kleisli m a b)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

type Rep (Kleisli m a b) = D1 ('MetaData "Kleisli" "GHC.Internal.Control.Arrow" "ghc-internal" 'True) (C1 ('MetaCons "Kleisli" 'PrefixI 'True) (S1 ('MetaSel ('Just "runKleisli") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a -> m b))))

Methods

from :: Kleisli m a b -> Rep (Kleisli m a b) x #

to :: Rep (Kleisli m a b) x -> Kleisli m a b #

type Rep1 (Kleisli m a :: Type -> Type)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

type Rep1 (Kleisli m a :: Type -> Type) = D1 ('MetaData "Kleisli" "GHC.Internal.Control.Arrow" "ghc-internal" 'True) (C1 ('MetaCons "Kleisli" 'PrefixI 'True) (S1 ('MetaSel ('Just "runKleisli") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ((FUN 'Many a :: Type -> Type) :.: Rec1 m)))
type Rep (Kleisli m) 
Instance details

Defined in Data.Profunctor.Rep

type Rep (Kleisli m) = m
type Rep (Kleisli m a b)

Since: base-4.14.0.0

Instance details

Defined in GHC.Internal.Control.Arrow

type Rep (Kleisli m a b) = D1 ('MetaData "Kleisli" "GHC.Internal.Control.Arrow" "ghc-internal" 'True) (C1 ('MetaCons "Kleisli" 'PrefixI 'True) (S1 ('MetaSel ('Just "runKleisli") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a -> m b))))

returnA :: Arrow a => a b b #

The identity arrow, which plays the role of return in arrow notation.

(^>>) :: Arrow a => (b -> c) -> a c d -> a b d infixr 1 #

Precomposition with a pure function.

(>>^) :: Arrow a => a b c -> (c -> d) -> a b d infixr 1 #

Postcomposition with a pure function.

(<<^) :: Arrow a => a c d -> (b -> c) -> a b d infixr 1 #

Precomposition with a pure function (right-to-left variant).

(^<<) :: Arrow a => (c -> d) -> a b c -> a b d infixr 1 #

Postcomposition with a pure function (right-to-left variant).

leftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d) #

Any instance of ArrowApply can be made into an instance of ArrowChoice by defining left = leftApp.

class Monad m => Launchable (m :: Type -> Type) where Source #

Monads in which live programs can be launched in IO, for example when you have special effects that have to be handled on every reload.

The only thing necessary is to transform the LiveProgram into one in the IO monad, and the rest is taken care of in the framework.

Instances

Instances details
Launchable IO Source # 
Instance details

Defined in LiveCoding.RuntimeIO.Launch

(Typeable m, Launchable m) => Launchable (HandlingStateT m) Source # 
Instance details

Defined in LiveCoding.RuntimeIO.Launch

(Data e, Finite e, Launchable m) => Launchable (ExceptT e m) Source #

Upon an exception, the program is restarted. To handle or log the exception, see LiveCoding.LiveProgram.Except.

Instance details

Defined in LiveCoding.RuntimeIO.Launch

newtype WrappedArrow (p :: k -> k1 -> Type) (a :: k) (b :: k1) #

Wrap an arrow for use as a Profunctor.

WrappedArrow has a polymorphic kind since 5.6.

Constructors

WrapArrow 

Fields

Instances

Instances details
Category p => Category (WrappedArrow p :: k -> k -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

id :: forall (a :: k). WrappedArrow p a a #

(.) :: forall (b :: k) (c :: k) (a :: k). WrappedArrow p b c -> WrappedArrow p a b -> WrappedArrow p a c #

Arrow p => Arrow (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

arr :: (b -> c) -> WrappedArrow p b c #

first :: WrappedArrow p b c -> WrappedArrow p (b, d) (c, d) #

second :: WrappedArrow p b c -> WrappedArrow p (d, b) (d, c) #

(***) :: WrappedArrow p b c -> WrappedArrow p b' c' -> WrappedArrow p (b, b') (c, c') #

(&&&) :: WrappedArrow p b c -> WrappedArrow p b c' -> WrappedArrow p b (c, c') #

ArrowApply p => ArrowApply (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

app :: WrappedArrow p (WrappedArrow p b c, b) c #

ArrowChoice p => ArrowChoice (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

left :: WrappedArrow p b c -> WrappedArrow p (Either b d) (Either c d) #

right :: WrappedArrow p b c -> WrappedArrow p (Either d b) (Either d c) #

(+++) :: WrappedArrow p b c -> WrappedArrow p b' c' -> WrappedArrow p (Either b b') (Either c c') #

(|||) :: WrappedArrow p b d -> WrappedArrow p c d -> WrappedArrow p (Either b c) d #

ArrowLoop p => ArrowLoop (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

loop :: WrappedArrow p (b, d) (c, d) -> WrappedArrow p b c #

ArrowZero p => ArrowZero (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

zeroArrow :: WrappedArrow p b c #

ArrowChoice p => Choice (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

left' :: WrappedArrow p a b -> WrappedArrow p (Either a c) (Either b c) #

right' :: WrappedArrow p a b -> WrappedArrow p (Either c a) (Either c b) #

ArrowLoop p => Costrong (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

unfirst :: WrappedArrow p (a, d) (b, d) -> WrappedArrow p a b #

unsecond :: WrappedArrow p (d, a) (d, b) -> WrappedArrow p a b #

Arrow p => Strong (WrappedArrow p)

Arrow is Strong Category

Instance details

Defined in Data.Profunctor.Strong

Methods

first' :: WrappedArrow p a b -> WrappedArrow p (a, c) (b, c) #

second' :: WrappedArrow p a b -> WrappedArrow p (c, a) (c, b) #

Arrow p => Profunctor (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> WrappedArrow p b c -> WrappedArrow p a d #

lmap :: (a -> b) -> WrappedArrow p b c -> WrappedArrow p a c #

rmap :: (b -> c) -> WrappedArrow p a b -> WrappedArrow p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> WrappedArrow p a b -> WrappedArrow p a c #

(.#) :: forall a b c q. Coercible b a => WrappedArrow p b c -> q a b -> WrappedArrow p a c #

type (:->) (p :: k -> k1 -> Type) (q :: k -> k1 -> Type) = forall (a :: k) (b :: k1). p a b -> q a b infixr 0 #

(:->) has a polymorphic kind since 5.6.

update :: forall (m :: Type -> Type). Launchable m => LaunchedProgram m -> LiveProgram m -> IO () Source #

Migrate (using hotCodeSwap) the LiveProgram to a new version.

class Profunctor (p :: Type -> Type -> Type) where #

Formally, the class Profunctor represents a profunctor from Hask -> Hask.

Intuitively it is a bifunctor where the first argument is contravariant and the second argument is covariant.

You can define a Profunctor by either defining dimap or by defining both lmap and rmap.

If you supply dimap, you should ensure that:

dimap id idid

If you supply lmap and rmap, ensure:

lmap idid
rmap idid

If you supply both, you should also ensure:

dimap f g ≡ lmap f . rmap g

These ensure by parametricity:

dimap (f . g) (h . i) ≡ dimap g h . dimap f i
lmap (f . g) ≡ lmap g . lmap f
rmap (f . g) ≡ rmap f . rmap g

Minimal complete definition

dimap | lmap, rmap

Methods

dimap :: (a -> b) -> (c -> d) -> p b c -> p a d #

Map over both arguments at the same time.

dimap f g ≡ lmap f . rmap g

lmap :: (a -> b) -> p b c -> p a c #

Map the first argument contravariantly.

lmap f ≡ dimap f id

rmap :: (b -> c) -> p a b -> p a c #

Map the second argument covariantly.

rmapdimap id

Instances

Instances details
Monad m => Profunctor (Cell m) Source # 
Instance details

Defined in LiveCoding.Cell

Methods

dimap :: (a -> b) -> (c -> d) -> Cell m b c -> Cell m a d #

lmap :: (a -> b) -> Cell m b c -> Cell m a c #

rmap :: (b -> c) -> Cell m a b -> Cell m a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Cell m a b -> Cell m a c #

(.#) :: forall a b c q. Coercible b a => Cell m b c -> q a b -> Cell m a c #

Monad m => Profunctor (Kleisli m) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Kleisli m b c -> Kleisli m a d #

lmap :: (a -> b) -> Kleisli m b c -> Kleisli m a c #

rmap :: (b -> c) -> Kleisli m a b -> Kleisli m a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Kleisli m a b -> Kleisli m a c #

(.#) :: forall a b c q. Coercible b a => Kleisli m b c -> q a b -> Kleisli m a c #

Profunctor (CopastroSum p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

dimap :: (a -> b) -> (c -> d) -> CopastroSum p b c -> CopastroSum p a d #

lmap :: (a -> b) -> CopastroSum p b c -> CopastroSum p a c #

rmap :: (b -> c) -> CopastroSum p a b -> CopastroSum p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> CopastroSum p a b -> CopastroSum p a c #

(.#) :: forall a b c q. Coercible b a => CopastroSum p b c -> q a b -> CopastroSum p a c #

Profunctor (CotambaraSum p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

dimap :: (a -> b) -> (c -> d) -> CotambaraSum p b c -> CotambaraSum p a d #

lmap :: (a -> b) -> CotambaraSum p b c -> CotambaraSum p a c #

rmap :: (b -> c) -> CotambaraSum p a b -> CotambaraSum p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> CotambaraSum p a b -> CotambaraSum p a c #

(.#) :: forall a b c q. Coercible b a => CotambaraSum p b c -> q a b -> CotambaraSum p a c #

Profunctor (PastroSum p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

dimap :: (a -> b) -> (c -> d) -> PastroSum p b c -> PastroSum p a d #

lmap :: (a -> b) -> PastroSum p b c -> PastroSum p a c #

rmap :: (b -> c) -> PastroSum p a b -> PastroSum p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> PastroSum p a b -> PastroSum p a c #

(.#) :: forall a b c q. Coercible b a => PastroSum p b c -> q a b -> PastroSum p a c #

Profunctor p => Profunctor (TambaraSum p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

dimap :: (a -> b) -> (c -> d) -> TambaraSum p b c -> TambaraSum p a d #

lmap :: (a -> b) -> TambaraSum p b c -> TambaraSum p a c #

rmap :: (b -> c) -> TambaraSum p a b -> TambaraSum p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> TambaraSum p a b -> TambaraSum p a c #

(.#) :: forall a b c q. Coercible b a => TambaraSum p b c -> q a b -> TambaraSum p a c #

Profunctor p => Profunctor (Closure p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

dimap :: (a -> b) -> (c -> d) -> Closure p b c -> Closure p a d #

lmap :: (a -> b) -> Closure p b c -> Closure p a c #

rmap :: (b -> c) -> Closure p a b -> Closure p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Closure p a b -> Closure p a c #

(.#) :: forall a b c q. Coercible b a => Closure p b c -> q a b -> Closure p a c #

Profunctor (Environment p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

dimap :: (a -> b) -> (c -> d) -> Environment p b c -> Environment p a d #

lmap :: (a -> b) -> Environment p b c -> Environment p a c #

rmap :: (b -> c) -> Environment p a b -> Environment p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Environment p a b -> Environment p a c #

(.#) :: forall a b c q. Coercible b a => Environment p b c -> q a b -> Environment p a c #

Profunctor p => Profunctor (CofreeMapping p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

dimap :: (a -> b) -> (c -> d) -> CofreeMapping p b c -> CofreeMapping p a d #

lmap :: (a -> b) -> CofreeMapping p b c -> CofreeMapping p a c #

rmap :: (b -> c) -> CofreeMapping p a b -> CofreeMapping p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> CofreeMapping p a b -> CofreeMapping p a c #

(.#) :: forall a b c q. Coercible b a => CofreeMapping p b c -> q a b -> CofreeMapping p a c #

Profunctor (FreeMapping p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

dimap :: (a -> b) -> (c -> d) -> FreeMapping p b c -> FreeMapping p a d #

lmap :: (a -> b) -> FreeMapping p b c -> FreeMapping p a c #

rmap :: (b -> c) -> FreeMapping p a b -> FreeMapping p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> FreeMapping p a b -> FreeMapping p a c #

(.#) :: forall a b c q. Coercible b a => FreeMapping p b c -> q a b -> FreeMapping p a c #

Profunctor (Copastro p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

dimap :: (a -> b) -> (c -> d) -> Copastro p b c -> Copastro p a d #

lmap :: (a -> b) -> Copastro p b c -> Copastro p a c #

rmap :: (b -> c) -> Copastro p a b -> Copastro p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Copastro p a b -> Copastro p a c #

(.#) :: forall a b c q. Coercible b a => Copastro p b c -> q a b -> Copastro p a c #

Profunctor (Cotambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

dimap :: (a -> b) -> (c -> d) -> Cotambara p b c -> Cotambara p a d #

lmap :: (a -> b) -> Cotambara p b c -> Cotambara p a c #

rmap :: (b -> c) -> Cotambara p a b -> Cotambara p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Cotambara p a b -> Cotambara p a c #

(.#) :: forall a b c q. Coercible b a => Cotambara p b c -> q a b -> Cotambara p a c #

Profunctor (Pastro p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

dimap :: (a -> b) -> (c -> d) -> Pastro p b c -> Pastro p a d #

lmap :: (a -> b) -> Pastro p b c -> Pastro p a c #

rmap :: (b -> c) -> Pastro p a b -> Pastro p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Pastro p a b -> Pastro p a c #

(.#) :: forall a b c q. Coercible b a => Pastro p b c -> q a b -> Pastro p a c #

Profunctor p => Profunctor (Tambara p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

dimap :: (a -> b) -> (c -> d) -> Tambara p b c -> Tambara p a d #

lmap :: (a -> b) -> Tambara p b c -> Tambara p a c #

rmap :: (b -> c) -> Tambara p a b -> Tambara p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Tambara p a b -> Tambara p a c #

(.#) :: forall a b c q. Coercible b a => Tambara p b c -> q a b -> Tambara p a c #

Profunctor (Baz t) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

dimap :: (a -> b) -> (c -> d) -> Baz t b c -> Baz t a d #

lmap :: (a -> b) -> Baz t b c -> Baz t a c #

rmap :: (b -> c) -> Baz t a b -> Baz t a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Baz t a b -> Baz t a c #

(.#) :: forall a b c q. Coercible b a => Baz t b c -> q a b -> Baz t a c #

Profunctor (Bazaar a) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

dimap :: (a0 -> b) -> (c -> d) -> Bazaar a b c -> Bazaar a a0 d #

lmap :: (a0 -> b) -> Bazaar a b c -> Bazaar a a0 c #

rmap :: (b -> c) -> Bazaar a a0 b -> Bazaar a a0 c #

(#.) :: forall a0 b c q. Coercible c b => q b c -> Bazaar a a0 b -> Bazaar a a0 c #

(.#) :: forall a0 b c q. Coercible b a0 => Bazaar a b c -> q a0 b -> Bazaar a a0 c #

Profunctor p => Profunctor (CofreeTraversing p) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

dimap :: (a -> b) -> (c -> d) -> CofreeTraversing p b c -> CofreeTraversing p a d #

lmap :: (a -> b) -> CofreeTraversing p b c -> CofreeTraversing p a c #

rmap :: (b -> c) -> CofreeTraversing p a b -> CofreeTraversing p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> CofreeTraversing p a b -> CofreeTraversing p a c #

(.#) :: forall a b c q. Coercible b a => CofreeTraversing p b c -> q a b -> CofreeTraversing p a c #

Profunctor (FreeTraversing p) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

dimap :: (a -> b) -> (c -> d) -> FreeTraversing p b c -> FreeTraversing p a d #

lmap :: (a -> b) -> FreeTraversing p b c -> FreeTraversing p a c #

rmap :: (b -> c) -> FreeTraversing p a b -> FreeTraversing p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> FreeTraversing p a b -> FreeTraversing p a c #

(.#) :: forall a b c q. Coercible b a => FreeTraversing p b c -> q a b -> FreeTraversing p a c #

Profunctor (Coyoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

dimap :: (a -> b) -> (c -> d) -> Coyoneda p b c -> Coyoneda p a d #

lmap :: (a -> b) -> Coyoneda p b c -> Coyoneda p a c #

rmap :: (b -> c) -> Coyoneda p a b -> Coyoneda p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Coyoneda p a b -> Coyoneda p a c #

(.#) :: forall a b c q. Coercible b a => Coyoneda p b c -> q a b -> Coyoneda p a c #

Profunctor (Yoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

dimap :: (a -> b) -> (c -> d) -> Yoneda p b c -> Yoneda p a d #

lmap :: (a -> b) -> Yoneda p b c -> Yoneda p a c #

rmap :: (b -> c) -> Yoneda p a b -> Yoneda p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Yoneda p a b -> Yoneda p a c #

(.#) :: forall a b c q. Coercible b a => Yoneda p b c -> q a b -> Yoneda p a c #

Profunctor (Tagged :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Tagged b c -> Tagged a d #

lmap :: (a -> b) -> Tagged b c -> Tagged a c #

rmap :: (b -> c) -> Tagged a b -> Tagged a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Tagged a b -> Tagged a c #

(.#) :: forall a b c q. Coercible b a => Tagged b c -> q a b -> Tagged a c #

Functor w => Profunctor (Cokleisli w) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Cokleisli w b c -> Cokleisli w a d #

lmap :: (a -> b) -> Cokleisli w b c -> Cokleisli w a c #

rmap :: (b -> c) -> Cokleisli w a b -> Cokleisli w a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Cokleisli w a b -> Cokleisli w a c #

(.#) :: forall a b c q. Coercible b a => Cokleisli w b c -> q a b -> Cokleisli w a c #

Functor f => Profunctor (Costar f) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> Costar f b c -> Costar f a d #

lmap :: (a -> b) -> Costar f b c -> Costar f a c #

rmap :: (b -> c) -> Costar f a b -> Costar f a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Costar f a b -> Costar f a c #

(.#) :: forall a b c q. Coercible b a => Costar f b c -> q a b -> Costar f a c #

Profunctor (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> Forget r b c -> Forget r a d #

lmap :: (a -> b) -> Forget r b c -> Forget r a c #

rmap :: (b -> c) -> Forget r a b -> Forget r a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Forget r a b -> Forget r a c #

(.#) :: forall a b c q. Coercible b a => Forget r b c -> q a b -> Forget r a c #

Functor f => Profunctor (Star f) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> Star f b c -> Star f a d #

lmap :: (a -> b) -> Star f b c -> Star f a c #

rmap :: (b -> c) -> Star f a b -> Star f a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Star f a b -> Star f a c #

(.#) :: forall a b c q. Coercible b a => Star f b c -> q a b -> Star f a c #

Profunctor (->) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> (b -> c) -> a -> d #

lmap :: (a -> b) -> (b -> c) -> a -> c #

rmap :: (b -> c) -> (a -> b) -> a -> c #

(#.) :: forall a b c q. Coercible c b => q b c -> (a -> b) -> a -> c #

(.#) :: forall a b c q. Coercible b a => (b -> c) -> q a b -> a -> c #

Contravariant f => Profunctor (Clown f :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Clown f b c -> Clown f a d #

lmap :: (a -> b) -> Clown f b c -> Clown f a c #

rmap :: (b -> c) -> Clown f a b -> Clown f a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Clown f a b -> Clown f a c #

(.#) :: forall a b c q. Coercible b a => Clown f b c -> q a b -> Clown f a c #

Functor f => Profunctor (Joker f :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Joker f b c -> Joker f a d #

lmap :: (a -> b) -> Joker f b c -> Joker f a c #

rmap :: (b -> c) -> Joker f a b -> Joker f a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Joker f a b -> Joker f a c #

(.#) :: forall a b c q. Coercible b a => Joker f b c -> q a b -> Joker f a c #

Profunctor p => Profunctor (Codensity p) 
Instance details

Defined in Data.Profunctor.Ran

Methods

dimap :: (a -> b) -> (c -> d) -> Codensity p b c -> Codensity p a d #

lmap :: (a -> b) -> Codensity p b c -> Codensity p a c #

rmap :: (b -> c) -> Codensity p a b -> Codensity p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Codensity p a b -> Codensity p a c #

(.#) :: forall a b c q. Coercible b a => Codensity p b c -> q a b -> Codensity p a c #

Arrow p => Profunctor (WrappedArrow p) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> WrappedArrow p b c -> WrappedArrow p a d #

lmap :: (a -> b) -> WrappedArrow p b c -> WrappedArrow p a c #

rmap :: (b -> c) -> WrappedArrow p a b -> WrappedArrow p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> WrappedArrow p a b -> WrappedArrow p a c #

(.#) :: forall a b c q. Coercible b a => WrappedArrow p b c -> q a b -> WrappedArrow p a c #

(Profunctor p, Profunctor q) => Profunctor (Product p q) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Product p q b c -> Product p q a d #

lmap :: (a -> b) -> Product p q b c -> Product p q a c #

rmap :: (b -> c) -> Product p q a b -> Product p q a c #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Product p q a b -> Product p q a c #

(.#) :: forall a b c q0. Coercible b a => Product p q b c -> q0 a b -> Product p q a c #

(Profunctor p, Profunctor q) => Profunctor (Sum p q) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Sum p q b c -> Sum p q a d #

lmap :: (a -> b) -> Sum p q b c -> Sum p q a c #

rmap :: (b -> c) -> Sum p q a b -> Sum p q a c #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Sum p q a b -> Sum p q a c #

(.#) :: forall a b c q0. Coercible b a => Sum p q b c -> q0 a b -> Sum p q a c #

(Functor f, Profunctor p) => Profunctor (Tannen f p) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Tannen f p b c -> Tannen f p a d #

lmap :: (a -> b) -> Tannen f p b c -> Tannen f p a c #

rmap :: (b -> c) -> Tannen f p a b -> Tannen f p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Tannen f p a b -> Tannen f p a c #

(.#) :: forall a b c q. Coercible b a => Tannen f p b c -> q a b -> Tannen f p a c #

(Functor f, Profunctor p) => Profunctor (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

dimap :: (a -> b) -> (c -> d) -> Cayley f p b c -> Cayley f p a d #

lmap :: (a -> b) -> Cayley f p b c -> Cayley f p a c #

rmap :: (b -> c) -> Cayley f p a b -> Cayley f p a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Cayley f p a b -> Cayley f p a c #

(.#) :: forall a b c q. Coercible b a => Cayley f p b c -> q a b -> Cayley f p a c #

(Profunctor p, Profunctor q) => Profunctor (Procompose p q) 
Instance details

Defined in Data.Profunctor.Composition

Methods

dimap :: (a -> b) -> (c -> d) -> Procompose p q b c -> Procompose p q a d #

lmap :: (a -> b) -> Procompose p q b c -> Procompose p q a c #

rmap :: (b -> c) -> Procompose p q a b -> Procompose p q a c #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Procompose p q a b -> Procompose p q a c #

(.#) :: forall a b c q0. Coercible b a => Procompose p q b c -> q0 a b -> Procompose p q a c #

(Profunctor p, Profunctor q) => Profunctor (Rift p q) 
Instance details

Defined in Data.Profunctor.Composition

Methods

dimap :: (a -> b) -> (c -> d) -> Rift p q b c -> Rift p q a d #

lmap :: (a -> b) -> Rift p q b c -> Rift p q a c #

rmap :: (b -> c) -> Rift p q a b -> Rift p q a c #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Rift p q a b -> Rift p q a c #

(.#) :: forall a b c q0. Coercible b a => Rift p q b c -> q0 a b -> Rift p q a c #

(Profunctor p, Profunctor q) => Profunctor (Ran p q) 
Instance details

Defined in Data.Profunctor.Ran

Methods

dimap :: (a -> b) -> (c -> d) -> Ran p q b c -> Ran p q a d #

lmap :: (a -> b) -> Ran p q b c -> Ran p q a c #

rmap :: (b -> c) -> Ran p q a b -> Ran p q a c #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Ran p q a b -> Ran p q a c #

(.#) :: forall a b c q0. Coercible b a => Ran p q b c -> q0 a b -> Ran p q a c #

(Profunctor p, Functor f, Functor g) => Profunctor (Biff p f g) 
Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Biff p f g b c -> Biff p f g a d #

lmap :: (a -> b) -> Biff p f g b c -> Biff p f g a c #

rmap :: (b -> c) -> Biff p f g a b -> Biff p f g a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Biff p f g a b -> Biff p f g a c #

(.#) :: forall a b c q. Coercible b a => Biff p f g b c -> q a b -> Biff p f g a c #

newtype Forget r a (b :: k) #

Forget has a polymorphic kind since 5.6.

Constructors

Forget 

Fields

Instances

Instances details
Monoid r => Choice (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Choice

Methods

left' :: Forget r a b -> Forget r (Either a c) (Either b c) #

right' :: Forget r a b -> Forget r (Either c a) (Either c b) #

Cochoice (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Forget r (Either a d) (Either b d) -> Forget r a b #

unright :: Forget r (Either d a) (Either d b) -> Forget r a b #

Representable (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Rep

Associated Types

type Rep (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Rep

type Rep (Forget r :: Type -> Type -> Type) = Const r :: Type -> Type

Methods

tabulate :: (d -> Rep (Forget r :: Type -> Type -> Type) c) -> Forget r d c #

Strong (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Strong

Methods

first' :: Forget r a b -> Forget r (a, c) (b, c) #

second' :: Forget r a b -> Forget r (c, a) (c, b) #

Monoid m => Traversing (Forget m :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

traverse' :: Traversable f => Forget m a b -> Forget m (f a) (f b) #

wander :: (forall (f :: Type -> Type). Applicative f => (a -> f b) -> s -> f t) -> Forget m a b -> Forget m s t #

Profunctor (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> Forget r b c -> Forget r a d #

lmap :: (a -> b) -> Forget r b c -> Forget r a c #

rmap :: (b -> c) -> Forget r a b -> Forget r a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Forget r a b -> Forget r a c #

(.#) :: forall a b c q. Coercible b a => Forget r b c -> q a b -> Forget r a c #

Sieve (Forget r :: Type -> Type -> Type) (Const r :: Type -> Type) 
Instance details

Defined in Data.Profunctor.Sieve

Methods

sieve :: Forget r a b -> a -> Const r b #

Contravariant (Forget r a :: Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

contramap :: (a' -> a0) -> Forget r a a0 -> Forget r a a' #

(>$) :: b -> Forget r a b -> Forget r a a0 #

Functor (Forget r a :: Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

fmap :: (a0 -> b) -> Forget r a a0 -> Forget r a b #

(<$) :: a0 -> Forget r a b -> Forget r a a0 #

Foldable (Forget r a :: Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

fold :: Monoid m => Forget r a m -> m #

foldMap :: Monoid m => (a0 -> m) -> Forget r a a0 -> m #

foldMap' :: Monoid m => (a0 -> m) -> Forget r a a0 -> m #

foldr :: (a0 -> b -> b) -> b -> Forget r a a0 -> b #

foldr' :: (a0 -> b -> b) -> b -> Forget r a a0 -> b #

foldl :: (b -> a0 -> b) -> b -> Forget r a a0 -> b #

foldl' :: (b -> a0 -> b) -> b -> Forget r a a0 -> b #

foldr1 :: (a0 -> a0 -> a0) -> Forget r a a0 -> a0 #

foldl1 :: (a0 -> a0 -> a0) -> Forget r a a0 -> a0 #

toList :: Forget r a a0 -> [a0] #

null :: Forget r a a0 -> Bool #

length :: Forget r a a0 -> Int #

elem :: Eq a0 => a0 -> Forget r a a0 -> Bool #

maximum :: Ord a0 => Forget r a a0 -> a0 #

minimum :: Ord a0 => Forget r a a0 -> a0 #

sum :: Num a0 => Forget r a a0 -> a0 #

product :: Num a0 => Forget r a a0 -> a0 #

Traversable (Forget r a :: Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

traverse :: Applicative f => (a0 -> f b) -> Forget r a a0 -> f (Forget r a b) #

sequenceA :: Applicative f => Forget r a (f a0) -> f (Forget r a a0) #

mapM :: Monad m => (a0 -> m b) -> Forget r a a0 -> m (Forget r a b) #

sequence :: Monad m => Forget r a (m a0) -> m (Forget r a a0) #

Monoid r => Monoid (Forget r a b)

Via Monoid r => (a -> r)

Since: profunctors-5.6.2

Instance details

Defined in Data.Profunctor.Types

Methods

mempty :: Forget r a b #

mappend :: Forget r a b -> Forget r a b -> Forget r a b #

mconcat :: [Forget r a b] -> Forget r a b #

Semigroup r => Semigroup (Forget r a b)

Via Semigroup r => (a -> r)

Since: profunctors-5.6.2

Instance details

Defined in Data.Profunctor.Types

Methods

(<>) :: Forget r a b -> Forget r a b -> Forget r a b #

sconcat :: NonEmpty (Forget r a b) -> Forget r a b #

stimes :: Integral b0 => b0 -> Forget r a b -> Forget r a b #

type Rep (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Rep

type Rep (Forget r :: Type -> Type -> Type) = Const r :: Type -> Type

newtype Costar (f :: k -> Type) (d :: k) c #

Lift a Functor into a Profunctor (backwards).

Costar has a polymorphic kind since 5.6.

Constructors

Costar 

Fields

Instances

Instances details
Applicative f => Cochoice (Costar f) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Costar f (Either a d) (Either b d) -> Costar f a b #

unright :: Costar f (Either d a) (Either d b) -> Costar f a b #

Functor f => Closed (Costar f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Costar f a b -> Costar f (x -> a) (x -> b) #

Functor f => Corepresentable (Costar f) 
Instance details

Defined in Data.Profunctor.Rep

Associated Types

type Corep (Costar f) 
Instance details

Defined in Data.Profunctor.Rep

type Corep (Costar f) = f

Methods

cotabulate :: (Corep (Costar f) d -> c) -> Costar f d c #

Functor f => Costrong (Costar f) 
Instance details

Defined in Data.Profunctor.Strong

Methods

unfirst :: Costar f (a, d) (b, d) -> Costar f a b #

unsecond :: Costar f (d, a) (d, b) -> Costar f a b #

Functor f => Profunctor (Costar f) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> Costar f b c -> Costar f a d #

lmap :: (a -> b) -> Costar f b c -> Costar f a c #

rmap :: (b -> c) -> Costar f a b -> Costar f a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Costar f a b -> Costar f a c #

(.#) :: forall a b c q. Coercible b a => Costar f b c -> q a b -> Costar f a c #

Functor f => Cosieve (Costar f) f 
Instance details

Defined in Data.Profunctor.Sieve

Methods

cosieve :: Costar f a b -> f a -> b #

Distributive (Costar f d) 
Instance details

Defined in Data.Profunctor.Types

Methods

distribute :: Functor f0 => f0 (Costar f d a) -> Costar f d (f0 a) #

collect :: Functor f0 => (a -> Costar f d b) -> f0 a -> Costar f d (f0 b) #

distributeM :: Monad m => m (Costar f d a) -> Costar f d (m a) #

collectM :: Monad m => (a -> Costar f d b) -> m a -> Costar f d (m b) #

Applicative (Costar f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

pure :: a0 -> Costar f a a0 #

(<*>) :: Costar f a (a0 -> b) -> Costar f a a0 -> Costar f a b #

liftA2 :: (a0 -> b -> c) -> Costar f a a0 -> Costar f a b -> Costar f a c #

(*>) :: Costar f a a0 -> Costar f a b -> Costar f a b #

(<*) :: Costar f a a0 -> Costar f a b -> Costar f a a0 #

Functor (Costar f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

fmap :: (a0 -> b) -> Costar f a a0 -> Costar f a b #

(<$) :: a0 -> Costar f a b -> Costar f a a0 #

Monad (Costar f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

(>>=) :: Costar f a a0 -> (a0 -> Costar f a b) -> Costar f a b #

(>>) :: Costar f a a0 -> Costar f a b -> Costar f a b #

return :: a0 -> Costar f a a0 #

type Corep (Costar f) 
Instance details

Defined in Data.Profunctor.Rep

type Corep (Costar f) = f

newtype Star (f :: k -> Type) d (c :: k) #

Lift a Functor into a Profunctor (forwards).

Star has a polymorphic kind since 5.6.

Constructors

Star 

Fields

Instances

Instances details
Monad f => Category (Star f :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Types

Methods

id :: Star f a a #

(.) :: Star f b c -> Star f a b -> Star f a c #

Applicative f => Choice (Star f) 
Instance details

Defined in Data.Profunctor.Choice

Methods

left' :: Star f a b -> Star f (Either a c) (Either b c) #

right' :: Star f a b -> Star f (Either c a) (Either c b) #

Traversable f => Cochoice (Star f) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Star f (Either a d) (Either b d) -> Star f a b #

unright :: Star f (Either d a) (Either d b) -> Star f a b #

Distributive f => Closed (Star f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Star f a b -> Star f (x -> a) (x -> b) #

(Applicative m, Distributive m) => Mapping (Star m) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => Star m a b -> Star m (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Star m a b -> Star m s t #

Functor f => Representable (Star f) 
Instance details

Defined in Data.Profunctor.Rep

Associated Types

type Rep (Star f) 
Instance details

Defined in Data.Profunctor.Rep

type Rep (Star f) = f

Methods

tabulate :: (d -> Rep (Star f) c) -> Star f d c #

Functor m => Strong (Star m) 
Instance details

Defined in Data.Profunctor.Strong

Methods

first' :: Star m a b -> Star m (a, c) (b, c) #

second' :: Star m a b -> Star m (c, a) (c, b) #

Applicative m => Traversing (Star m) 
Instance details

Defined in Data.Profunctor.Traversing

Methods

traverse' :: Traversable f => Star m a b -> Star m (f a) (f b) #

wander :: (forall (f :: Type -> Type). Applicative f => (a -> f b) -> s -> f t) -> Star m a b -> Star m s t #

Functor f => Profunctor (Star f) 
Instance details

Defined in Data.Profunctor.Types

Methods

dimap :: (a -> b) -> (c -> d) -> Star f b c -> Star f a d #

lmap :: (a -> b) -> Star f b c -> Star f a c #

rmap :: (b -> c) -> Star f a b -> Star f a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Star f a b -> Star f a c #

(.#) :: forall a b c q. Coercible b a => Star f b c -> q a b -> Star f a c #

Functor f => Sieve (Star f) f 
Instance details

Defined in Data.Profunctor.Sieve

Methods

sieve :: Star f a b -> a -> f b #

Contravariant f => Contravariant (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

contramap :: (a' -> a0) -> Star f a a0 -> Star f a a' #

(>$) :: b -> Star f a b -> Star f a a0 #

Distributive f => Distributive (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

distribute :: Functor f0 => f0 (Star f a a0) -> Star f a (f0 a0) #

collect :: Functor f0 => (a0 -> Star f a b) -> f0 a0 -> Star f a (f0 b) #

distributeM :: Monad m => m (Star f a a0) -> Star f a (m a0) #

collectM :: Monad m => (a0 -> Star f a b) -> m a0 -> Star f a (m b) #

Alternative f => Alternative (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

empty :: Star f a a0 #

(<|>) :: Star f a a0 -> Star f a a0 -> Star f a a0 #

some :: Star f a a0 -> Star f a [a0] #

many :: Star f a a0 -> Star f a [a0] #

Applicative f => Applicative (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

pure :: a0 -> Star f a a0 #

(<*>) :: Star f a (a0 -> b) -> Star f a a0 -> Star f a b #

liftA2 :: (a0 -> b -> c) -> Star f a a0 -> Star f a b -> Star f a c #

(*>) :: Star f a a0 -> Star f a b -> Star f a b #

(<*) :: Star f a a0 -> Star f a b -> Star f a a0 #

Functor f => Functor (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

fmap :: (a0 -> b) -> Star f a a0 -> Star f a b #

(<$) :: a0 -> Star f a b -> Star f a a0 #

Monad f => Monad (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

(>>=) :: Star f a a0 -> (a0 -> Star f a b) -> Star f a b #

(>>) :: Star f a a0 -> Star f a b -> Star f a b #

return :: a0 -> Star f a a0 #

MonadPlus f => MonadPlus (Star f a) 
Instance details

Defined in Data.Profunctor.Types

Methods

mzero :: Star f a a0 #

mplus :: Star f a a0 -> Star f a a0 -> Star f a a0 #

type Rep (Star f) 
Instance details

Defined in Data.Profunctor.Rep

type Rep (Star f) = f

class Profunctor p => Closed (p :: Type -> Type -> Type) where #

A strong profunctor allows the monoidal structure to pass through.

A closed profunctor allows the closed structure to pass through.

Methods

closed :: p a b -> p (x -> a) (x -> b) #

Instances

Instances details
(Distributive f, Monad f) => Closed (Kleisli f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Kleisli f a b -> Kleisli f (x -> a) (x -> b) #

Profunctor p => Closed (Closure p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Closure p a b -> Closure p (x -> a) (x -> b) #

Closed (Environment p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Environment p a b -> Environment p (x -> a) (x -> b) #

Profunctor p => Closed (CofreeMapping p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

closed :: CofreeMapping p a b -> CofreeMapping p (x -> a) (x -> b) #

Closed (FreeMapping p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

closed :: FreeMapping p a b -> FreeMapping p (x -> a) (x -> b) #

Closed p => Closed (Coyoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

closed :: Coyoneda p a b -> Coyoneda p (x -> a) (x -> b) #

Closed p => Closed (Yoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

closed :: Yoneda p a b -> Yoneda p (x -> a) (x -> b) #

Closed (Tagged :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Tagged a b -> Tagged (x -> a) (x -> b) #

Functor f => Closed (Cokleisli f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Cokleisli f a b -> Cokleisli f (x -> a) (x -> b) #

Functor f => Closed (Costar f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Costar f a b -> Costar f (x -> a) (x -> b) #

Distributive f => Closed (Star f) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Star f a b -> Star f (x -> a) (x -> b) #

Closed (->) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: (a -> b) -> (x -> a) -> (x -> b) #

(Closed p, Closed q) => Closed (Product p q) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Product p q a b -> Product p q (x -> a) (x -> b) #

(Closed p, Closed q) => Closed (Sum p q) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Sum p q a b -> Sum p q (x -> a) (x -> b) #

(Functor f, Closed p) => Closed (Tannen f p) 
Instance details

Defined in Data.Profunctor.Closed

Methods

closed :: Tannen f p a b -> Tannen f p (x -> a) (x -> b) #

(Functor f, Closed p) => Closed (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

closed :: Cayley f p a b -> Cayley f p (x -> a) (x -> b) #

(Closed p, Closed q) => Closed (Procompose p q) 
Instance details

Defined in Data.Profunctor.Composition

Methods

closed :: Procompose p q a b -> Procompose p q (x -> a) (x -> b) #

curry' :: Closed p => p (a, b) c -> p a (b -> c) #

class Profunctor p => Cochoice (p :: Type -> Type -> Type) where #

Minimal complete definition

unleft | unright

Methods

unleft :: p (Either a d) (Either b d) -> p a b #

Laws:

unleftunright . dimap swapE swapE where
  swapE :: Either a b -> Either b a
  swapE = either Right Left
rmap (either id absurd) ≡ unleft . lmap (either id absurd)
unfirst . rmap (second f) ≡ unfirst . lmap (second f)
unleft . unleftunleft . dimap assocE unassocE where
  assocE :: Either (Either a b) c -> Either a (Either b c)
  assocE (Left (Left a)) = Left a
  assocE (Left (Right b)) = Right (Left b)
  assocE (Right c) = Right (Right c)
  unassocE :: Either a (Either b c) -> Either (Either a b) c
  unassocE (Left a) = Left (Left a)
  unassocE (Right (Left b)) = Left (Right b)
  unassocE (Right (Right c)) = Right c

unright :: p (Either d a) (Either d b) -> p a b #

Laws:

unrightunleft . dimap swapE swapE where
  swapE :: Either a b -> Either b a
  swapE = either Right Left
rmap (either absurd id) ≡ unright . lmap (either absurd id)
unsecond . rmap (first f) ≡ unsecond . lmap (first f)
unright . unrightunright . dimap unassocE assocE where
  assocE :: Either (Either a b) c -> Either a (Either b c)
  assocE (Left (Left a)) = Left a
  assocE (Left (Right b)) = Right (Left b)
  assocE (Right c) = Right (Right c)
  unassocE :: Either a (Either b c) -> Either (Either a b) c
  unassocE (Left a) = Left (Left a)
  unassocE (Right (Left b)) = Left (Right b)
  unassocE (Right (Right c)) = Right c

Instances

Instances details
Cochoice (CopastroSum p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: CopastroSum p (Either a d) (Either b d) -> CopastroSum p a b #

unright :: CopastroSum p (Either d a) (Either d b) -> CopastroSum p a b #

Cochoice (CotambaraSum p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: CotambaraSum p (Either a d) (Either b d) -> CotambaraSum p a b #

unright :: CotambaraSum p (Either d a) (Either d b) -> CotambaraSum p a b #

Cochoice p => Cochoice (Coyoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

unleft :: Coyoneda p (Either a d) (Either b d) -> Coyoneda p a b #

unright :: Coyoneda p (Either d a) (Either d b) -> Coyoneda p a b #

Cochoice p => Cochoice (Yoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

unleft :: Yoneda p (Either a d) (Either b d) -> Yoneda p a b #

unright :: Yoneda p (Either d a) (Either d b) -> Yoneda p a b #

Applicative f => Cochoice (Costar f) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Costar f (Either a d) (Either b d) -> Costar f a b #

unright :: Costar f (Either d a) (Either d b) -> Costar f a b #

Cochoice (Forget r :: Type -> Type -> Type) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Forget r (Either a d) (Either b d) -> Forget r a b #

unright :: Forget r (Either d a) (Either d b) -> Forget r a b #

Traversable f => Cochoice (Star f) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Star f (Either a d) (Either b d) -> Star f a b #

unright :: Star f (Either d a) (Either d b) -> Star f a b #

Cochoice (->) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: (Either a d -> Either b d) -> a -> b #

unright :: (Either d a -> Either d b) -> a -> b #

(Cochoice p, Cochoice q) => Cochoice (Product p q) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Product p q (Either a d) (Either b d) -> Product p q a b #

unright :: Product p q (Either d a) (Either d b) -> Product p q a b #

(Cochoice p, Cochoice q) => Cochoice (Sum p q) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Sum p q (Either a d) (Either b d) -> Sum p q a b #

unright :: Sum p q (Either d a) (Either d b) -> Sum p q a b #

(Functor f, Cochoice p) => Cochoice (Tannen f p) 
Instance details

Defined in Data.Profunctor.Choice

Methods

unleft :: Tannen f p (Either a d) (Either b d) -> Tannen f p a b #

unright :: Tannen f p (Either d a) (Either d b) -> Tannen f p a b #

(Functor f, Cochoice p) => Cochoice (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

unleft :: Cayley f p (Either a d) (Either b d) -> Cayley f p a b #

unright :: Cayley f p (Either d a) (Either d b) -> Cayley f p a b #

left' :: Choice p => p a b -> p (Either a c) (Either b c) #

Laws:

left'dimap swapE swapE . right' where
  swapE :: Either a b -> Either b a
  swapE = either Right Left
rmap Leftlmap Left . left'
lmap (right f) . left'rmap (right f) . left'
left' . left'dimap assocE unassocE . left' where
  assocE :: Either (Either a b) c -> Either a (Either b c)
  assocE (Left (Left a)) = Left a
  assocE (Left (Right b)) = Right (Left b)
  assocE (Right c) = Right (Right c)
  unassocE :: Either a (Either b c) -> Either (Either a b) c
  unassocE (Left a) = Left (Left a)
  unassocE (Right (Left b)) = Left (Right b)
  unassocE (Right (Right c)) = Right c

right' :: Choice p => p a b -> p (Either c a) (Either c b) #

Laws:

right'dimap swapE swapE . left' where
  swapE :: Either a b -> Either b a
  swapE = either Right Left
rmap Rightlmap Right . right'
lmap (left f) . right'rmap (left f) . right'
right' . right'dimap unassocE assocE . right' where
  assocE :: Either (Either a b) c -> Either a (Either b c)
  assocE (Left (Left a)) = Left a
  assocE (Left (Right b)) = Right (Left b)
  assocE (Right c) = Right (Right c)
  unassocE :: Either a (Either b c) -> Either (Either a b) c
  unassocE (Left a) = Left (Left a)
  unassocE (Right (Left b)) = Left (Right b)
  unassocE (Right (Right c)) = Right c

class (Traversing p, Closed p) => Mapping (p :: Type -> Type -> Type) where #

Minimal complete definition

Nothing

Methods

map' :: Functor f => p a b -> p (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> p a b -> p s t #

Instances

Instances details
(Monad m, Distributive m) => Mapping (Kleisli m) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => Kleisli m a b -> Kleisli m (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Kleisli m a b -> Kleisli m s t #

Profunctor p => Mapping (CofreeMapping p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => CofreeMapping p a b -> CofreeMapping p (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> CofreeMapping p a b -> CofreeMapping p s t #

Mapping (FreeMapping p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => FreeMapping p a b -> FreeMapping p (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> FreeMapping p a b -> FreeMapping p s t #

Mapping p => Mapping (Coyoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

map' :: Functor f => Coyoneda p a b -> Coyoneda p (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Coyoneda p a b -> Coyoneda p s t #

Mapping p => Mapping (Yoneda p) 
Instance details

Defined in Data.Profunctor.Yoneda

Methods

map' :: Functor f => Yoneda p a b -> Yoneda p (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Yoneda p a b -> Yoneda p s t #

(Applicative m, Distributive m) => Mapping (Star m) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => Star m a b -> Star m (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Star m a b -> Star m s t #

Mapping (->) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f => (a -> b) -> f a -> f b #

roam :: ((a -> b) -> s -> t) -> (a -> b) -> s -> t #

(Functor f, Mapping p) => Mapping (Tannen f p) 
Instance details

Defined in Data.Profunctor.Mapping

Methods

map' :: Functor f0 => Tannen f p a b -> Tannen f p (f0 a) (f0 b) #

roam :: ((a -> b) -> s -> t) -> Tannen f p a b -> Tannen f p s t #

(Functor f, Mapping p) => Mapping (Cayley f p) 
Instance details

Defined in Data.Profunctor.Cayley

Methods

map' :: Functor f0 => Cayley f p a b -> Cayley f p (f0 a) (f0 b) #

roam :: ((a -> b) -> s -> t) -> Cayley f p a b -> Cayley f p s t #

(Mapping p, Mapping q) => Mapping (Procompose p q) 
Instance details

Defined in Data.Profunctor.Composition

Methods

map' :: Functor f => Procompose p q a b -> Procompose p q (f a) (f b) #

roam :: ((a -> b) -> s -> t) -> Procompose p q a b -> Procompose p q s t #

data HandlingState (m :: Type -> Type) Source #

Hold a map of registered handle keys and destructors

Constructors

HandlingState 

Instances

Instances details
(Typeable m, Launchable m) => Launchable (HandlingStateT m) Source # 
Instance details

Defined in LiveCoding.RuntimeIO.Launch

Typeable m => Data (HandlingState m) Source # 
Instance details

Defined in LiveCoding.HandlingState

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HandlingState m -> c (HandlingState m) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HandlingState m) #

toConstr :: HandlingState m -> Constr #

dataTypeOf :: HandlingState m -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (HandlingState m)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HandlingState m)) #

gmapT :: (forall b. Data b => b -> b) -> HandlingState m -> HandlingState m #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HandlingState m -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HandlingState m -> r #

gmapQ :: (forall d. Data d => d -> u) -> HandlingState m -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HandlingState m -> u #

gmapM :: Monad m0 => (forall d. Data d => d -> m0 d) -> HandlingState m -> m0 (HandlingState m) #

gmapMp :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> HandlingState m -> m0 (HandlingState m) #

gmapMo :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> HandlingState m -> m0 (HandlingState m) #

type HandlingStateT (m :: Type -> Type) = StateT (HandlingState m) m Source #

In this monad, handles can be registered, and their destructors automatically executed. It is basically a monad in which handles are automatically garbage collected.

runHandlingState :: forall (m :: Type -> Type). (Monad m, Typeable m) => LiveProgram (HandlingStateT m) -> LiveProgram m Source #

Like runHandlingStateC, but for whole live programs.

runHandlingStateC :: forall (m :: Type -> Type) a b. (Monad m, Typeable m) => Cell (HandlingStateT m) a b -> Cell m a b Source #

Apply this to your main live cell before passing it to the runtime.

On the first tick, it initialises the HandlingState at "no handles".

On every step, it does:

  1. Unregister all handles
  2. Register currently present handles
  3. Destroy all still unregistered handles (i.e. those that were removed in the last tick)

runHandlingStateT :: Monad m => HandlingStateT m a -> m a Source #

Handle the HandlingStateT effect _without_ garbage collection. Apply this to your main loop after calling foreground. Since there is no garbage collection, don't use this function for live coding.

data NoMigration a Source #

Isomorphic to Maybe a but has a different Data instance. The Data instance for NoMigration a doesn't require a Data instance for a.

If a data type is wrapped in NoMigration then it can be used as the state of a Cell without requiring it to have a Data instance. The consequence is that if the type has changed in between a livereload, then the previous saved value will be discarded, and no migration attempt will happen.

Constructors

Initialized a 
Uninitialized 

Instances

Instances details
Functor NoMigration Source # 
Instance details

Defined in LiveCoding.Migrate.NoMigration

Methods

fmap :: (a -> b) -> NoMigration a -> NoMigration b #

(<$) :: a -> NoMigration b -> NoMigration a #

Foldable NoMigration Source # 
Instance details

Defined in LiveCoding.Migrate.NoMigration

Methods

fold :: Monoid m => NoMigration m -> m #

foldMap :: Monoid m => (a -> m) -> NoMigration a -> m #

foldMap' :: Monoid m => (a -> m) -> NoMigration a -> m #

foldr :: (a -> b -> b) -> b -> NoMigration a -> b #

foldr' :: (a -> b -> b) -> b -> NoMigration a -> b #

foldl :: (b -> a -> b) -> b -> NoMigration a -> b #

foldl' :: (b -> a -> b) -> b -> NoMigration a -> b #

foldr1 :: (a -> a -> a) -> NoMigration a -> a #

foldl1 :: (a -> a -> a) -> NoMigration a -> a #

toList :: NoMigration a -> [a] #

null :: NoMigration a -> Bool #

length :: NoMigration a -> Int #

elem :: Eq a => a -> NoMigration a -> Bool #

maximum :: Ord a => NoMigration a -> a #

minimum :: Ord a => NoMigration a -> a #

sum :: Num a => NoMigration a -> a #

product :: Num a => NoMigration a -> a #

Traversable NoMigration Source # 
Instance details

Defined in LiveCoding.Migrate.NoMigration

Methods

traverse :: Applicative f => (a -> f b) -> NoMigration a -> f (NoMigration b) #

sequenceA :: Applicative f => NoMigration (f a) -> f (NoMigration a) #

mapM :: Monad m => (a -> m b) -> NoMigration a -> m (NoMigration b) #

sequence :: Monad m => NoMigration (m a) -> m (NoMigration a) #

Typeable a => Data (NoMigration a) Source #

The Data instance for NoMigration a doesn't require a Data instance for a.

Instance details

Defined in LiveCoding.Migrate.NoMigration

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoMigration a -> c (NoMigration a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoMigration a) #

toConstr :: NoMigration a -> Constr #

dataTypeOf :: NoMigration a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NoMigration a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NoMigration a)) #

gmapT :: (forall b. Data b => b -> b) -> NoMigration a -> NoMigration a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoMigration a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoMigration a -> r #

gmapQ :: (forall d. Data d => d -> u) -> NoMigration a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> NoMigration a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NoMigration a -> m (NoMigration a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NoMigration a -> m (NoMigration a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NoMigration a -> m (NoMigration a) #

Show a => Show (NoMigration a) Source # 
Instance details

Defined in LiveCoding.Migrate.NoMigration

Eq a => Eq (NoMigration a) Source # 
Instance details

Defined in LiveCoding.Migrate.NoMigration

foreground :: Monad m => LiveProgram m -> m () Source #

runStateC Source #

Arguments

:: forall stateT (m :: Type -> Type) a b. (Data stateT, Monad m) 
=> Cell (StateT stateT m) a b

A cell with a state effect

-> stateT

The initial state

-> Cell m a (b, stateT)

The cell, returning its current state

Push effectful state into the internal state of a cell

runStateC_ Source #

Arguments

:: forall stateT (m :: Type -> Type) a b. (Data stateT, Monad m) 
=> Cell (StateT stateT m) a b

A cell with a state effect

-> stateT

The initial state

-> Cell m a b 

Like runStateC, but does not return the current state.

runReaderC :: forall r (m :: Type -> Type) a b. r -> Cell (ReaderT r m) a b -> Cell m a b Source #

Supply a ReaderT environment before running the cell

runReaderC' :: forall (m :: Type -> Type) r a b. Monad m => Cell (ReaderT r m) a b -> Cell m (r, a) b Source #

Supply a ReaderT environment live

readerC' :: forall (m :: Type -> Type) r a b. Monad m => Cell m (r, a) b -> Cell (ReaderT r m) a b Source #

Inverse to runReaderC'

runWriterC :: forall w (m :: Type -> Type) a b. (Monoid w, Monad m) => Cell (WriterT w m) a b -> Cell m a (w, b) Source #

Run the effects of the WriterT monad, collecting all its output in the second element of the tuple.

stop :: forall (m :: Type -> Type). Launchable m => LaunchedProgram m -> IO () Source #

Stops a thread where a LiveProgram is being executed.

Before the thread is killed, an empty program (in the monad m) is first inserted and stepped. This can be used to call cleanup actions encoded in the monad, such as HandlingStateT.

arrChangesM :: (Monad m, Typeable a, Typeable b, Eq a) => (a -> m b) -> Cell m a b Source #

Caching version of arrM.

Only runs the computation in m when the input value changes. Meanwhile it keeps outputing the last outputted value. Also runs the computation on the first tick. Does not require Data instance. On `:livereload` will run action again on first tick.

cellNoMigration :: (Typeable s, Functor m) => s -> (s -> a -> m (b, s)) -> Cell m a b Source #

data LaunchedProgram (m :: Type -> Type) Source #

A launched LiveProgram and the thread in which it is running.

stepProgram :: Monad m => LiveProgram m -> m (LiveProgram m) Source #

Advance a LiveProgram by a single step.

launch :: forall (m :: Type -> Type). Launchable m => LiveProgram m -> IO (LaunchedProgram m) Source #

Launch a LiveProgram in a separate thread.

The MVar can be used to update the program while automatically migrating it. The ThreadId represents the thread where the program runs in. You're advised not to kill it directly, but to run stop instead.

liveMain :: forall (m :: Type -> Type). Launchable m => LiveProgram m -> IO () Source #

The standard top level main for a live program.

Typically, you will define a top level LiveProgram in some monad like HandlingStateT IO, and then add these two lines of boiler plate:

main :: IO ()
main = liveMain liveProgram

background :: MVar (LiveProgram IO) -> IO () Source #

This is the background task executed by launch.

stepLaunchedProgram :: forall (m :: Type -> Type). (Monad m, Launchable m) => LaunchedProgram m -> IO () Source #

Advance a launched LiveProgram by a single step and store the result.

launchWithDebugger :: forall (m :: Type -> Type). (Monad m, Launchable m) => LiveProgram m -> Debugger m -> IO (LaunchedProgram m) Source #

Launch a LiveProgram, but first attach a debugger to it.