F#:从用户输入创建整数集合

Pio*_*ski 3 f#

我对F#很新,所以问题可能相当简单.不过,我找不到任何关于SO的建议.

我正在玩F#中的算法任务.作为第一步,我想从用户控制台输入创建一个整数集合.未定义输入数量.而且我不会使用任何while循环.我希望尽可能多的惯用法.

在递归函数中,我正在读取结果并使用它进行解析Int32.TryParse.我使用匹配bool结果match ... with.如果成功,那么我将一个新值附加到集合.否则我会退回收藏品.

以下是我的代码:

let rec getNumList listSoFar =
    let ok, num = Int32.TryParse(Console.ReadLine())
    match ok with
        | false -> listSoFar
        | true -> getNumList num::listSoFar

let l = getNumList []
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

类型不匹配.期待一个'a
但是给'一个列表

我知道我使用的类型不正确,但我不明白到底出了什么问题.任何解释都高度赞赏.

Pet*_*etr 5

在比赛分支

| true -> getNumList num::listSoFar
Run Code Online (Sandbox Code Playgroud)

你应该使用括号:

| true -> getNumList (num::listSoFar)
Run Code Online (Sandbox Code Playgroud)

因为功能应用程序的优先级高于::操作员