我一直在尝试了解 F# 的各个方面(我来自更多的 C# 背景),并且解析器让我感兴趣,所以我跳到了这篇关于 F# 解析器组合器的博客文章:
http://santibo.com/blog/2013/03/24/introduction-to-parser-combinators
这里的样本之一是:
/// If the stream starts with c, returns Success, otherwise returns Failure
let CharParser (c: char) : Parser<char> =
let p stream =
match stream with
| x::xs when x = c -> Success(x, xs)
| _ -> Failure
in p //what does this mean?
然而,让我对这段代码感到困惑的一件事是in p
声明。我在 MSDN 文档中查找了in
关键字:
http://msdn.microsoft.com/en-us/library/dd233249.aspx
我还发现了这个较早的问题:
这些似乎都不是相同的用法。唯一似乎合适的是,这是一个流水线构造。