FS0005: это поле не является изменяемым

Это сообщение присваивается, если поле записи мутабельно назначено, но поле записи не помечается изменяемым.

В следующем коде объявляется запись с неизменяемыми полями, создается экземпляр этой записи, а поле этой записи неизменяемо присваивается, показывающее ошибку:

type Food =  { Kind: string
               DaysOld: int }

let apple = { Kind = "apple"
              DaysOld = 10 }

apple.Kind <- "orange"

Этот код приводит к следующим выходным данным:

error FS0005: This field is not mutable

Здесь неизменяемое поле Kind записи было назначено строковое значение "оранжевый", но F# не поддерживает изменяемое назначение, если поле явно не отмечено таким образом.

Чтобы решить это сообщение, необходимо изменить способ определения поля или способ настройки нового значения.

Если вы на самом деле предназначено для записи, чтобы иметь изменяемое поле (это довольно редкий подход), можно пометить поле как mutable в определении типа, как показано здесь:

type Food =  { mutable Kind: string
               DaysOld: int }

let apple = { Kind = "apple"
              DaysOld = 10 }

apple.Kind <- "orange"

Тем не менее, это более идиоматично в F# для выполнения неизменяемого обновления записи через with выражение, которое создает копию исходной записи с полями, заданными для новых значений, как показано здесь:

type Food =  { Kind: string
               DaysOld: int }

let apple = { Kind = "apple"
              DaysOld = 10 }

let orange = { apple with Kind = "orange" }