namespace CanonSharp.Combinator.Abstractions;
///
/// 解析器结果
///
/// 输入流类型
/// 实际结果类型
public interface IParseResult
{
///
/// 实际结果对象
///
public T Value { get; }
///
/// 在当前结果上应用下一个解析器
///
/// 下一个解析器的函数
/// 处理解析结果的后继函数
/// 下一个解析器函数返回的解析结果类型
/// 最终的解析结果类型
///
internal IParseResult Next(Func> nextParser,
Func, IParseResult> continuation);
///
/// 映射结果
///
/// 映射结果的函数
/// 映射结果函数返回解析结果的类型
/// 最终的解析结果
public IParseResult Map(Func map);
///
/// 在成功或者失败解析结果上应用不同的后继函数
///
/// 在成功解析结果上应用的函数
/// 在失败解析结构上应用的函数
/// 最后返回解析结果的类型
/// 最后的解析结果
public TResult CaseOf(Func, TResult> successfulHandler,
Func, TResult> failedHandler);
}