0

パーサーのリストが機能するかどうかをチェックするこの関数があります。エラーが表示されます: EQUALO LPAREN FN. 何か助けはありますか?

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))
4

1 に答える 1

3

で定義されfnた関数は、 で定義された関数と同様に、複数のケースを持つことができますfun。のような書き方ができますfun pat1 => exp1 | pat2 => exp2。これは、SML パーサーが行 2 の先頭で を検出すると、それがではなく、行 1|の に属していると見なすことを意味します(が最近来たため)。そのため、に到達すると、 を予期していたため混乱します。fnfunfn==>

fn問題を解決するには、オンライン 1 を括弧で囲みます。

于 2013-02-15T19:50:42.230 に答える