【发布时间】:2019-04-14 02:47:48
【问题描述】:
我想编写一个函数,它接收一个序列 并返回具有相同元素的序列,如 、、 >。
我使用的是序列,而不是列表,但其中一些功能是相似的。我正在考虑使用的一些功能是 map、reduce、tabulate、filter、append 等。
Reduce 接受一个关联函数并返回由该运算符“减少”的序列。所以,减少 op+ 0 = 6。
我的第一个想法是使用 map 将序列提高一个级别。 所以, => ,,,,>。
然后,我正在考虑使用 reduce,我在其中创建了一个函数,该函数采用 (x,y) 之类的元素对。如果 x == y,那么我返回 else,我什么也不做。但是......这并不完全有效,因为函数在两种情况下都必须返回相同类型的东西。
有人能给我一些关于正确路径的提示吗,比如我可以使用哪些高阶函数?我正在使用 SML,但我并没有要求任何人给我一个完整的答案,所以任何高级技巧都将不胜感激(老实说,在任何功能语言中)
【问题讨论】:
-
不了解您正在使用的语言,但从功能的角度来看,我会:1)获取不同值的序列 2)将不同序列中的每个值映射到过滤后的原始序列。
标签: functional-programming f# ocaml sml