Adding a
WriterArrow to an arrow type, but not necessarily as
the outer arrow transformer.
Typically a composite arrow type is built by applying a series of
arrow transformer to a base arrow (usually either a function arrow or
a
Kleisli arrow. One can add a transformer to the top of this
stack using the
lift method of the
ArrowTransformer
class, or remove a state transformer from the top of the stack using
the
runWriter encapsulation operator. The methods of this class
add and remove state transformers anywhere in the stack. In the
instance
instance Arrow a => ArrowAddWriter w (ArrowWriter w a) a
they are equivalent to
lift and
runWriter respectively.
Instances are lifted through other transformers with
instance ArrowAddWriter w a a' =>
ArrowAddWriter w (FooArrow a) (FooArrow a')