2015-11-19 58 views
0

在F#,收到错误时,我写入以下代码:无法执行基本的算术运算

let records = {1..100} 
let middleElement= records |> Seq.length/2 

类型“INT”不匹配的类型“”一 - > INT”

我知道这个错误是基本的。 但我是F#的新手,真的不知道我需要做什么来解决这个错误。

回答

6

您需要添加括号:

let middleElement = (records |> Seq.length)/2 

在您的版本中,编译器将读取你的代码

let middleElement = records |> (Seq.length/2) 

...它会很困惑,因为它认为你正试图分裂通过2的功能length

1

我赞同Tomas Petricek的回答,但你也可以这样写。 :-)

let records = {1..100} 
let middleElement = records |> Seq.length |> (/) <| 2 

这就是说,把记录,喂给他们的长度函数。将结果作为除法(/)函数的第一个参数提供。这将导致一个函数接受一个int并返回一个int(int - > int)。然后,我们喂2到功能得到50

[编辑]我才意识到,这可能是更清楚

let records = {1..100} 
let middleElement = let length = records |> Seq.length in length/2;;