イミュータブルとアイデンティティ
一方、エンティティ は 時間とともに変化する(そのために、アイデンティティを持つ) FP の値がデフォルトでイミュータブルなので、コピーを作成することで回避する サンプル
code:fsharp
let initialPerson = { PersonId = PersonId 42; Name = "Joseph" }
let updatedPerson = { initialPerson with Name = "Joe" }
これにより、変更があった場合は型シグネチャで明示する必要がある
code:fsharp
// Bad: 何も変化しない or 副次的に Person が変化した
type UpdateName = Person -> Name -> unit
// Good
type UpdateName = Person -> Name -> Person