我是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
类型'((浮动列表->点列表)'不是可以使用此语法枚举值的类型,即与seq < >,IEnumerable < >或IEnumerable不兼容,并且没有GetEnumerator方法fs
tPoints|>List.iter(fun p->printfn "%A" p)
这样也行不通
tPoints
不是列表,而是函数。
List.map
接受两个参数-一个函数和一个列表-并返回一个列表。您只给了它一个参数,所以返回值是一个仍在“等待”第二个参数的函数。
该函数的类型为(float list -> point list)
-也就是说,它需要一个类型的参数float list
并返回a point 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句