Function 在F#中调用函数后,如何在F#中重复函数?

Function 在F#中调用函数后,如何在F#中重复函数?,function,recursion,f#,Function,Recursion,F#,我有一个游戏,你可以做某些动作,然后在动作完成后,我有一个你可以再做的动作列表,但在程序结束后,我想,因为这是一个递归函数,它会继续运行 这不是我游戏的一部分,只是一个演示,这个程序在完成后要求输入一个字符串。它不应该一直要一根绳子吗?我怎么能让它这么做?我还尝试调用f1函数中的递归函数,但f1当然不知道它存在 open System let f1 x = printfn "Hello, %s" x let rec f2 = let x = Console.ReadLine(

我有一个游戏,你可以做某些动作,然后在动作完成后,我有一个你可以再做的动作列表,但在程序结束后,我想,因为这是一个递归函数,它会继续运行

这不是我游戏的一部分,只是一个演示,这个程序在完成后要求输入一个字符串。它不应该一直要一根绳子吗?我怎么能让它这么做?我还尝试调用f1函数中的递归函数,但f1当然不知道它存在

open System

let f1 x =
    printfn "Hello, %s" x

let rec f2 =
    let x = Console.ReadLine()
    f1 x

Console.Read() |> ignore

如注释中所述,您将
f2
定义为一个值,而不是一个函数。这已经在StackOverflow上讨论过了,有一个

另一个问题是,您可能希望从
f1
调用
f2
(以继续循环)以及从
f2
调用
f1
。为此,可以使用
let rec.将函数定义为相互递归函数。。和
语法:

let rec f1 x =
    printfn "Hello, %s" x
    f2 ()

and f2 () =
    let x = Console.ReadLine()
    f1 x

在你的代码中,f2不是一个函数,它是一个值。@PetSerAl我如何使它成为一个函数?我看不出有什么区别。谢谢你的解释,但是你提供的代码没有重复要求字符串。编辑:是的,我只是在之后打电话给它P