Module Effect.Infix

type 'a t = 'a Freer.t
include Preface.Specs.Applicative.INFIX with type 'a t := 'a Freer.t
val (<*>) : ('a -> 'b) Freer.t -> 'a Freer.t -> 'b Freer.t
val (<**>) : 'a Freer.t -> ('a -> 'b) Freer.t -> 'b Freer.t
val (*>) : unit Freer.t -> 'a Freer.t -> 'a Freer.t
val (<*) : 'a Freer.t -> unit Freer.t -> 'a Freer.t
include Preface.Specs.Monad.INFIX with type 'a t := 'a Freer.t
val (=|<) : ('a -> 'b) -> 'a Freer.t -> 'b Freer.t
val (>|=) : 'a Freer.t -> ('a -> 'b) -> 'b Freer.t
val (>>=) : 'a Freer.t -> ('a -> 'b Freer.t) -> 'b Freer.t
val (=<<) : ('a -> 'b Freer.t) -> 'a Freer.t -> 'b Freer.t
val (>=>) : ('a -> 'b Freer.t) -> ('b -> 'c Freer.t) -> 'a -> 'c Freer.t
val (<=<) : ('b -> 'c Freer.t) -> ('a -> 'b Freer.t) -> 'a -> 'c Freer.t
val (>>) : unit Freer.t -> 'b Freer.t -> 'b Freer.t
val (<<) : 'a Freer.t -> unit Freer.t -> 'a Freer.t
val (<$>) : ('a -> 'b) -> 'a Freer.t -> 'b Freer.t
val (<&>) : 'a Freer.t -> ('a -> 'b) -> 'b Freer.t
val (<$) : 'a -> 'b Freer.t -> 'a Freer.t
val ($>) : 'a Freer.t -> 'b -> 'b Freer.t