Search results

The Apply class provides the (<*>) which is used to apply a function to an argument under a type constructor.

Apply can be used to lift functions of two or more arguments to work on values wrapped with the type constructor f. It might also be understood in terms of the lift2 function:

lift2 :: forall f a b c. Apply f => (a -> b -> c) -> f a -> f b -> f c
lift2 f a b = f <$> a <*> b

(<*>) is recovered from lift2 as lift2 ($). That is, (<*>) lifts the function application operator ($) to arguments wrapped with the type constructor f.

Put differently...

foo =
  functionTakingNArguments <$> computationProducingArg1
                           <*> computationProducingArg2
                           <*> ...
                           <*> computationProducingArgN

Instances must satisfy the following law in addition to the Functor laws:

  • Associative composition: (<<<) <$> f <*> g <*> h = f <*> (g <*> h)

Formally, Apply represents a strong lax semi-monoidal endofunctor.

P purescript-prelude M Control.Apply
apply :: forall f a b. Apply f => f (a -> b) -> f a -> f b
P purescript-prelude M Control.Apply
apply :: forall a b. (a -> b) -> a -> b

Applies a function to an argument. This is primarily used as the operator ($) which allows parentheses to be omitted in some cases, or as a natural way to apply a chain of composed functions to a value.

P purescript-prelude M Data.Function

Polymorphic Type application

For example...

APPLY Maybe Int == Maybe $ Int == Maybe Int
P purescript-typelevel-prelude M Type.Function
apply :: forall m a b x y z. IxApply m => m x y (a -> b) -> m y z a -> m x z b
P purescript-indexed-monad M Control.Monad.Indexed.Qualified
apply :: App -> Application -> Effect Unit

Apply App actions to existent Express.js application

P purescript-express M Node.Express.App
P purescript-subcategory M Control.Subcategory.Endofunctor.Apply
apply :: forall c f v1 v0. HasApply c f => ObjectOf c v0 => ObjectOf c v1 => ObjectOf c (c v0 v1) => f (c v0 v1) -> c (f v0) (f v1)
P purescript-subcategory M Control.Subcategory.Endofunctor.HasApply
apply :: forall c f v1 v0. HasApply c f => ObjectOf c v0 => ObjectOf c v1 => ObjectOf c (c v0 v1) => f (c v0 v1) -> f v0 -> f v1
P purescript-subcategory M Control.Subcategory.Functor.HasApply
apply :: forall b a. NotJSPromise a => NotJSPromise b => PromiseSpec (a -> b) -> PromiseSpec a -> PromiseSpec b

apply a function to a value inside promise specs

P purescript-bonjiri M Bonjiri
apply :: forall b a. Jet (Atomic (a -> b)) -> Jet (Atomic a) -> Jet (Atomic b)

Combine two Atomic values in an applicative style.

P purescript-incremental-functions M Data.Incremental.Eq
apply :: forall b a. Iso a b -> a -> Maybe b
P purescript-partial-isomorphisms M Control.Isomorphism.Partial
apply :: forall e. Server e -> Server -> RestifyM e Unit

Apply Server actions to a Restify server.

P purescript-restify M Node.Restify.Server
apply :: forall r. Array (Setting UnresolvedValue) -> Run (CHILD_PROCESS + ENVIRONMENT + r) Unit

Applies the specified settings to the environment.

P purescript-dotenv M Dotenv.Internal.Apply
apply :: forall b a f. f -> Array a -> b
P purescript-ffi-utils M FFI.Util.Function
apply :: forall b a m r. Format m r (a -> b) -> a -> Format m r b

Apply the first argument of the formatter, without unwrapping it to a plain ol' function.

