複雑なデータのモデリング
型の合成 で見た型システムを使ってドメインをモデリングする。 code:fsharp
type Order = {
CustomerInfo : CustomerInfo
ShippingAddress : ShippingAddress
BillingAddress : BillingAddress
OrderLines : OrderLine list
AmountToBill : ...
}
未知の型のモデリング
設計の初期段階では、モデリングする必要のある型の名前は分かっていても、その内部構造が分からないケースがある 明示的に未定義の型としてモデリングする
F# の場合、例外型の exn を使って、Undefined とエイリアスすると良い code:fsharp
type Undefined = exn
Undefined は以下のように使える
code:fsharp
type CustomerInfo = Undefined
これにより、ドメインモデリング中も、コードをコンパイルすることができる
code:fsharp
type ProductCode =
| Widget of WidgetCode
| Gizmo of GizmoCode