我正在閱讀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