我对F#很新,所以问题可能相当简单。不过,我找不到任何关于SO的建议。
我正在使用F#中的算法任务。作为第一步,我想从用户控制台输入创建一个整数集合。未定义输入数量。而且我不会使用任何while
循环。我希望尽可能多的惯用法。
在递归函数中,我正在读取结果并使用Int32.TryParse
进行解析。我使用match ... with
匹配bool结果。如果成功,那么我将一个新值附加到集合。否则我会退回收藏。
以下是我的代码:
let rec getNumList listSoFar =
let ok, num = Int32.TryParse(Console.ReadLine())
match ok with
| false -> listSoFar
| true -> getNumList num::listSoFar
let l = getNumList []
我得到的错误:
类型不匹配。期待一个 “一个
但给了一个 '列表
我知道我正在使用不正确的类型,但我不明白到底出了什么问题。任何解释都高度赞赏。
答案 0 :(得分:5)
在比赛分支
| true -> getNumList num::listSoFar
你应该使用括号:
| true -> getNumList (num::listSoFar)
因为函数应用程序的优先级高于::
运算符