F# F此值不是函数

F# F此值不是函数,f#,F#,玩F的时候,我似乎找不到问题所在 FS0003此值不是函数,无法应用。是吗 忘记终止声明 蒸发器25.0 10.0 10.0 它的工作原理与预期一致。奇怪 更新2 初始代码的唯一问题是使用了printfn%f而不是printfn%i 如果您的问题已通过添加解决;;这让我觉得您正在FSI中运行这个,并且在FSI中看到了编译器错误。这很好,但您可能是直接在FSI提示符中键入或粘贴代码 我建议从F开始的每个人,甚至有经验的F用户,都不要在FSI中键入或粘贴代码。在编辑器中编写代码,选择它,然后将其发送

玩F的时候,我似乎找不到问题所在

FS0003此值不是函数,无法应用。是吗 忘记终止声明

蒸发器25.0 10.0 10.0

它的工作原理与预期一致。奇怪

更新2


初始代码的唯一问题是使用了printfn%f而不是printfn%i

如果您的问题已通过添加解决;;这让我觉得您正在FSI中运行这个,并且在FSI中看到了编译器错误。这很好,但您可能是直接在FSI提示符中键入或粘贴代码

我建议从F开始的每个人,甚至有经验的F用户,都不要在FSI中键入或粘贴代码。在编辑器中编写代码,选择它,然后将其发送给FSI。这样,您就不必担心分号的记忆问题,并且在键入时会得到编译器错误和建议。我已经在F工作了很多年,从未需要直接在FSI中输入


此外,如果您更改了所有函数和类型定义,请不要忘记在FSI中重新运行它们。如果您看到令人困惑的错误,最好重置FSI并从干净状态开始。

初始代码的唯一问题是您使用了printfn%f而不是printfn%i

如果您的问题已通过添加解决;;这让我觉得您正在FSI中运行这个,并且在FSI中看到了编译器错误。这很好,但您可能是直接在FSI提示符中键入或粘贴代码

我建议从F开始的每个人,甚至有经验的F用户,都不要在FSI中键入或粘贴代码。在编辑器中编写代码,选择它,然后将其发送给FSI。这样,您就不必担心分号的记忆问题,并且在键入时会得到编译器错误和建议。我已经在F工作了很多年,从未需要直接在FSI中输入


此外,如果您更改了所有函数和类型定义,请不要忘记在FSI中重新运行它们。如果您看到令人困惑的错误,最好重置FSI并从“干净状态”开始。

我刚刚看到了您添加的图像。当我将您的确切代码复制到IDE中时,在不同的行上会出现不同的错误。我不明白你为什么会犯这样的错误。那是什么版本的VisualStudio?在复制到堆栈溢出时,是否有其他一些不寻常的空白字符被删除?如果你把代码从SO复制回VS呢?我刚刚看到你添加的图像。当我将您的确切代码复制到IDE中时,在不同的行上会出现不同的错误。我不明白你为什么会犯这样的错误。那是什么版本的VisualStudio?在复制到堆栈溢出时,是否有其他一些不寻常的空白字符被删除?如果您将代码从SO复制回VS呢?
let evaporator (volumeMl:double) (evapPerDaydouble:double) (threshold:double):int =
    let mutable counter = 0
    let mutable currentVolume = volumeMl
    while (currentVolume > (volumeMl * (threshold / 100.))) do
        currentVolume <- currentVolume - ((currentVolume * threshold / 100.))
        counter <- (counter + 1)
    counter

let result = evaporator 25.0 10.0 10.0

printfn "%f" result 
let result = evaporator 25.0 10.0 10.0;;