HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulelinear-base-0.4.0Haskell2010

Control.Functor.Linear.Internal.Class

This module contains all the classes eventually exported by Control.Functor.Linear. Together with related operations.

  • 4 classes
  • 10 values

Functors

6 declarations
classclass Functor f => Functor (f :: Type -> Type) where
#

Control linear functors. The functor of type f a holds only one value of type a and represents a computation producing an a with an effect. All control functors are data functors, but not all data functors are control functors.

Methods

  • fmap :: (a %1 -> b) %1 -> f a %1 -> f b

    Map a linear function g over a control functor f a. Note that g is used linearly over the single a in f a.

Instances25Functor, …
  • Functor IdentityDefined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor Par1Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor IODefined in linear-base-0.4.0 · System.IO.Linear
  • Functor RIODefined in linear-base-0.4.0 · System.IO.Resource.Linear.Internal
  • Functor (Tuple2 a)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor (Yoneda f)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Kan
  • Functor (StateR s)Defined in linear-base-0.4.0 · Data.Functor.Linear.Internal.Traversable
  • Functor (Of a)Defined in linear-base-0.4.0 · Streaming.Linear.Internal.Type
  • Functor (Tuple3 a b)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor g => Functor (Curried g h)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Kan
  • Functor m => Functor (ReaderT r m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Reader
  • Functor m => Functor (StateT s m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.State
  • Functor m => Functor (ReaderT r m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Reader · orphan
  • Functor m => Functor (StateT s m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.State · orphan
  • (Functor m, Functor f) => Functor (Stream f m)Defined in linear-base-0.4.0 · Streaming.Linear.Internal.Type
  • (Generic1 f, Functor (Rep1 f)) => Functor (Generically1 f)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor (Tuple4 a b c)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • (Functor f, Functor g) => Functor (Sum f g)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • (Functor l, Functor r) => Functor (l :+: r)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • (Functor l, Functor r, EitherNoPar1 b1 b2 l r) => Functor (l :*: r)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor (FUN 'One a)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor (Tuple5 a b c d)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Functor f => Functor (M1 j c f)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • (Functor f, Functor g) => Functor (Compose f g)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • (Functor f, Functor g) => Functor (f :.: g)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
value(<$>) :: Functor f => (a %1 -> b) %1 -> f a %1 -> f b
#
value(<$) :: (Functor f, Consumable b) => a %1 -> f b %1 -> f a
#

Linearly typed replacement for the standard (Prelude.<$) function.

valuevoid :: (Functor f, Consumable a) => f a %1 -> f ()
#

Discard a consumable value stored in a control functor.

Applicative Functors

2 declarations
classclass (Applicative f, Functor f) => Applicative (f :: Type -> Type) where
#

Control linear applicative functors. These represent effectful computations that could produce continuations that can be applied with <*>.

Methods

  • pure :: a %1 -> f a

    Inject (and consume) a value into an applicative control functor.

  • (<*>) :: f (a %1 -> b) %1 -> f a %1 -> f binfixl 4

    Apply the linear function in a control applicative functor to the value of type a in another functor. This is essentialy composing two effectful computations, one that produces a function f :: a %1-> b and one that produces a value of type a into a single effectful computation that produces a value of type b.

  • liftA2 :: (a %1 -> b %1 -> c) %1 -> f a %1 -> f b %1 -> f c

    liftA2 g consumes g linearly as it lifts it over two functors: liftA2 g :: f a %1-> f b %1-> f c.

Instances13Applicative, …
  • Applicative IdentityDefined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Applicative IODefined in linear-base-0.4.0 · System.IO.Linear
  • Applicative RIODefined in linear-base-0.4.0 · System.IO.Resource.Linear.Internal
  • Applicative (StateR s)Defined in linear-base-0.4.0 · Data.Functor.Linear.Internal.Traversable
  • Applicative f => Applicative (Yoneda f)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Kan
  • Monoid a => Applicative (Tuple2 a)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Applicative m => Applicative (ReaderT r m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Reader · orphan
  • Monad m => Applicative (StateT s m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.State
  • (Applicative m, Dupable r) => Applicative (ReaderT r m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Reader
  • (Functor g, g ~ h) => Applicative (Curried g h)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Kan
  • (Functor m, Functor f) => Applicative (Stream f m)Defined in linear-base-0.4.0 · Streaming.Linear.Internal.Type
  • (Monoid a, Monoid b) => Applicative (Tuple3 a b)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • (Monoid a, Monoid b, Monoid c) => Applicative (Tuple4 a b c)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class

Monads

6 declarations
classclass Applicative m => Monad (m :: Type -> Type) where
#

Control linear monads. A linear monad is one in which you sequence linear functions in a context, i.e., you sequence functions of the form a %1-> m b.

Methods

  • (>>=) :: m a %1 -> (a %1 -> m b) %1 -> m binfixl 1

    x >>= g applies a linear function g linearly (i.e., using it exactly once) on the value of type a inside the value of type m a

  • (>>) :: m () %1 -> m a %1 -> m ainfixl 1
Instances8Monad, …
  • Monad IdentityDefined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Monad IODefined in linear-base-0.4.0 · System.IO.Linear
  • Monad RIODefined in linear-base-0.4.0 · System.IO.Resource.Linear.Internal
  • Monoid a => Monad (Tuple2 a)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Class
  • Monad m => Monad (StateT s m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.State
  • Monad m => Monad (ReaderT r m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Reader · orphan
  • (Functor m, Functor f) => Monad (Stream f m)Defined in linear-base-0.4.0 · Streaming.Linear.Internal.Type
  • (Monad m, Dupable r) => Monad (ReaderT r m)Defined in linear-base-0.4.0 · Control.Functor.Linear.Internal.Reader
valuejoin :: Monad m => m (m a) %1 -> m a
#

Given an effect-producing computation that produces an effect-producing computation that produces an a, simplify it to an effect-producing computation that produces an a.

valueap :: Monad m => m (a %1 -> b) %1 -> m a %1 -> m b
#

Use this operator to define Applicative instances in terms of Monad instances.

valuefoldM :: Monad m => (b %1 -> a %1 -> m b) -> b %1 -> [a] %1 -> m b
#

Fold from left to right with a linear monad. This is a linear version of NonLinear.foldM.