私はリストを読み込んでリストの先頭に現れるすべてのcharを削除するOCamlコードを書いています。たとえば、リストremoveI['i';'i';'a';'c';'i']
は-: int * char list = ['a';'c';'i']
を返さなければなりません。リストの先頭に2 'iがあるからです。私はこれを正しく実装する方法を知っていると信じています。しかし、私は削除された 'iの数と' iが削除された新しいリストの数を含むタプルを返したい。私はそれが混乱して聞こえるかもしれないことを知っているが、例はremoveI['i';'i';'a';'c';'i'] -: int * char list = (2,['a';'c';'i'])
になるだろう2 '私は削除され、削除された新しいリストは'私です。OCamlはリスト内の連続した要素をカウントします
これまでのところ、私は以下の機能を持っている:
let rec removeI list = match list with
| [] -> []
| x::[] -> x::[]
| x::y::t1 -> if x='i' then removeI (y::t1)
else list;;
これは最初にリストを返す「私が削除されますが、私は削除の数含めるしようとすると、エラーを得続ける」私はの一部としてですがタプル。誰かが正しい方向に私をプッシュできますか?ありがとう!