私はのリストを持っています
type my_sum = {a : type_a} / {b : type_b}
mylist = [{field_only_in_a = "test"} : type_a,{haha=3 ; fsd=4} : type_b]
私はそれをしたい:
result = List.find( a -> match a with
| {a = _} -> true
| _ -> false
end,
mylist)
if Option.is_some(result) then
Option.some(Option.get(result).field_only_in_a)
else
Option.none
ご覧のとおり、検索後は必ず何かを取得しますtype_a
が、コンパイル時に取得します。
Record has type
{ a : type_a } / { b : type_b } but field access expected it to have type
{ field_only_in_a: 'a; 'r.a }
Hint:
You tried to access a sum type with several cases as a record.
合計タイプの1つのタイプのみを抽出し、レコードにアクセスするのに適したタイプがあることを、コンパイル者にどのように伝えることができますか...?