Деско ответ правильный. Что касается , почему ваш подход не работает, ключ к этому в F #, когда у вас есть что-то вроде
interface Iface with
[indented lines here]
строки с отступом могут содержать только реализации членов интерфейса. Они не должны содержать дополнительных полей или членов типа, который вы определяете (например, два изменяемых поля в вашем случае). Поэтому ответ Desco работает, как и что-то вроде следующего:
type SomeIface =
abstract id : int
type SomeClass<'T> =
interface SomeIface with
member this.id = this.id
val mutable id : int
val mutable result : 'T