我正在阅读f#代码,我对语法感到困惑。解析器型介绍如下:如何解释f#中的这个部分函数语法?
type Parser<'r> = Parser of (char list -> ('r*char list) list)
这是通过解释器评价为:
type Parser<'r> = | Parser of (char list -> ('r * char list) list)
这是有意义的我。然后,新的代码线被引入:“A解析器功能也需要施加所以我们定义一个局部函数是:”和后面的代码:
let parse (Parser p) = p
和解释器的输出是:
Parser<'a> -> (char list -> ('a * char list) list)
我很惊讶这是甚至有效的语法。这是什么,为什么它需要?
非常感谢
非常感谢,upvoted并接受为答案。我不知道使用的符号是模式匹配表达式的简写,函数被绑定到p。 (Pattern p)没有意义,我认为它应该是(p:Pattern)或其他东西,但现在它是有意义的。 – 2012-01-31 15:14:42