La réponse du CMS est définitivement correcte. Voici un ajout qui peut également être utile. En F#, vous souhaitez souvent écrire le type en utilisant simplement des propriétés immuables. En utilisant la syntaxe "object initializer", les propriétés doivent être mutables. Une alternative en F# est d'utiliser des arguments nommés, ce qui vous donne une syntaxe similaire, mais garde les choses immuables :
type Person(name:string, ?birthDate) =
member x.Name = name
member x.BirthDate = defaultArg birthDate System.DateTime.MinValue
Maintenant, nous pouvons écrire :
let p1 = new Person(name="John", birthDate=DateTime.Now)
let p2 = new Person(name="John")
Le code vous demande de spécifier le nom, mais l'anniversaire est un argument facultatif avec une valeur par défaut.