1

それで、私はhttp://www.podval.org/~sds/ocaml-sucks.htmlを読んでいました。これには、この引用が含まれています(ocamlの問題のコンテキストで):

実際には、わずかに異なる 3 つの構文があります。

  • 公式のものはマニュアルに記載されています
  • そのスーパーセットはコンパイラ ocamlc によって受け入れられます
  • プリプロセッサ Camlp4 は似たような (しかし少しだけ異なる) ものを受け入れます (例えば、List.map [1;2;3] ~f:fun x -> x を受け入れます。これはトップレベルでも受け入れられますが、コンパイラではありません)

ocamlc で受け入れられるが、マニュアルと一致しない ocaml コード フラグメントの例は何ですか?

PS - 私は主に OCaml 4.00.1 に興味がありますが、以前のバージョンも興味深いです...

4

2 に答える 2

2

このページはかなり古いため、確かではありませんが、すべての点についてまだ真実です.

3 番目の項目は、ocaml 4.00 のトップレベルを考慮すると false です (List.map のパラメーターの順序が間違っていることも考慮すると...):

 $ List.map  ~f:fun x -> x [1;2;3];;
 Error: Syntax error        
 $ List.map ~f:(fun x -> x) [1;2;3];;
 File "", line 1, characters  12-24:
 Error: The function applied to this argument has type 'a list -> 'b list 
 This argument cannot be applied with label ~f

私の知る限り、トップレベルはocamlと同じコードを使用してコードを解析しています...

于 2012-12-13T15:31:06.900 に答える