gpt4 book ai didi

f# - 在 F# 中打印记录列表

转载 作者:行者123 更新时间:2023-12-05 04:14:03 26 4
gpt4 key购买 nike

我是 F# 的新手,我不明白下一个错误:

let g = 9.8
let v = 320.0
let a = 45.0
let iterations = List.unfold(fun x-> if x < 100.0 then Some(x,x+0.1) else None) 0.0
type point = {x:float;y:float}
let tPoints = List.map(fun t -> {x=v*t*cos(a); y=v*t*sin(a)-g*(t**2.0);})
for point in tPoints do
printfn "%A" point

在线:

for point in tPoints do

类型“(float list -> point list)”不是可以使用此语法枚举其值的类型,即与 seq<>、IEnumerable<> 或 IEnumerable 都不兼容并且没有 GetEnumerator 方法 fs

tPoints|>List.iter(fun p->printfn "%A" p)

这样也行不通

最佳答案

tPoints 不是一个列表,而是一个函数。

List.map 接受两个参数 - 一个函数和一个列表 - 并返回一个列表。您只给了它一个参数,因此返回值是一个仍在“等待”第二个参数的函数。

该函数的类型是 (float list -> point list) - 也就是说,它需要一个 float list 类型的参数并将返回一个 点列表。您正在尝试迭代该函数,这就是编译器告诉您不能执行的操作:不能枚举类型为 float list -> point list 的值

我猜你是想将 iterations 传递给它:

let tPoints = List.map(fun t -> {x=v*t*cos(a); y=v*t*sin(a)-g*(t**2.0);}) iterations

关于f# - 在 F# 中打印记录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35971577/

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