Visual studio F-Interactive中的无序查找记录

Visual studio F-Interactive中的无序查找记录,visual-studio,visual-studio-2010,f#,f#-interactive,Visual Studio,Visual Studio 2010,F#,F# Interactive,在尝试打印时 pop 我在F interactive中得到了所有这些奇怪的格式,这基本上使打印变得无用。是否有其他方法可以正确格式化此文件 代码如下: #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

在尝试打印时

pop
我在F interactive中得到了所有这些奇怪的格式,这基本上使打印变得无用。是否有其他方法可以正确格式化此文件

代码如下:

#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

您可以替代ToString或使用自定义字符串表示形式。这包含了一些关于在fsi中自定义输出的有用信息。

这相当粗糙,我找不到任何简单的方法来修复它。但是,如果删除了换行符,则可以使其变得更好,这些空格是很好的:


您可能需要为您的ScoredIndividual类型执行fsi.AddPrinter来控制写入控制台的内容

您可以将图像中的代码添加到可选的代码块中,以便我们可以轻松地复制和粘贴并使用它吗?您指的是比:pop |>List.iter printfn%a更复杂的内容吗?您尝试过重写字符串吗?@Daniel:I'd如果可能的话,我想避免它:@pblasucci:那更好。然而,问题似乎在于记录中有记录。似乎它总是在唱片结束后放一行新词。这似乎是一件有趣的事情。我看你是这本书的作者。不过,它看起来确实滞后了很多。@Stephen:FsEye在显示之前规范化字符串文字外的空白是否有意义?@Owned elysium-滞后可能是由于以下问题造成的:,这只发生在具有大打印树的对象上,如pop here。然而,我试图修复它,它立即在我的慢速工作计算机和快速家用计算机上工作-如果你喜欢,我很高兴你能在这个问题上补充你的经历,包括你的电脑specs@Daniel-这是一个我喜欢的想法,但我认为不可能检测字符串文字的开头和结尾,因为1它们可能是嵌套的,2开始引号和结束引号之间没有区别。但是,我可以看到对记录的特殊处理和编写自定义打印机。在OPs示例中,模式是\n\s{2,}。用一个空格来代替那些可能就足够了。还有一个问题。在某种程度上,是否可以不打印任何内容而将内容发送给fsi?例如,我想将pop发送给fsi,这样我就可以对其进行一些操作,而不必让它打印pop拥有的所有947个人。您可以保留一个用于切换ShowDeclarationValues的小函数。在向fsi发送pop之前,可以将其设置为false。请参阅:您还可以仅为序列关闭打印:fsi.shovienumerable