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

时间:2014-11-16 15:21:55

标签: f#

我对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 []

我得到的错误:

  

类型不匹配。期待一个       “一个
      但给了一个       '列表

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

1 个答案:

答案 0 :(得分:5)

在比赛分支

| true -> getNumList num::listSoFar

你应该使用括号:

| true -> getNumList (num::listSoFar)

因为函数应用程序的优先级高于::运算符