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

Modulererebase-1.21.2Haskell2010

Data.Functor.Bind.Class

  • 2 types
  • 3 classes
  • 5 values
classclass Functor f => Apply (f :: Type -> Type) where
#

A strong lax semi-monoidal endofunctor. This is equivalent to an Applicative without pure.

Laws:

(.) <$> u <.> v <.> w = u <.> (v <.> w)
x <.> (f <$> y) = (. f) <$> x <.> y
f <$> (x <.> y) = (f .) <$> x <.> y

The laws imply that .> and <. really ignore their left and right results, respectively, and really return their right and left results, respectively. Specifically,

(mf <$> m) .> (nf <$> n) = nf <$> (m .> n)
(mf <$> m) <. (nf <$> n) = mf <$> (m <. n)

Methods

  • (<.>) :: f (a -> b) -> f a -> f binfixl 4
  • (.>) :: f a -> f b -> f binfixl 4
     a .> b = const id <$> a <.> b
  • (<.) :: f a -> f b -> f ainfixl 4
     a <. b = const <$> a <.> b
  • liftF2 :: (a -> b -> c) -> f a -> f b -> f c

    Lift a binary function into a comonad with zipping

Instances96Apply, …
classclass Apply m => Bind (m :: Type -> Type) where
#

A Monad sans return.

Minimal definition: Either join or >>-

If defining both, then the following laws (the default definitions) must hold:

join = (>>- id)
m >>- f = join (fmap f m)

Laws:

induced definition of <.>: f <.> x = f >>- (<$> x)

Finally, there are two associativity conditions:

associativity of (>>-):    (m >>- f) >>- g == m >>- (\x -> f x >>- g)
associativity of join:     join . join = join . fmap join

These can both be seen as special cases of the constraint that

associativity of (->-): (f ->- g) ->- h = f ->- (g ->- h)

Methods

  • (>>-) :: m a -> (a -> m b) -> m binfixl 1
  • join :: m (m a) -> m a
Instances63Bind, …
  • Bind ComplexDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind FirstDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind LastDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind MaxDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind MinDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind IntMapDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    An IntMap is not a Monad, but it is an instance of Bind

  • Bind SeqDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind TreeDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind NonEmptyDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind IdentityDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind FirstDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind LastDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind DownDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind DualDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind ProductDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind SumDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind Par1Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind MaybeDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind IODefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind QDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind VectorDefined in vector-instances-3.4.2 · Data.Vector.Instances · orphan
  • Bind []Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Representable f => Bind (Co f)Defined in adjunctions-4.4.3 · Data.Functor.Rep
  • Functor f => Bind (Free f)Defined in free-5.2 · Control.Monad.Free
  • Monad m => Bind (WrappedMonad m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Monad m => Bind (IterT m)Defined in free-5.2 · Control.Monad.Trans.Iter
  • Semigroup m => Bind (Tuple2 m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    A (,) m is not a Monad unless its m is a Monoid, but it is an instance of Bind

  • Ord k => Bind (Map k)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    A 'Map k' is not a Monad, but it is an instance of Bind

  • Apply f => Bind (Free f)Defined in free-5.2 · Control.Monad.Free.Ap
  • Bind ProxyDefined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind U1Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind V1Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    A V1 is not a Monad, but it is an instance of Bind

  • Bind (F f)Defined in free-5.2 · Control.Monad.Free.Church
  • Bind (Either a)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (Coyoneda m)Defined in kan-extensions-5.2.7 · Data.Functor.Coyoneda
  • Bind m => Bind (Yoneda m)Defined in kan-extensions-5.2.7 · Data.Functor.Yoneda
  • (Functor m, Monad m) => Bind (MaybeT m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • (Hashable k, Eq k) => Bind (HashMap k)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    A 'HashMap k' is not a Monad, but it is an instance of Bind

  • Bind (FT f m)Defined in free-5.2 · Control.Monad.Trans.Free.Church
  • Bind (Tagged a)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind f => Bind (Alt f)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (Rec1 m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (IdentityT m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (ReaderT e m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (StateT s m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (StateT s m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (WriterT w m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • (Representable f, Bind m) => Bind (ReaderT f m)Defined in adjunctions-4.4.3 · Control.Monad.Representable.Reader
  • (Representable g, Bind m) => Bind (StateT g m)Defined in adjunctions-4.4.3 · Control.Monad.Representable.State
  • (Functor f, Monad m) => Bind (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free
  • (Functor m, Monad m) => Bind (ExceptT e m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • (Apply f, Apply m, Monad m) => Bind (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free.Ap
  • (Bind m, Semigroup w) => Bind (WriterT w m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    A WriterT w m is not a Monad unless its w is a Monoid, but it is an instance of Bind

  • (Bind m, Semigroup w) => Bind (WriterT w m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    A WriterT w m is not a Monad unless its w is a Monoid, but it is an instance of Bind

  • Bind (ContT r m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind ((->) m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Extend w => Bind (CoT w m)Defined in kan-extensions-5.2.7 · Control.Monad.Co
  • (Bind f, Bind g) => Bind (Product f g)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • (Bind f, Bind g) => Bind (f :*: g)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind f => Bind (M1 i c f)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • Bind m => Bind (RWST r w s m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class
  • (Bind m, Semigroup w) => Bind (RWST r w s m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    An RWST r w s m is not a Monad unless its w is a Monoid, but it is an instance of Bind

  • (Bind m, Semigroup w) => Bind (RWST r w s m)Defined in semigroupoids-6.0.1 · Data.Functor.Bind.Class

    An RWST r w s m is not a Monad unless its w is a Monoid, but it is an instance of Bind

value(<*.>) :: Apply f => MaybeApply f (a -> b) -> f a -> f b
#

Apply a possibly-empty-with-unit container of functions to a non-empty container of values.

value(<.*>) :: Apply f => f (a -> b) -> MaybeApply f a -> f b
#

Apply a non-empty container of functions to a possibly-empty-with-unit container of values.

classclass Bifunctor p => Biapply (p :: Type -> Type -> Type) where
#

Methods

  • (<<.>>) :: p (a -> b) (c -> d) -> p a c -> p b dinfixl 4
  • (.>>) :: p a b -> p c d -> p c dinfixl 4
    a .> b ≡ const id <$> a <.> b
    
  • (<<.) :: p a b -> p c d -> p a binfixl 4
    a <. b ≡ const <$> a <.> b
    
Instances14Biapply, …
newtypenewtype MaybeApply (f :: Type -> Type) a
#

Transform an Apply into an Applicative by adding a unit.

Constructors

Instances7Functor, Applicative, Comonad, Apply, Extend, Copointed, …
newtypenewtype WrappedApplicative (f :: Type -> Type) a
#

Wrap an Applicative to be used as a member of Apply

Instances8Functor, Applicative, Alternative, Alt, Apply, Plus, …