0
我有這個函數檢查解析器的列表,如果他們工作與否。我收到錯誤:EQUALO LPAREN FN。任何幫助?(sml)語法錯誤?
fun oneOf [] = fn inp => NONE
| oneOf (p::ps) = (fn inp => case parse p inp of
NONE => oneOf ps inp
| SOME (v,out) => SOME (v,out))
我有這個函數檢查解析器的列表,如果他們工作與否。我收到錯誤:EQUALO LPAREN FN。任何幫助?(sml)語法錯誤?
fun oneOf [] = fn inp => NONE
| oneOf (p::ps) = (fn inp => case parse p inp of
NONE => oneOf ps inp
| SOME (v,out) => SOME (v,out))
與fn
定義的函數可以具有多個箱子,正如與fun
定義的函數。所以你可以寫一些像fun pat1 => exp1 | pat2 => exp2
這樣的東西。這意味着當SML解析器在第2行開頭看到|
時,它假定它屬於第1行的fn
,而不屬於fun
(因爲fn
最近出現)。所以當它到達=
時,它很困惑,因爲它預期爲=>
。
要解決您的問題,在第1行用括號括住fn
。
+1它比我想象的微妙:)。 – pad 2013-02-15 19:55:48