Ограничение типа F # для типа записи с определенным свойством

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

let foo<'a> (a : 'a) =
    a' = { a with bar = "baz" }
    a'

Компиляция этого я получаю сообщение об ошибкеThe record label bar is not defined.

Я попытался добавить следующее ограничение типа:

let foo<'a when 'a : (member Id : string)> =
    // ...

но это тоже не скомпилировалоThis code is not sufficiently generic. The type variable ^a when ^a : (member get_Int : ^a -> string) could not be generalized because it would escape its scope.

Есть ли способ указать ограничение типа, которое позволило бы мне сделать это правильно?

Ответы на вопрос(3)

Ваш ответ на вопрос