F # - Показать полные результаты в интерактивном окне F # - PullRequest
11 голосов
/ 02 октября 2009

Отказ от ответственности: Итого F # Вопрос новичка!

Если я наберу следующее в файл F # в Visual Studio

#light

let squares =
    seq { for x in 1 .. 10 -> x * x }

printf "%A" squares

и запустите на нем интерактивный F #, выделив и нажав Alt + Введите , вывод в интерактивном окне будет

> 
seq [1; 4; 9; 16; ...]
val squares : seq<int>

>

Но я хочу увидеть полную последовательность, т. Е.

> 
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>

>

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

Ответы [ 3 ]

11 голосов
/ 02 октября 2009

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

printf "%A" (squares |> Seq.tolist)
10 голосов
/ 06 августа 2014

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

Seq.iter (printfn "%A") squares

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

0 голосов
/ 08 мая 2019

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

> fsi.PrintLength <- 500
...