我有以下列表理解
member this.a l1 =
let res = [for x, y in List.zip l1 this.l2 do if y > 0 then yield (x |> double)/(y |> double) else yield 0.]
我收到了错误
类型'(float - > float)'不支持比较' 约束。例如,它不支持“System.IComparable”' 接口
预计此表达式的类型为float - >漂浮但是 这里有int类型
在y > 0
表达式。
有没有办法指导编译器,x
和y
是某种类型,还是l1
和l2
属于同一类型?< / p>
修改
我实际拥有的是a
在一个类中,更新以反映这一事实。
答案 0 :(得分:4)
每当您创建命名值时,您都可以指定类型:y:int
。例如:[for y:int in 1..10 -> y]
。
正如评论中所述,我认为这不会解决您的问题,但它可能会帮助您缩小您的资源来源。可能的罪魁祸首是您对l2
的定义。我猜测你是使用一个带有多个参数的函数来定义它的,但却无法提供足够的参数,从而产生float->float
类型的函数,而不仅仅是float
。