差別化された共用体とレコード型について頭を悩ませようとしています。具体的には、読みやすくするためにそれらを組み合わせる方法。以下に例を示します。たとえば、スポーツ チームがポイント (リーグ ポイントと得失点差の両方) を獲得するか、ポイントまたは得失点差のないリーグから一時停止される可能性があるとします。それを表現しようとしたのが以下の方法です。
type Points = { LeaguePoints : int; GoalDifference : int }
type TeamState =
| CurrentPoints of Points
| Suspended
type Team = { Name : string; State : TeamState }
let points = { LeaguePoints = 20; GoalDifference = 3 }
let portsmouth = { Name = "Portsmouth"; State = points }
問題は、'State = points' と言っている最後の行の最後にあります。「式は TeamState 型であることが期待されていましたが、ここでは Points 型です」と表示されます。どうすればそれを回避できますか?