所以我在Try F#上有这2个文件。唯一的区别(我可以看到)是变量名称。它们都是3行代码。它们现在托管在Try F#
上http://www.tryfsharp.org/create/zadkielmodeler/file1.fsx
http://www.tryfsharp.org/create/zadkielmodeler/file2.fsx
文件1有效,文件2没有。
我正在努力将我的大脑包裹起来。 我在自己的代码中尝试了类似的个人项目情况。
let x1Points = [0..2..100]
|> List.map (fun x-> x * x)
这会在我的在线测试文件中产生相同的错误(file2) 在第一行
"Incomplete Value or function definition."
在第二行代码中,它说:
Unexpected infix operator in binding
老实说,我不知道这意味着什么。 无论如何,如果我能理解为什么它会在测试文件中给我这个错误, 我能更好地理解我的真实项目。所以请帮助我理解为什么我在file2中收到此错误,而不是file1。
答案 0 :(得分:7)
简单的缩进问题。使用名称x
将下部管道代码与标识符名称的末尾对齐。使用xpoints
会导致较低的管道代码越位。"只需调整为
let xpoints =[0..100]
|> List.filter (fun xpoints -> xpoints % 2 = 0)
|> List.map (fun xpoints -> xpoints * 2)
或者更好(这是"标准"样式I' d)
let xpoints =
[0..100]
|> List.filter (fun xpoints -> xpoints % 2 = 0)
|> List.map (fun xpoints -> xpoints * 2)
答案 1 :(得分:2)
所以你给出的例子是因为你需要更多的缩进
这有效:
let x1Points = [0..2..100]
|> List.map (fun x-> x * x);;
您在第二个示例中遇到了同样的问题,将其更改为
let xpoints =[0..100]
|> List.filter (fun xpoints -> xpoints % 2 = 0)
|> List.map (fun xpoints -> xpoints * 2)
作品