为什么将ref类型传递给F#函数期望byref类型错误?

Mar*_*nic 4 f#

let a = ref 0
let f (x: byref<int>) = x

f a // type error

System.Int32.TryParse("123",a) // works
Run Code Online (Sandbox Code Playgroud)

f a作为一个类型错误令我感到困惑,因为a可以传递给byref<int>类型的.NET库方法.为什么?

编辑:我想我真的很难解释这个问题.该类型的System.Int32.TryParsestring * byref<int> -> bool,但它的工作原理.那么为什么我不能a进入类型的函数x:byref<int> -> int?这就是我要问的全部.

kvb*_*kvb 5

F#规范的第8.13.7节对此功能进行了描述.通过"类型导向转换"启用了使用a refa byref期望的能力,但这些仅适用于成员调用,而不适用于常规函数应用程序.