F# — отображение полных результатов в интерактивном окне F#.

StackOverflow https://stackoverflow.com/questions/1508818

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top