public static Op <A> WriteErr(char c, A a) => new Op <A>(WriteOp <A> .Err(c, a).Right <Either <Func <int, A>, Func <string, A> >, WriteOp <A> >());
public static WriteOp <B> Select <A, B>(this WriteOp <A> k, Func <A, B> f) => new WriteOp <B>(k.Character.Get, f(k.Value.Get), k.IsOut);
public static Op <A> WriteOut(char c, A a) { return(new Op <A>(WriteOp <A> .Out(c, a).Right <Either <Func <int, A>, Func <string, A> >, WriteOp <A> >())); }