我正在使用F#编写一些代码,需要将元组列表(c,d)
的每个元素乘以一个元组(a,b)
并加起来。
为了澄清:
- 我有一些元组
(a,b)
- 还有一些元组列表
[(c,d),(e,f),(g,h)...]
- 我想得到
[(a*c,b*d),(a*e,b*f),(a*g,b*h)...]
- 我还想用另一个函数得到
[(a+c,b+d),...]
我尝试使用List.map
将列表中的每个元素乘以一个元组,但是我收到了一个错误消息,告诉我*
对于元组类型无效。
这就是我最终使用模式匹配递归实现乘法函数的方式:
let rec mtp(t:term,p:poly):poly =
match (t, p) with
| (a,b),[] -> []
| (a, b),(c,d)::ps -> (a*c,b*d)::mtp(t,ps)
其中 term 是一个浮点数和整数的元组,poly 是 term 列表