我在模块范围上的 let 绑定上遇到 VR 错误,说它的一个参数是通用的,但我不知道为什么该参数首先是通用的。这是代码:
let private asJsonResponse (responseSource: _ Task) =
fun (next: HttpFunc) (ctx: HttpContext) ->
task {
let! consumption = responseSource
return! json consumption next ctx
}
let getVal = someFuncThatReturnsTaskOfMyType() |> asJsonResponse
错误在最后一行:
错误 FS0030:值限制。 当将参数设为显式时,该值
getVal
已被推断为具有泛型类型val getVal: (HttpFunc -> '_a -> Task<HttpContext option>)
,或者,如果您不打算使其成为泛型,请添加类型注释。'_a :> HttpContext
getVal
我知道它基本上可以概括ctx: HttpContext
为可以转换为HttpContext
. 为什么会这样?为什么只针对这个参数而不是next: HttpFunc
?
HttpContext
是一个类并且HttpFunc
是一个函数类型,这是问题吗?