type Thing = abstract Foo<'a, 'b> : 'a -> 'b can be represented with a pair of new types:
type FooCase =
abstract Eval<'a, 'b> : 'a -> 'b
type ThingMock =
{
Foo : FooCase
}
static member Empty =
{
Foo = { new FooCase with member _.Eval a = failwith "not implemented" }
}