<*

Sequence actions, discarding the value of the second argument.
Sequence actions, discarding the value of the second argument. Using ApplicativeDo: 'as <* bs' can be understood as the do expression
do a <- as
bs
pure a
Like *, but the "wholes" come from the left
Same as the usual <* except a Format is no Functor, let alone Applicative.
Sequential application. A few functors support an implementation of <*> that is more efficient than the default one.

Example

Used in combination with (<$>), (<*>) can be used to build a record.
>>> data MyState = MyState {arg1 :: Foo, arg2 :: Bar, arg3 :: Baz}
>>> produceFoo :: Applicative f => f Foo

>>> produceBar :: Applicative f => f Bar

>>> produceBaz :: Applicative f => f Baz
>>> mkState :: Applicative f => f MyState

>>> mkState = MyState <$> produceFoo <*> produceBar <*> produceBaz
A variant of <*> with the types of the arguments reversed. It differs from flip (<*>) in that the effects are resolved in the order the arguments are presented.

Examples

>>> (<**>) (print 1) (id <$ print 2)
1
2
>>> flip (<*>) (print 1) (id <$ print 2)
2
1
>>> ZipList [4, 5, 6] <**> ZipList [(+1), (*2), (/3)]
ZipList {getZipList = [5.0,10.0,2.0]}
Raise the target of a floating-point valued Lens into your Monad's state to an arbitrary power and return the result. When you do not need the result of the operation, (**=) is more flexible.
(<**=) :: (MonadState s m, Floating a) => Lens' s a -> a -> m a
(<**=) :: (MonadState s m, Floating a) => Iso' s a -> a -> m a
Raise the target of a floating-point valued Lens to an arbitrary power and return the result. When you do not need the result of the operation, (**~) is more flexible.
(<**~) :: Floating a => Lens' s a -> a -> s -> (a, s)
(<**~) :: Floating a => Iso' s a  -> a -> s -> (a, s)
Multiply the target of a numerically valued Lens into your Monad's state and return the result. When you do not need the result of the multiplication, (*=) is more flexible.
(<*=) :: (MonadState s m, Num a) => Lens' s a -> a -> m a
(<*=) :: (MonadState s m, Num a) => Iso' s a -> a -> m a
Multiply the target of a numerically valued Lens and return the result. When you do not need the result of the multiplication, (*~) is more flexible.
(<*~) :: Num a => Lens' s a -> a -> s -> (a, s)
(<*~) :: Num a => Iso'  s a -> a -> s -> (a, s)
Deprecated: This is no longer necessary, and will be removed. Use <* instead.
Deprecated: This is no longer necessary, and will be removed. Use <* instead.
Sequential application. A few functors support an implementation of <*> that is more efficient than the default one.

Example

Used in combination with (<$>), (<*>) can be used to build a record.
>>> data MyState = MyState {arg1 :: Foo, arg2 :: Bar, arg3 :: Baz}
>>> produceFoo :: Applicative f => f Foo
>>> produceBar :: Applicative f => f Bar

>>> produceBaz :: Applicative f => f Baz
>>> mkState :: Applicative f => f MyState

>>> mkState = MyState <$> produceFoo <*> produceBar <*> produceBaz
Apply a possibly-empty-with-unit container of functions to a non-empty container of values.
Add more positional information for entities of a span.
A variant of <*> with the types of the arguments reversed. It differs from flip (<*>) in that the effects are resolved in the order the arguments are presented.

Examples

>>> (<**>) (print 1) (id <$ print 2)
1
2
>>> flip (<*>) (print 1) (id <$ print 2)
2
1
Sequential application. A few functors support an implementation of <*> that is more efficient than the default one. Using ApplicativeDo: 'fs <*> as' can be understood as the do expression
do f <- fs
a <- as
pure (f a)