我正在尝试制作一些代码,以便在输入有效的文件路径或“退出”之前不断询问用户。
我现在拥有的:
let (|ValidPath|_|) str =
if File.Exists str then Some ValidPath
else None
type Return =
|Path of string
|Exit
let rec ask =
printfn "%s" "Please enter a valid path or \"exit\""
let input = Console.ReadLine()
match input with
| "exit" -> Exit
| ValidPath -> Path input
| _ -> ask
ask
函数有The value 'aks' will be evaluated as part of its own definition
错误。
我该怎么办?
答案 0 :(得分:4)
问题是ask
不是一个函数,它是一个递归值。您需要获取一个参数才能使其成为一个函数:
let rec ask () =
printfn "%s" "Please enter a valid path or \"exit\""
let input = Console.ReadLine()
match input with
| "exit" -> Exit
| ValidPath -> Path input
| _ -> ask ()