gpt4 book ai didi

f# - 使用 F# 绘制图表不接受 Seq?

转载 作者:行者123 更新时间:2023-12-04 16:15:24 25 4
gpt4 key购买 nike

Real-World Functional Programming blog 开始关于绘制条形图和柱形图,我试图为我的数据绘制直方图,这些数据以惰性序列存储在一组元组(data_value,频率)中。

除非我将序列转换为列表,否则它不起作用,错误消息是在序列“IEnumerable 'T 不支持重置函数”的情况下。有什么方法可以使用 .NET 库从惰性求值序列生成直方图/图表等吗?

此外(好的新手查询警报),当程序从控制台运行时,有什么方法可以使图表保持不变?通常的System.Console.ReadKey() |> ignore 会使图表窗口挂起,否则会瞬间消失。到目前为止,我一直在使用“Send to Interactive”来查看结果。

最佳答案

问题是使用 F# 序列表达式符号生成的序列(类型为 seq<T>,它只是 IEnumerable<T> 的别名)不支持 Reset方法。该方法是图表库需要的(因为每次重绘屏幕都需要获取数据)。

这意味着,例如,以下将不起作用:

seq { for x in data -> x } |> FSharpChart.Line

Seq 中的许多标准库函数模块是使用序列表达式实现的,因此结果将不支持 Reset .您可以通过将数据转换为列表(使用 List.ofSeq )或数组(使用 Array.ofSeq )或使用列表编写代码来解决此问题:

[ for x in data -> x ] |> FSharpChart.Line

... 如果您正在使用某些功能,您可以从 List 中获取一个(并非所有 Seq 函数都可用于 List ,因此有时您需要使用转换):

[ for x in data -> x ] |> List.choose op |> FSharpChart.Line

关于f# - 使用 F# 绘制图表不接受 Seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11372538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com