F# 该值不是函数

A19*_*919 1 f#

玩 F# 似乎我无法找出问题所在。

FS0003 该值不是函数,无法应用。您是否忘记终止声明?

蒸发器 25.0 10.0 10.0

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 
Run Code Online (Sandbox Code Playgroud)

更新

修改后的代码;;

let result = evaporator 25.0 10.0 10.0;;
Run Code Online (Sandbox Code Playgroud)

它正在按预期工作。奇怪的。

更新2

在此输入图像描述

The*_*Fox 5

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

如果您的问题通过添加得到解决,;;它会让我认为您正在 FSI 中运行它并在 FSI 中看到编译器错误。这很好,但也许您直接在 FSI 提示符中键入或粘贴代码?

我对每个开始使用 F# 的人(甚至是经验丰富的 F# 用户)的建议是,永远不要在 FSI 中键入或粘贴代码。在编辑器中编写代码,选择它,然后将其发送到 FSI。这样您就不必担心记住分号,并且在您键入时会收到编译器错误和建议。我多年来一直在 F# 中日常工作,从来不需要直接在 FSI 中输入。

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