F#:如何将两个列表传递给公式并返回我的结果?



所以我有这个函数,我在其中获取两个浮点列表并使用它们各自的索引元素来计算这个简单的公式:每个索引的(x-y)^2 / x(0,1,2,3...(

这是我到目前为止所拥有的:

let myCalc (list1: float list) (list2: float list) : float list  = 
List.map2 (fun x y -> (x-y)^2 / x) list1 list2

我不断收到此错误:This expression was expected to have type 'float' but here has type 'string'

为什么我上面列出的方法不起作用,但此示例确实如此:

let list1 = [1; 2; 3]
let list2 = [4; 5; 6]
let sumList = List.map2 (fun x y -> x + y) list1 list2
printfn "%A" sumList

有人可以解释一下我如何理解我编写的代码和上面列出的示例代码之间的区别吗?是的,我已经尝试将List.map2设置为变量,然后将其打印出来,但这也不起作用。我认为这与我计算的方式有关,我只是不知道出了什么问题。

另外,我希望我的输出结果存储在相应的 x 和 y 索引列表中。请帮忙。

此错误的原因相对简单,您使用了错误的幂运算符 (^(。在 F # 和一般的 ML 语言系列中,此运算符是连接字符串运算符。这就是您收到此错误的原因,因为编译器希望找到^运算符的 rvalue 和 lvalue 中string类型的两个参数。

必须使用**运算符:

let myCalc (list1: float list) (list2: float list) : float list =
List.map2 (fun x y -> (x - y) ** 2. / x) list1 list2

2int类型的文字 ,我们必须指定我们要对表达式使用float类型的文字值,因此这给了我们这个:2.

相关内容

  • 没有找到相关文章

最新更新