Вы получаете только первые 5 строк, потому что результат readlines
- это ленивая последовательность, которая не полностью оценена - печать последовательности печатает только первые 5 элементов, и это все, что оценивается.
Вы можете легко увидеть, как это работает, запустив следующий пример:
let test =
seq { for i in 0 .. 1000 do
printfn "Returning %d" i
yield i }
printfn "%A" test
Простое решение состоит в том, чтобы полностью оценить ленивую последовательность путем преобразования в список в памяти:
let b = readlines() |> List.ofSeq
printf "%A" b
В качестве альтернативы, вы также можете перебирать строки с помощью цикла for
и печатать их одну за другой:
for line in readlines() do
printf "%s" line