F#嵌套列出不变性

Cra*_*ard 5 f# nested list

我试图再次选择F#,我有一个案例,我发现很难处理不变性.

在大多数情况下,我发现不变性非常好.但是,我发现处理嵌套集合非常困难.

我想编写一个用户GUI程序.

为简单起见,我们说我们有这个模型:

type Employee = 
    {
        Name : string
    }

type Company =
    {
        Name : string
        Employees : Employee list
    }
Run Code Online (Sandbox Code Playgroud)

如果我修改现有Employee

let myNewEmployee = { myEmployee with Name = "John Smith" }
Run Code Online (Sandbox Code Playgroud)

我得到一个新的Employee,这很好.然而,这里出现了一系列问题:

  • 我需要删除旧的myEmployee并添加myNewEmployee到公司的员工列表中.

  • 这引发了列表中的突变,产生了一个新列表.

  • 这迫使我创建一个新的Company记录,以注入新的集合,不得不重建我有的整个公司列表.

换句话说,更改员工的姓名,使我重建整个数据结构.

每当我感到难过时,我发现F#有不同的创造性做事方式.

我假设我不知道如何以功能的方式处理这种情况,请赐教;)

我应该使用其他F#库,比如F#Data吗?

TIA,大卫