Подтвердить что ты не робот

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>

>

Возможно ли это? Я надеюсь, что у меня есть настройки, которые я пропустил.

4b9b3361

Ответ 1

'seq' - это лениво оцениваемая конструкция; он может быть бесконечным, поэтому FSI показывает только первые несколько значений. Если вы хотите увидеть все это, легко сделать это преобразование в список, например.

printf "%A" (squares |> Seq.tolist)

Ответ 2

Если вы хотите отобразить все значения в последовательности без преобразования в список, вы можете выполнить итерацию непосредственно в последовательности следующим образом:

Seq.iter (printfn "%A") squares

Обратите внимание, что вы рискуете: если, как намекает Брайан, последовательность бесконечна, вы можете долго ждать. (В этом случае Seq.skip и Seq.take являются вашими друзьями)

Ответ 3

Альтернативой является установка fsi.PrintLength на достаточно большое число, например

> fsi.PrintLength <- 500