Я пытаюсь определить встроенную функцию, которая может выполнять арифметические c операции над несколькими типами - в том числе над пользовательскими типами - обобщенным образом c. Однако, похоже, что встроенная функция делает вывод о преждевременном выводе своего типа.
Мой пользовательский тип следующий:
type ^T Foo (x: ^T) =
static member inline (*) (x: ^T, y: Foo< ^T>) = Foo x
, и вот как я хочу его использовать:
let foo = Foo 1
let F () = 1 * foo // works
let inline G x = 1 * x // G inferred as int -> int
let z1 = G 1 // works
let z2 = G foo // error: expected int not Foo
Каков наилучший способ написания обобщенных c функций, таких как G, при простоте?