FS0010:绑定

时间:2018-02-08 21:40:05

标签: f# visual-studio-code

我正在尝试在Visual Studio Code

中关注the docs to create an f# program

当我突出显示我的代码并按Alt Enter在交互式窗口中运行时出现错误

Script.fsx(8,5):error FS0010: Unexpected keyword in binding. Expected incomplete structured construct at or before this point or other token.

enter image description here

[更新]

我尝试了几次才能使其工作,突出显示代码,如图所示。 离开电脑一小时后奇怪,我现在再也无法重复这个问题了。

1 个答案:

答案 0 :(得分:3)

交互式窗口中显示的输出表明您按Alt + Enter时的选择与您在屏幕截图中显示的选择不同。更具体地说,您执行的选择以let isVowel开头(没有前导空格),以word.[0] then结束。

更具体地说,您尝试执行的代码是:

let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' |'o' |'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false

    if isVowel word.[0] then

由于多种原因,此代码无法编译。首先,then之后没有任何内容。其次,if缩进不正确:它需要缩进到与match相同的位置(在这种情况下,它将被视为isVowel定义的一部分)或缩进到同一位置作为let isVowel(在这种情况下,它将被视为与isVowel相同的块的一部分),但这里它既不是let isVowel的右侧,而是match的左侧1}}。

如果您只想执行isVowel的定义,那么您不应该在选择中包含if
如果您想执行toPigLatin的整个定义,那么您应该包含let toPigLatin行和整个if/else表达式。