F# - 从Expr中提取参数

时间:2011-04-22 19:40:03

标签: f#

我的问题永无止境......

我有这个功能:

let hasMany (expr:Expr<'a -> seq<'b>>)

现在我想从seq<'b>中提取Expr,因为我需要将其转换为ICollection<'b>并将其换回新的Expr - 为什么不呢?从Expr开始,你需要ICollection<'b> - 你可能会问一个简单的用户需要先将seq<'b>转换为ICollection<'b>,我我试图避免,因为我正在创建一个将被其他人使用的库,而不是我,我想让它变得简单和干净。

简短:如何从seq<'b>中提取Expr

1 个答案:

答案 0 :(得分:3)

你的问题对我没有意义。根据您的类型,seq<'b>中没有expr - expr是包含函数的表达式,其中返回 a {{1 }}。例如,通过你已经获得的签名,调用

是有效的
seq<'b>

因为hasMany <@ id @> 可以被赋予类型id。但是,'b seq -> 'b seq显然不包含<@ id @>

如果您要求将seq<'b>转换为Expr<'a -> seq<'b>>,请尝试以下操作:

Expr<'a -> ICollection<'b>>