F # -Typeinschränkung für Datensatztyp mit spezifischer Eigenschaft

Ich versuche, eine generische Funktion zu erstellen, die von ihrem Typargument verlangt, dass es sich um einen Datensatztyp handelt und dass er eine bestimmte Eigenschaft hat. Hier ist ein Beispiel, das den relevanten Compilerfehler erzeugt:

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

eim Kompilieren erhalte ich die FehlermeldungThe record label bar is not defined.

Ich habe versucht, die folgende Typeinschränkung hinzuzufügen:

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

aber das hat auch nicht kompiliert und sich beschwert, dassThis 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.

Gibt es eine Möglichkeit, eine Typeinschränkung anzugeben, mit der ich dies ordnungsgemäß ausführen kann?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage