2010-11-28 12 views
1

私のコードに複数のif-elseループを作成しようとしています。ネストされたループと-elseループエラー - ocaml

let rec appendtolist n list b = 
    let f x = 
     if (b == 0) then x 
     else (append (appendtocode n (List.hd list)) (appendtolist n (List.tl list) (b-1))) 
    in 
     f list 
    ;; 

修正コード:

私の以前のコードでした

let rec appendtolist n list b = 
    let f x = 
     if b < 0 then x 
     else if (b == 0) then appendtocode n (List.hd list) (b-1) 
     else appendtocode n (List.hd list) :: appendtolist n (List.tl list) (b-1) 
    in 
     f list 
    ;; 

しかし、私はこのエラーを取得する:

This function is applied to too many arguments, maybe you forgot a `;' 

私のコードは、構文的に正しいと思われます。これはOCamlでネストされたループを実装する正しい方法ですか? if-elseifループがオンラインで見つかったため、うまくいきました。

この関数では、appendtocodeappendtolistへのすべての再帰呼び出しの後に形成されるリストであるxを最終的に出力する必要があります。

私は間違っていますか?

ご案内しています。

ありがとうございます。

appendtocode n (List.hd list) 

だから私はappendtocodeは2つの引数を取る関数であることを前提としています。あなたはこのようなappendtocodeを呼んでいるあなたの最初のコードサンプルで

答えて

1

。あなたは3つの引数でそれを呼び出しているので、ここで

appendtocode n (List.hd list) (b-1) 

:あなたはこのようにそれを呼び出している第二に

。 2つしかないので、引数が多すぎるというエラーメッセージが表示されます。

PS:文はループではありません。

+0

hi。ありがとう。構文上の誤りを認識しませんでした。私は新しい投稿で問題全体を再投稿しました。ここで上書きするのではありません。再度、感謝します。 – JJunior