ich den folgenden CodeWie zu verwandeln OO ruft eine einige generische Funktion ruft in
type Show<'a> =
abstract member Show: 'a -> string
type Shows() =
member inline this.GetShow(x:string) =
{new Show<string> with member this.Show(x:string) = x}
member inline this.GetShow(x:int) =
{new Show<int> with member this.Show(x:int) = sprintf "%A" x}
, die perfekt funktioniert, wenn ich es so nennen sich mit den normalen OO-Notation haben.
printfn "100 %s" (Shows().GetShow("some").Show("some"))
Allerdings würde Ich mag, dass in eine Funktion wickeln, so dass
let inline show x = (Shows().GetShow(x).Show(x))
Aber das gibt mir die folgenden Fehler
[FS0041] A unique overload for method 'GetShow' could not be determined based
on type information prior to this program point. A type annotation may be
needed. Candidates:
member Shows.GetShow : x:int -> Show<int>,
member Shows.GetShow : x:string -> Show<string>
Irgendwelche Ideen, wie dies zu überwinden?