F# — отображение полных результатов в интерактивном окне F#.
-
19-09-2019 - |
Вопрос
Отказ от ответственности: Общий F# Вопрос для новичка!
Если я введу следующее в файл F# в Visual Studio
#light
let squares =
seq { for x in 1 .. 10 -> x * x }
printf "%A" squares
и запустите на нем интерактивный F#, выделив и нажав Альтернативный вариант+Входить, вывод в интерактивном окне
>
seq [1; 4; 9; 16; ...]
val squares : seq<int>
>
Но я хочу увидеть полную последовательность, т.е.
>
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>
>
Это возможно?Я надеюсь, что для этого есть настройка, которую я пропустил.
Решение
'seq' — это конструкция с ленивым вычислением;оно может быть бесконечным, поэтому FSI показывает только первые несколько значений.Если вы хотите увидеть все это, проще всего преобразовать его в список, например.
printf "%A" (squares |> Seq.tolist)
Другие советы
Если вы хотите отобразить все значения в последовательности без преобразования в список, вы можете выполнить итерацию непосредственно по последовательности следующим образом:
Seq.iter (printfn "%A") squares
Обратите внимание, что вы рискуете:если, как намекает Брайан, последовательность бесконечна, вам придется ждать довольно долго.(В этом случае, Seq.skip
и Seq.take
твои друзья)
Альтернативой является установка fsi.PrintLength
до достаточно большого числа, например
> fsi.PrintLength <- 500