为什么这不能在F#中编译

3 recursion f#

这编译和工作:

let rec HelloEternalWorld _ = 
  Console.ReadLine() |> printf "Input: %s\n"
  HelloEternalWorld 0

HelloEternalWorld 0

这不编译:

let rec HelloEternalWorld = 
  Console.ReadLine() |> printf "%s\n"
  HelloEternalWorld

HelloEternalWorld

我试着理解为什么不呢?

em7*_*m70 7

所有你缺少的是括号,因为如果它是:


let rec HelloEternalWorld() = 
  Console.ReadLine() |> printf "%s\n"
  HelloEternalWorld()
Run Code Online (Sandbox Code Playgroud)


要定义不带参数的函数,需要使用括号将函数与简单值区分开来.