[解決済み] 関数内でのOCamlのシンタックスエラー
2022-02-26 04:41:50
質問
文字列のセットから各要素を表示する関数を作成する必要があります。私は以下のようにしました。
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
);;
^
プログラムの最後(あの記号を置いたところ)で、エラーが発生したようです。Syntax error: operator expected. これを解決するのを助けてください。
どのように解決するのですか?
この構文の問題は
let
. トップレベルコード(モジュールの一番外側のレベル)を除く。
let
は、必ずその後に
in
.
このコードには他にも多くの問題がありますが、もしかしたらこれで次の問題が見つかるかもしれません :-)
少し注意点を。
OCamlの変数はイミュータブル(不変)です。そのため
first
は常に真である。それを変更することはできない。この(一見些細な)点が、関数型プログラミングの鍵の1つです。
を参照する必要はありません。
Pervasives
モジュールの名前を指定します。それが、"pervasive"と呼ばれている理由です。ただ、次のように言えばいいのです。
print_string
を単体で使用します。
最後の呼び出しは
print_newline
は呼び出しではありません。この式は関数そのものとして評価されるだけです。(関数を呼び出したい場合は引数を与える必要があります)。
関連
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み] 関数名を文字列として取得するには?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み] カプセル化された匿名関数の構文について説明します。
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み] バリューレシーバー vs. ポインターレシーバー
-
[解決済み] 関数が長すぎる場合とは?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MATLAB関数におけるオプションの引数
-
[解決済み] "パラメータ "と "引数 "の比較【重複
-
[解決済み】コールバックをわかりやすく説明するには?ある関数から別の関数を呼び出すのとはどう違うのですか?
-
[解決済み】関数定義にジャンプする
-
[解決済み】Scalaの「リフティング」とは何ですか?
-
[解決済み】Luaの.と:の違いについて
-
[解決済み] swiftで関数から複数の値を返す
-
[解決済み] どのように私はSwiftで完了ハンドラを持つ関数を作成することができましたか?
-
[解決済み] バリューレシーバー vs. ポインターレシーバー
-
[解決済み] Clojureで関数の引数にデフォルト値を作成する方法