4

文字列のセットから各要素を表示する関数を作成する必要があります。私は次のことをしました:

module S = Set.Make(String);;
module P = Pervasives;;
let write x = (
        P.print_string("{"); let first = true;
    S.iter (fun str -> (if first then () else P.print_string(","); P.print_string(str))) x;
    P.print_string("}");
    P.print_newline
  );;
  ^

プログラムの最後 (その記号を配置した場所) に、次のエラーが表示されます: 構文エラー: 演算子が必要です。これを解決するのを手伝ってください。

4

2 に答える 2

7

あなたの構文上の問題はlet. 最上位コード (モジュールの最も外側のレベル) を除き、 のlet後に . を付ける必要がありますin

このコードには他にも多くの問題がありますが、これで次の問題が見つかるかもしれません :-)

いくつかのメモ:

OCaml の変数は不変です。したがって、名前付きの変数firstは常に true になります。変更することはできません。この (一見マイナーな) ポイントは、関数型プログラミングの鍵の 1 つです。

Pervasivesモジュールを名前で参照する必要はありません。それが「浸透」と呼ばれる理由です。あなたはそれ自体で言うことができprint_stringます。

への最後の電話は電話でprint_newlineはありません。この式は、関数自体に評価されるだけです。(関数を呼び出したい場合は、引数を与える必要があります。)

于 2013-10-27T17:27:36.327 に答える