Das Folgende funktioniert gut, wie man es bei einem System vom Typ des polymorphen Curry-Typs erwarten würde, wo z.B. die Identitätsfunktion ist eigentlich eine unendliche Familie von Funktionen, eine für jeden Typ ‚a ->‘ a:F # polymorphe Typen
let f x = x
printfn "%A" (f 2)
printfn "%A" (f 3.4)
Aber wenn wir versuchen, etwas ein wenig komplizierter zu machen, es scheitert in der dritten Zeile, „das Ausdruck wurde erwartet, Typ int haben, aber hier hat Schwimmer Typ ":
let f x = string x
printfn "%A" (f 2)
printfn "%A" (f 3.4)
(aber die zweite Zeile die dritte Zeile Arbeit macht Kommentierung aus, wie erwartet.)
A priori würde ich Typ erwartet Rückschluss auf beide Verhalten Curry-Stil, wo ein unspezifizierter Typ ist effektiv ein generisch, oder auch, um nur eine Version der Funktion zu sperren, aber soweit ich sehen kann, macht es ersteres im ersten Fall und letzteres im zweiten Fall. Ich vermute, dass hinter dem Verhalten, das ich gerade nicht aufnehme, eine gewisse Logik steckt. Was vermisse ich?
Um nur ein wenig zu erläutern, bedeutet dies, dass "let inline f x = string x" das zweite Beispiel wie das erste verhalten lässt. – kvb