F# SRTP可以使用内部成员吗?

F# SRTP可以使用内部成员吗?,f#,inline,F#,Inline,我知道内联代码的实现不能使用内部/私有代码。然而,令我惊讶的是,我甚至不能使用SRTP(静态解析类型参数)将内部类型传递给内联函数 考虑这一点: type internal A = { A: int } let inline f (x: ^a) = (^a: (member A: _) x) let a = { A = 0 } let x = f a 最后一个a,由于编译错误而失败: 从A的定义中删除internal可以修复错误 这是故意的吗?除了复制到匿名记录(例如,将A替换为{

我知道
内联
代码的实现不能使用内部/私有代码。然而,令我惊讶的是,我甚至不能使用SRTP(静态解析类型参数)将内部类型传递给内联函数

考虑这一点:

type internal A = { A: int }

let inline f (x: ^a) =
  (^a: (member A: _) x)

let a = { A = 0 }

let x = f a
最后一个
a
,由于编译错误而失败:

A
的定义中删除
internal
可以修复错误

这是故意的吗?除了复制到匿名记录(例如,将
A
替换为
{| A替换为{uuuu=()|}
),还有什么方法可以在保持
A
内部的同时实现此功能