打印F#中的记录列表

时间:2016-03-13 14:40:13

标签: f#

我是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

类型&#39;(浮点列表 - &gt;点列表)&#39;不是一种类型,其值可以使用此语法枚举,即与seq&lt; &gt;,IEnumerable&lt; &gt;不兼容。或IEnumerable,并没有GetEnumerator方法fs

tPoints|>List.iter(fun p->printfn "%A" p)
以这种方式,它也不起作用

1 个答案:

答案 0 :(得分:3)

tPoints不是列表,而是函数。

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

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

我想你的意思是将iterations传递给它:

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