P purescript-formatting M Text.Formatting
apply :: forall f b a. ProductFunctor f => f a -> f b -> f (Tuple a b)
P purescript-invertible-syntax M Text.Syntax.Classes
apply :: forall t1 f x y a b. Semigroupal Function t1 Tuple Tuple f => Functor (f (t1 x y)) => f x (a -> b) -> f y a -> f (t1 x y) b
P purescript-monoidal M Data.Bifunctor.ApplicativeDo
apply :: forall f a b. Semigroupal Function Tuple Tuple f => Functor f => f (a -> b) -> f a -> f b
P purescript-monoidal M Data.Functor.ApplicativeDo
apply :: forall t1 t2 f a1 b1 a2 b2 a b. Semigroupal Function t1 t2 Tuple Tuple f => Functor (f (t1 a1 b1) (t2 a2 b2)) => f a1 a2 (a -> b) -> f b1 b2 a -> f (t1 a1 b1) (t2 a2 b2) b
P purescript-monoidal M Data.Trifunctor.ApplicativeDo
apply :: forall a c b. HasApply a => a (b -> c) -> a b -> a c
P purescript-neon M Neon.Class.HasApply
apply :: forall f m a b. Parallel f m => m (a -> b) -> m a -> m b
P purescript-qualified-do M QualifiedDo.ParApply
apply :: forall a b f. Codensity f (a -> b) -> Codensity f a -> Codensity f b
P purescript-resource M Codensity
apply :: forall a b f g. (g ~> f) -> Ran f g (a -> b) -> Ran f g a -> Ran f g b
P purescript-resource M Ran
apply :: forall e. Router e -> Router -> RestifyM e Unit

Apply Router actions to a Restify router.

P purescript-restify-router M Node.Restify.Router
apply :: forall r dom img. Expr r dom => Expr r img => Z3Function r dom img -> dom -> img
P purescript-z3 M Z3
apply :: forall r dom img. Fn2 (Z3Function r dom img) dom img
P purescript-z3 M Z3.Internal
applyN :: forall a. (a -> a) -> Int -> a -> a

applyN f n applies the function f to its argument n times.

If n is less than or equal to 0, the function is not applied.

applyN (_ + 1) 10 0 == 10
P purescript-prelude M Data.Function
P purescript-validation M Data.Validation.Semigroup
P purescript-validation M Data.Validation.Semiring
apply_ :: forall b a s w r. Semigroup w => RWS r w s (a -> b) -> RWS r w s a -> RWS r w s b
P purescript-transformerless M Control.Monad.Transformerless.RWS
applyR :: forall b a r. Reader r (a -> b) -> Reader r a -> Reader r b
P purescript-transformerless M Control.Monad.Transformerless.Reader
applyS :: forall b a. Behavior (a -> b) -> Stream a -> Stream b

This function is similar to apply for behaviors except the last argument is a stream instead of a behaviors. Whenever the stream has an occurrence the function at the behavior is applied to the value of the occurrence.

