1. ホーム
  2. syntax

[解決済み] はOCamlの構文糖でbegin.endですか?

2022-02-12 05:21:48

質問

で非公式なOCamlの文法を見てみると このサイト がある唯一のプロダクションは begin が表示されます。

Expression ::= begin Expression end

そして、もう少し下に行くと、次のようになります。

Expression ::= (   Expression  [:Type]   )

を適当に置き換えたりしています。 begin / end( / ) は、ある些細なコード(正しさには影響しなかった)で begin end キーワードは単なる構文上の糖分です。それとも何か見逃しているのでしょうか?

どのように解決するのですか?

"構文解析 "は、他の構成要素への単純だが些細な翻訳を示唆する。 begin .. end はシンタックスシュガーではありません。 冗長 ( .. ) というのは まさに と同じことです。

もし興味があるなら、プログラマがその意図するところは begin .. end で命令式を囲み、その副作用のために実行し、そして ( .. ) は、非単位値を持つ式である。しかし、コンパイラはそれを強制しない。言語の設計者は、このように使った方が見栄えがすると考えただけなのだ。