示例#1
0
 public ProblemQualified <V> SelectMany <U, V>(Func <T, ProblemQualified <U> > tu, Func <T, U, V> tuv) =>
 TerminalOrValue.Match(
     term => new ProblemQualified <V>(Either <Array1 <string>, V> .FromLeft(term), NonTerminalWarnings),
     val =>
     tu(val).Let(nq => new ProblemQualified <V>(nq.TerminalOrValue.Map(x => x, x => tuv(val, x)), NonTerminalWarnings.Concat(nq.NonTerminalWarnings))));
示例#2
0
 public static ProblemQualified <T> ForTerminal(string terminal) => new ProblemQualified <T>(Either <Array1 <string>, T> .FromLeft(Array1.Build(terminal)), Enumerable.Empty <string>());
示例#3
0
 public static ProblemQualified <T> ForTerminal(Array1 <string> terminal, IEnumerable <string> nonTerminalWarnings) => new ProblemQualified <T>(Either <Array1 <string>, T> .FromLeft(terminal), nonTerminalWarnings);
示例#4
0
 public static DrawnResult <TFinalValue, TDrawInput, TDrawResult> Return(TFinalValue t) => new DrawnResult <TFinalValue, TDrawInput, TDrawResult>(Either <TFinalValue, Draw> .FromLeft(t));