Я не верю, что возможно иметь абстрактные встроенные методы. Даже если бы вы могли, ваш код не работал бы, потому что ваше определение интерфейса обещает, что пользователи могут вызывать его с любым 'a
, но ваша реализация накладывает статическое ограничение члена на 'a
- в гипотетическом мире, где F # поддерживает абстрактные inline методы, объявление метода в интерфейсе также должно включать ограничение.
В любом случае, чтобы понять, почему F # не поддерживает абстрактные встроенные методы, рассмотрите, что означает inline
: код, который вы пишете для реализации метода, будет по существу скопирован и вставлен в сайт вызова. Однако, с абстрактным методом, вы не знаете конкретный тип, который определяет реализацию метода, поэтому нет способа выяснить во время компиляции, какой код вы должны встраивать!