リストを受け取ってオプション リストを返す再帰関数に問題があります。たとえば、関数all_except_one
:
val all_except_one : 'a -> 'a list -> 'a list option = <fun>
の最初の出現箇所が'a
リストから削除されます。'a
がリストにない場合は、を返す必要がありますNone
。
オプションがなければ、次のようなコードがあります。
let same_string s1 s2 =
s1 = s2
let rec all_except_one str str_l =
match str_l with
| [] -> []
| hd::tl -> if same_string hd str
then tl
else hd::(all_except_one str tl)
しかし、オプションを追加しようとすると、再帰呼び出しを行うときに邪魔になります。