Вот еще одно повторение:
let inline f< ^T>(x:^T) = box x
type test4<'a> = | A of 'a
with
member t.M() =
match t with
| A a -> f a
string
- встроенная функция, использующая статические ограничения типа, и диагностика ошибок для таких функций иногда неэффективна.Я не совсем понимаю само диагностическое сообщение, но дело в том, что на сайте вызова мы не знаем универсальный тип 'a
, что означает, что мы не можем встроить правильную версию вызова в string
(или f
в моем репро).Например, в случае, когда вы повышаете до obj
, мы знаем, что хотим встроить obj
версию string
, так что все в порядке.