F# 如何用另一个类型参数约束一个类型参数

F# 如何用另一个类型参数约束一个类型参数,f#,F#,有没有办法约束一个类型参数从另一个类型参数派生 type Foo<'T, 'U when 'U :> 'T> = member x.Bar() : 'T = upcast Unchecked.defaultof<'U> 类型Foo= 成员x.Bar():'T=upcast Unchecked.defaultofNo:(。这是目前F#最不幸的限制之一(在我看来)。请参阅规范的一节,其中说明 表单类型的新约束:>'b将作为类型='b再次求解 这真是一个遗憾,

有没有办法约束一个类型参数从另一个类型参数派生

type Foo<'T, 'U when 'U :> 'T> = 
    member x.Bar() : 'T = upcast Unchecked.defaultof<'U>
类型Foo=
成员x.Bar():'T=upcast Unchecked.defaultofNo:(。这是目前F#最不幸的限制之一(在我看来)。请参阅规范的一节,其中说明

表单类型的新约束:>'b将作为类型='b再次求解

这真是一个遗憾,否则我们可以解决F#缺乏通用变异的问题:

let cvt<'a,'b when 'a :> 'b> (s:seq<'a>) : seq<'b> = // doesn't compile
  s |> box |> unbox
让cvt(s:seq=//不编译
s |>盒子|>拆箱

我们可以投票支持加入此功能吗?找到了,就在这里:新的用户语音链接