F# 为什么不在F中编译#
这将编译并运行: let rec HelloEternalWorld _ = Console.ReadLine() |> printf "Input: %s\n" HelloEternalWorld 0 HelloEternalWorld 0 让rec HelloEternalWorld uu= Console.ReadLine()|>printf“输入:%s\n” HelloEternalWorld 0 HelloEternalWorld 0 这不会编译: let rec HelloEternalWorld = Console.ReadLine() |> printf "%s\n" HelloEternalWorld HelloEternalWorld 让rec HelloEternalWorld= Console.ReadLine()|>printf“%s\n” 地狱世界 地狱世界F# 为什么不在F中编译#,f#,recursion,F#,Recursion,这将编译并运行: let rec HelloEternalWorld _ = Console.ReadLine() |> printf "Input: %s\n" HelloEternalWorld 0 HelloEternalWorld 0 让rec HelloEternalWorld uu= Console.ReadLine()|>printf“输入:%s\n” HelloEternalWorld 0 HelloEternalWorld 0 这不会编译: let rec Hell
我试图理解为什么不呢?您所缺少的都是括号,因为如果它是:
let rec HelloEternalWorld() =
Console.ReadLine() |> printf "%s\n"
HelloEternalWorld()
要定义一个没有参数的函数,您需要用括号来区分函数和简单值。请发布您收到的错误消息,它们会告诉您需要的一切 价值。。。将作为其自身定义的一部分进行评估 您的代码无法编译,因为您正在声明一个递归值(它不存在)而不是递归函数 为了使它成为一个函数,您必须编写如下内容
let rec HelloEternalWorld() =
Console.ReadLine() |> printfn "%s"
HelloEternalWorld()
它现在是unit->unit
类型的函数