Зашифрованные записи в F#-Интерактив

При попытке распечатать

pop

Я получаю все это странно выглядящее форматирование в F# интерактиве, что в основном делает печать бесполезной. Есть ли другой способ правильно отформатировать это?

Код следующий:

#light

open System
let rng = new Random()

type Individual = { x:int; y:int }
type ScoredIndividual = { individual:Individual; score:int }

let genGene() = rng.Next(-10, 10)
let genRandInd() = { x=genGene(); y=genGene() }
let genRandPop popSize = [ for _ in 1 .. popSize -> genRandInd() ]
let getScoredPop f pop = List.map (fun i -> { individual=i; score=(f i)}) pop

let fitnessFun ind = ind.x * ind.x + ind.y * ind.y

let pop = 30 |> genRandPop |> getScoredPop fitnessFun

3 ответа

Решение

Вы можете переопределить ToString или использовать StructuredFormatDisplayAttribute настроить строковое представление. Эта статья содержит некоторую полезную информацию о настройке вывода в fsi.

Вы можете захотеть сделать fsi.AddPrinter для вашего типа ScoredIndividual, чтобы контролировать, что записывается на консоль

Это довольно грубо, и я не мог найти "легкий" способ исправить это. Тем не менее, FsEye может сделать его лучше (хотя он и удаляет символы новой строки, эти пробелы там хорошо):

Другие вопросы по тегам