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