# Applicative

## Definitions

`def <**>(ma: m[a], mf: m[a -> b \ ef]): m[b] \ ef`

Source`<**>`

is a variant of the operator `<*>`

with its arguments flipped.

The order of evaluation is `ma`

then `mf`

.

`def product(fa: m[a], fb: m[b]): m[(a, b)]`

SourceChain two applicative actions, returns the product of their results.

`def product3(x1: m[t1], x2: m[t2], x3: m[t3]): m[(t1, t2, t3)]`

SourceChain three applicative actions, return the 3-tuple of their results.

`def product4(x1: m[t1], x2: m[t2], x3: m[t3], x4: m[t4]): m[(t1, t2, t3, t4)]`

SourceChain four applicative actions, return the 4-tuple of their results.

`def product5(x1: m[t1], x2: m[t2], x3: m[t3], x4: m[t4], x5: m[t5]): m[(t1, t2, t3, t4, t5)]`

SourceChain five applicative actions, return the 5-tuple of their results.

`def productLeft(fa: m[a], fb: m[b]): m[a]`

SourceChain two applicative actions, return only the result of the first.

`def productRight(fa: m[a], fb: m[b]): m[b]`

SourceChain two applicative actions, return only the result of the second.