在 f# 中读取未知行数

read unknown number of lines in f#

假设我有 n(在本例中为 7)输入

10

20

30

40

50

60

70

如何读取所有输入并将它们存储在 list/array 中?

我试过了,

let inputList = [
    while (let line = Console.ReadLine()) <> null do
        line |> int
]

我的想法是一直读到空行为止。

但是我得到以下错误,

Block following this 'let' is unfinished. Expect an expression.

要以功能样式执行此操作,您可以使用 Seq.initInfinite 从控制台创建序列。 然后,当您使用 Seq.takeWhile 获得空值时,您需要终止此列表。除此之外,您还可以使用所有可用的 Seq 模块函数,包括 Seq.toList.

let read _ = Console.ReadLine()
let isValid = function null -> false | _ -> true
let inputList = Seq.initInfinite read |> Seq.takeWhile isValid |> Seq.toList