什么是F#显式类型参数的用例?

Joh*_*ers 3 f# type-parameter

据我所知,值定义中的显式类型参数是克服"价值限制"问题的一种方法.
还有其他需要使用它们的情况吗?

Upd:我的意思是"显式通用构造",其中type参数包含在尖括号中,即

let f<'T> x = x
Run Code Online (Sandbox Code Playgroud)

kvb*_*kvb 5

多态递归是另一种情况.也就是说,如果要在函数体中使用不同的泛型实例,则需要在定义上使用显式参数:

// perfectly balanced tree
type 'a PerfectTree = 
| Single of 'a
| Node of ('a*'a) PerfectTree

// need type parameters here
let rec fold<'a,'b> (f:'a -> 'b) (g:'b->'b->'b) : 'a PerfectTree -> 'b = function
| Single a -> f a
| Node t -> t |> fold (fun (a,b) -> g (f a) (f b)) g

let sum = fold id (+)

let ten = sum (Node(Node(Single((1,2),(3,4)))))
Run Code Online (Sandbox Code Playgroud)