私が差別された組合を持っているとしましょう:
type card = Smithy | Cellar | Chapel
そして、判別共用体を何らかの値にマップする関数:
let initialCardCount = function
Smithy -> 4
Cellar -> 6
Chapel -> 2
次のように、組合の各メンバーのコストを含むマップを生成したいと思います。
[(Smithy, 4); (Cellar, 6); (Chapel, 2)]
これは可能ですか?次のようなことができるようになりたいです。
List.zip (allValues f) (List.map getCost (allValues f)) |> Map.ofList
この質問は役に立ちますが、私が必要としているものではありません。プロパティを検査するだけでなく、メモリ内のユニオン メンバーにアクセスできるようにしたいと考えています。
私がこれをやりたい理由は、ゲーム内のすべての異なる種類のカードを表す識別された共用体と、開始時に各カードが何枚あるべきかを示す関数を使用できるようにするためです。その後、イニシャルを簡単に生成できますカードからカウントへのマッピング。これを行うより良い方法はありますか?