のリストを反復処理し、要素をスキップこれはやって奇妙なことのように思えるかもしれません、あなたは確かにそれを行うには良い方法を提案することを歓迎しています。私は関数に渡されたリストの各要素をスクロールしたいのOCaml:もし間違ってコンストラクタ
:
は、ここに私の目標です。それがコンストラクタYの場合は、その上でいくつかの関数を呼び出す必要があります。それがコンストラクタZの場合、私はそれをスキップしたいと思います。
if文でこれをチェックする方法があれば、私は他を記述する必要はないので、それが進むべき道のように思えます。しかし、私は試合でこれをチェックする方法しか知りません。例えば
:
let myFunct list =
List.iter (fun x -> match x with
| Y y -> otherFunction y
) list;;
さて、これは私にだから私のような存在で何かを投げることができZ.を扱うことができないという警告を与える...もちろん
let myFunct list =
List.iter (fun x -> match x with
| Y y -> otherFunction y
| Z z -> (*skip*)
) list;;
、私はちょうど空白Zの試合を残すことはできません....
私は私が何をしようとしている達成することができますどのように?
(リストのすべての要素は同じ型です.OCamlの厳密な型定義がこれを強制します。同じ型の異なるコンストラクタについて話しています) –
"同じリストに異なるタイプの要素を含めることができるという意味で「タイプ」します。 「コンストラクタ」は、可能性の低い過度のシノニムです。 –
注釈と固定 –