@TimC, вы правы, он работает только с одним типом без встроенного, какой бы тип ни использовался первым, кажется, что тип выводит использует его в первый раз, чтобы исправить типы для всего приложения

аюсь определить универсальный оператор сложения для класса-оболочки. Пока у меня есть это: (упрощенно из фактического кода)

type Wrap<'a> =
    | Wrap of 'a
    static member inline (+) (Wrap x, Wrap y) = Wrap (x + y)

let inline addSelf x = x + x

и действительно это работает:

let i = addSelf (Wrap 1)  // returns Wrap 2
let f = addSelf (Wrap 1.) // returns Wrap 2.0

но следующая альтернатива addSelf не компилируется

let inline addSelf'  (Wrap x) = (Wrap x) + (Wrap x) // compile error

выдача ошибки FS0193: параметру типа не хватает ограничения 'когда (^ a или ^? 15169): (статический член (+): ^ a * ^? 15169 -> ^? 15170)'

Почему более ограниченный addSelf 'не работает, когда addSelf работает нормально? Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос