私はいくつかのソースコードを見てきました
let rec parse_document = parser
| [< len = parse_int32; st; >] ->
parse_list [] (ES.take_int32 len st)
| [< >] -> malformed "parse_document"
[< >]
中身はわかりますか?この種の兆候についてグーグルで検索するのは難しすぎます。
私はいくつかのソースコードを見てきました
let rec parse_document = parser
| [< len = parse_int32; st; >] ->
parse_list [] (ES.take_int32 len st)
| [< >] -> malformed "parse_document"
[< >]
中身はわかりますか?この種の兆候についてグーグルで検索するのは難しすぎます。
これはStreamデータ型のシンタックス シュガーです。その操作については、『 Developing Applications with OCaml』という本のこの章で詳しく説明されています。
シンタックス シュガーはコンパイラに組み込まれておらず、Camlp4 プリプロセッサで前処理する必要があります。-pp camlp4o
これを行うには、コンパイル コマンド ラインに追加する必要があります。
これはストリームです。主にパーサーを作成するために使用されます。しかし、ストリームは OCaml から削除され、現在は camlp4 拡張機能として提供されています。
これはStream 解析構文拡張の一部であり、空のストリームを意味します。
これがストリームのリテラル構文です。ストリームは、一度に 1 つの要素しか使用できず、最初の要素を読み取って削除することを除いて、リストと同じです。
主にパーサーコードに使用されているようです。parser
あなたの例のようにキーワードで宣言されたパーサーは、ストリームの要素を「消費」できる関数です。