在 C# 中,我会这样写:
string input;
do
{
Console.Write("Enter an equation: ");
input = Console.ReadLine();
} while (FSharpOption<Expression>.get_IsNone(Infix.TryParse(input)));
Run Code Online (Sandbox Code Playgroud)
这将提示用户重复输入一个方程,直到他们输入一个可以解析的方程。我将如何在 F# 中执行此操作?
你可以写一个递归函数:
let rec readInput () =
Console.Write("Enter an equation: ")
let input = Console.ReadLine()
match Infix.TryParse(input) with
| Some(e) -> e
| None -> readInput()
Run Code Online (Sandbox Code Playgroud)