This function has an operator alias <~>. The operator is intended to work in tandem with <$> and <*>. As an example, assume that f3 is a function of three arguments, that b1 and b2 are two behaviors, and that s is a stream.` Then the function can be applied to the two behaviors and the stream in the following way.

f3 <$> b1 <*> b2 <~> s

With the above code, whenever s has an occurrence the value of b1, b2, and the value of the occurrence will be applied to f3 and its return value will be the value of the occurrence in the resulting stream.

Semantically.

applyS b s = map (\{time, a} -> {time, a: (b time) a}) s
P purescript-hareactive M Hareactive.Combinators
applyS :: forall b a s. State s (a -> b) -> State s a -> State s b
P purescript-transformerless M Control.Monad.Transformerless.State
P purescript-yargs M Node.Yargs.Applicative
applyW :: forall b a w. Semigroup w => Writer w (a -> b) -> Writer w a -> Writer w b
P purescript-transformerless M Control.Monad.Transformerless.Writer
apply2 :: forall r dom1 dom2 img. Expr r dom1 => Expr r dom2 => Expr r img => Z3Function2 r dom1 dom2 img -> dom1 -> dom2 -> img
P purescript-z3 M Z3
apply2 :: forall r dom1 dom2 img. Fn3 (Z3Function2 r dom1 dom2 img) dom1 dom2 img
P purescript-z3 M Z3.Internal
P purescript-record-fold M Data.Record.Fold
applyS :: forall @f @a @b. Select f => f (a -> b) -> f a -> f b

apply implemented in terms of select

P purescript-selective-functors M Control.Select
P purescript-prelude M Control.Apply
P purescript-st M Control.Monad.ST.Internal
applyOp :: forall event a b. Applicative event => event a -> event (a -> b) -> event b
P purescript-hyrule M FRP.Event.Class
P purescript-flare M Flare
applyTo :: forall f this a b. f -> this -> a -> b

Apply a function to a this object with the given arguments

P purescript-ffi-simple M FFI.Simple.Functions
P purescript-pairing M Data.Functor.Pairing.Co
P purescript-open-pairing M Data.Functor.Pairing.Co
applyTo :: forall res list row a. RowToList row list => RFold (ApplyS a) list row (Builder (Record ()) (Record res)) => a -> Record row -> Record res
P purescript-record-fold M Data.Record.Fold
P purescript-functor-vector M Data.BinVec
P purescript-selective M Data.ValidationSelective
P purescript-functors M Data.Functor.App
P purescript-ordered-collections M Data.Map.Internal
P purescript-aff M Effect.Aff
P purescript-quickcheck M Test.QuickCheck.Gen
P purescript-run M Run
P purescript-sized-vectors M Data.Vec
P purescript-sequences M Data.Sequence
P purescript-sequences M Data.Sequence.NonEmpty
P purescript-day M Data.Functor.Day
P purescript-echarts M ECharts.Monad
P purescript-day M Data.Functor.Day.Hom
P purescript-vector M Data.Vector
P purescript-data-mvc M DataMVC.ApplyCtx
P purescript-matrix M Data.Matrix
P purescript-hareactive M Hareactive.Types
P purescript-polyform M Polyform.Validator.Par
P purescript-transformerless M Control.Monad.Transformerless.RWS
P purescript-pointed M Data.Pointed.Can
P purescript-jack M Jack.Gen
P purescript-specular M Specular.Internal.RIO
P purescript-bound M Bound
P purescript-prelude M Data.Monoid.Conj
P purescript-prelude M Data.Monoid.Disj
P purescript-prelude M Data.Monoid.Dual
P purescript-prelude M Data.Semigroup.Last
P purescript-maybe M Data.Maybe.Last
P purescript-lazy M Data.Lazy
P purescript-lists M Data.List.Lazy.Types
P purescript-lists M Data.List.Types
P purescript-transformers M Control.Monad.RWS.Trans
P purescript-profunctor M Data.Profunctor.Star
P purescript-semirings M Data.Semiring.Free
P purescript-express M Node.Express.App
P purescript-probability M Math.Probability.Dist.Internal
P purescript-folds M Control.Fold
P purescript-pairs M Data.Pair
applyPoly :: forall a. Eq a => Semiring a => Polynomial (Square a) -> Square a -> Square a

Polynomial application

P purescript-sparse-matrices M Data.Sparse.Matrix
P purescript-web3 M Network.Ethereum.Web3.Types.Types
P purescript-transformerless M Control.Monad.Transformerless.Cont
applyWrap :: forall srf fm fs msg sta a. DataUI srf fm fs msg sta a -> DataUI srf fm fs (fm msg) (fs sta) a
P purescript-data-mvc M DataMVC.Types.DataUI
P purescript-sodium M SodiumFRP.Class
applyCons :: forall f a. Apply f => f a -> f (Array a) -> f (Array a)
P purescript-bookhound M Bookhound.ParserCombinators
P purescript-distributions M Data.Distribution
P purescript-react-ix M React.Ix.EffR
P purescript-open-folds M Control.Fold
P purescript-periodic M Periodic.Worker
P purescript-infinite-lists M Data.List.Infinite
P purescript-rrb-list M RRBList.Types
applyPick :: forall input err a. input -> PickE input err a -> ValidatedE err a
P purescript-morello M Morello.Morello.Core
P purescript-bucketchain-simple-api M Bucketchain.SimpleAPI.Proc
P purescript-redux-saga M Redux.Saga
P purescript-record-fold M Data.Record.Fold
P purescript-record-fold M Data.Record.Fold

Task.mapN -> liftN

P purescript-task M Task
P purescript-jack M Jack.Tree
P purescript-prelude M Control.Apply
applyFirst :: forall a b f. Apply f => f a -> f b -> f a

Combine two effectful actions, keeping only the result of the first.

P purescript-prelude M Control.Apply
P purescript-prelude M Data.Semigroup.First
P purescript-prelude M Control.Apply
P purescript-maybe M Data.Maybe.First

The Apply instance allows functions contained within a Just to transform a value contained within a Just using the apply operator:

Just f <*> Just x == Just (f x)

Nothing values are left untouched:

Just f <*> Nothing == Nothing
Nothing <*> Just x == Nothing

Combining Functor's <$> with Apply's <*> can be used transform a pure function to take Maybe-typed arguments so f :: a -> b -> c becomes f :: Maybe a -> Maybe b -> Maybe c:

f <$> Just x <*> Just y == Just (f x y)

The Nothing-preserving behaviour of both operators means the result of an expression like the above but where any one of the values is Nothing means the whole result becomes Nothing also:

f <$> Nothing <*> Just y == Nothing
f <$> Just x <*> Nothing == Nothing
f <$> Nothing <*> Nothing == Nothing
P purescript-maybe M Data.Maybe

The Apply instance allows functions to transform the contents of a Tuple with the <*> operator whenever there is a Semigroup instance for the fst component, so:

(Tuple a1 f) <*> (Tuple a2 x) == Tuple (a1 <> a2) (f x)
P purescript-tuples M Data.Tuple
P purescript-transformers M Control.Monad.Cont.Trans
P purescript-transformers M Control.Monad.List.Trans
P purescript-const M Data.Const
P purescript-functors M Data.Functor.Joker
P purescript-aff M Effect.Aff
P purescript-pipes M Pipes.Internal
P purescript-spec M Test.Spec
P purescript-freet M Control.Monad.Free.Trans
P purescript-these M Data.These
applyMaybe :: forall f a b. Apply f => Compactable f => f (a -> Maybe b) -> f a -> f b
P purescript-filterable M Data.Compactable
P purescript-machines M Data.Machine.Mealy
P purescript-hyrule M FRP.Poll
P purescript-hyrule M FRP.Event
P purescript-flare M Flare
P purescript-event M FRP.Event
applyThird :: forall x y z a. (y -> z -> x -> a) -> x -> y -> z -> a

\f x y z -> f y z x

P purescript-point-free M PointFree
applyFirst :: forall v1 v0 f c. HasApply c f => HasConst c => HasMap c f => ObjectOf c v0 => ObjectOf c v1 => ObjectOf c (f v0) => ObjectOf c (f v1) => ObjectOf c (c v1 v0) => ObjectOf c (f (c v1 v0)) => ObjectOf c (c v0 (c v1 v0)) => ObjectOf c (c (f v1) (f v0)) => ObjectOf c (c (f v1) (f v0)) => ObjectOf c (f (c v0 (c v1 v0))) => ObjectOf c (c (f v0) (f (c v1 v0))) => Restrictable Function c => Slackable c => f v0 -> c (f v1) (f v0)
P purescript-subcategory M Control.Subcategory.Endofunctor.HasApply
applyFirst :: forall v1 v0 f c. HasApply c f => HasConst c => HasMap c f => ObjectOf c v0 => ObjectOf c v1 => ObjectOf c (c v1 v0) => f v0 -> f v1 -> f v0
P purescript-subcategory M Control.Subcategory.Functor.HasApply
P purescript-data-mvc M DataMVC.ApplyCtx
P purescript-polyform M Polyform.Dual
P purescript-polyform M Polyform.Tokenized.Dual
P purescript-reactix M Reactix.React
P purescript-channel M Concurrent.Channel
P purescript-transformerless M Control.Monad.Transformerless.State
P purescript-spork M Spork.Batch
P purescript-webdriver M Selenium.Builder
P purescript-debugger M Debug
P purescript-functor-vector M Data.DenseKron
P purescript-emo8 M Emo8.Data.Draw
P purescript-impulse M Impulse.FRP.Event
P purescript-wire M Wire.Event
applyFirst :: forall a d. Syntax d => d a -> d Unit -> d a

This variant of <*> ignores its right result. In contrast to its counterpart derived from the Apply class, the ignored parts have type d Unit rather than d b because otherwise information relevant for pretty-printing would be lost.

P purescript-invertible-syntax M Text.Syntax.Combinators
P purescript-react-halo M React.Halo.Internal.Control
P purescript-wags M WAGS.Control.Indexed
P purescript-mote M Mote.Monad
applyPatch :: forall eff. Element -> View (dom :: DOM | eff) -> ViewChanges (dom :: DOM | eff) -> Eff (dom :: DOM | eff) Unit

Apply a set of ViewChanges to the DOM, under the given Node, which should be the same as the one initially passed to render.

The second argument is the most-recently rendered View, i.e. the one which should correspond to the current state of the DOM.

Note: in order to correctly remove event listeners, the View passed in must contain the same event listeners as those last attached, by reference. In practice, this means that the View passed into this function should be obtained using the patch function.

See the implementation of the run function for an example.

P purescript-purview M Purview
P purescript-plan M Plan.Trans
P purescript-selda M Selda.Query.Type