public static async Task <TResult> Run <TReader, TWriter, TResult>(this ReaderWriterAsync <TReader, TWriter, TResult> self, Action <TWriter> p, TReader r) { var t = await self(p, r); t.Output.Iter(p); return(t.Result); }
public static ReaderWriterAsync <TReader, TWriter, TResult1> SelectMany <TReader, TWriter, TResult, TResult1>(this ReaderWriterAsync <TReader, TWriter, TResult> self, Func <TResult, ReaderWriterAsync <TReader, TWriter, TResult1> > selector) => async(p, r) => { var t = await self(p, r); t.Output.Iter(p); return(await selector(t.Result)(p, r)); };
public static ReaderWriterAsync <TReader, TWriter, TResult2> SelectMany <TReader, TWriter, TResult, TResult1, TResult2>(this ReaderWriterAsync <TReader, TWriter, TResult> self, Func <TResult, ReaderWriterAsync <TReader, TWriter, TResult1> > selector, Func <TResult, TResult1, TResult2> mapper) => async(p, r) => { var t = await self(p, r); t.Output.Iter(p); var t1 = await selector(t.Result)(p, r); t1.Output.Iter(p); return(mapper(t.Result, t1.Result).WithLogs(Enumerable.Empty <TWriter>())); };
public static ReaderWriterAsync <TReader, TWriter, TResult1> Select <TReader, TWriter, TResult, TResult1>(this ReaderWriterAsync <TReader, TWriter, TResult> self, Func <TResult, TResult1> selector) => async(p, r) => { var t = await self(p, r); t.Output.Iter(p); return(selector(t.Result).WithLogs(Enumerable.Empty <TWriter>())); };