Module WithArgument.Infix

include { ... };
module FunctorExtensions: { ... };
let (<$>): ('a => 'b) => Functor.t('a) => Functor.t('b);
let (<#>): Functor.t('a) => ('a => 'b) => Functor.t('b);
let (<$): 'a => Functor.t('b) => Functor.t('a);
let ($>): Functor.t('a) => 'b => Functor.t('b);
let (<@>): Functor.t(('a => 'b)) => 'a => Functor.t('b);
include { ... };
module ApplyExtensions: { ... };
let (<*>): Apply.t(('a => 'b)) => Apply.t('a) => Apply.t('b);
let (<*): Apply.t('a) => Apply.t('b) => Apply.t('a);
let (*>): Apply.t('a) => Apply.t('b) => Apply.t('b);
include { ... };
module MonadExtensions: { ... };
let (>>=): Monad.t('a) => ('a => Monad.t('b)) => Monad.t('b);
let (=<<): ('a => Monad.t('b)) => Monad.t('a) => Monad.t('b);
let (>=>): ('a => Monad.t('b)) => ('b => Monad.t('c)) => 'a => Monad.t('c);
let (<=<): ('a => Monad.t('b)) => ('c => Monad.t('a)) => 'c => Monad.t('b);
include Infix;
let (<<): ('a => 'b) => ('c => 'a) => 'c => 'b;

The << operator returns a function that is the equivalent of calling compose() with its function arguments.

(f << g)(x) is the equivalent of f(g(x)).

let sqrtCompFloor = sqrt << floor;
sqrtCompFloor(4.5) == 2.0;
let (>>): ('a => 'b) => ('b => 'c) => 'a => 'c;

The >> operator returns a function that is the equivalent of calling flipCompose() with its function arguments.

(f >> g)(x) is the equivalent of g(f(x)).

let floorFlipSqrt = floor >> sqrt;
floorFlipSqrt(4.5) == 2.0;