2017-12-24 2 views
-1

これは私の初めてのsmlです。構文エラー:LPARENを挿入する

私はこの構文と間違っているものを理解していない:

fun merge (l1 : int list , l2 : int list) : int list = 
    if ([] , l2) then l2 
    else if (l1 , []) then l1 
    else (x :: xs , y :: ys) 
     if x < y then x :: (merge (xs , l2)) 
      else y :: (merge (l1 , ys))); 

答えて

1

問題がif/then/else構文は、パターン・マッチングのために使用されていないということです助けてください。 (あなたは2つの無関係な構文を融合しました。)

ので、例えば、if ([] , l2)は動作しません、if式の条件が([], l2)にはないタイプboolを、持っている必要があるため。

代わりに、あなたが書きたい:

fun merge ([], l2) = l2 
    | merge (l1, []) = l1 
    | merge (l1 as x :: xs, l2 as y :: ys) = 
     if x < y 
     then x :: merge (xs, l2) 
     else y :: merge (l1, ys) 
+0

ありがとうございました。それは働いた –

+0

@ ShayChercavsky投稿があなたの質問に答えた場合は、[回答としてマークする](https://stackoverflow.com/help/someone-answers)と考えてください。 – hnefatl

関連する問題