【发布时间】:2016-05-25 16:22:57
【问题描述】:
我正在用 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 是 float * int 的元组,poly 是术语列表
【问题讨论】:
-
至少显示您尝试过的内容以及卡在哪里
-
在 SO 上,您应该展示您已经尝试过的内容,以便 1. 我们不会为您做作业。 2. 这样我们就可以看到你是否有一个简单的错误很容易纠正。 3.让可能和你有相同想法的其他人知道他们是否和你有相同的想法。因为你没有尝试,所以我们大多数人不会给你答案。您还需要在 SO 中寻找答案,因为前几天刚刚给出了类似的答案,例如F# adding polynomials recursively
-
@GuyCoder 谢谢,我实际上在从哪里开始时遇到了麻烦!您为我提供的链接帮助很大!谢谢
-
不必对新手(甚至似乎提供了他的真名)怀有敌意 - F# 社区曾经是 SO 周围更友好的社区之一,如果我们愿意,那不是很好欢迎新成员?毕竟它不像 F# 是主流之类的......
-
据我所知,这个问题没有错!马修-我认为如果人们看到您的尝试(给您提到的错误的版本),人们会更高兴,即使它很简单并且不太有效。有时 StackOverflow 上的人们在看到没有代码的问题时会感到不安……我还编辑了您的问题,使其不包含“谢谢”和介绍(并且我修复了一些格式)。 StackOverflow 试图成为“纯粹的问答” - 所以感谢@GuyCoder 的更好方法是在评论中。最后,欢迎! :-)