私はOCamlを学んでおり、私が自分自身に与えた練習上の問題の1つは、作成されたリスト内の要素のインデックスを見つけることです。これまでのところ、私はそれを持っていると思っていましたが、私はこのコードブロックを何年もの間書き直していて、戻り値が正しくない理由を理解できないようです。
let rec indexer_helper list element index pos found=
match l with
[] -> if (found = false) then
(-1)
else
index
| (h::t) -> if (h = e) then
index = pos
pos = pos + 1
indexer_helper t element index pos true
else
pos = pos + 1
indexer_helper t element index pos found;;
let rec indexer list element = indexer_helper list element 0 0 false;;
編集:問題は解決しました。問題は、不変変数を「変更」するときにletステートメントを使用するのを忘れていたことです。