【发布时间】:2017-09-06 01:49:15
【问题描述】:
我需要编写一个如下所示的 SML 函数:
update(FLR, (x,y))
其中 FLR 是元组的有限列表,如下所示:
[(1,1),(2,4),(3,9),(4,16)]
但它可以包含任意数量的元组。这个更新函数需要做的是将元组列表作为第一个参数,将一个 x / y 元组作为第二个参数。如果列表中有一个元组与给定函数的 x 值相同,则需要将列表的 y 值更新为给函数的 y 值。如果没有给定 x 值的元组,则函数需要在列表中的适当位置创建一个新元组。例如,如果 FLR 具有以下值:
FLR = [(1,1),(2,4),(3,9),(4,16),(5,25)]
并且函数被称为update(FLR, (2,3)); 新列表应该是[(1,1),(2,3),(3,9),(4,16),(5,25)]。另外,如果函数被调用为update(FLR, (6,36));,那么新列表应该是[(1,1),(2,4),(3,9),(4,16),(5,25), (6,36)]。
我对函数式编程和 SML 非常陌生,我不知道该怎么做。我已经编写了一些我确定需要使用的 memberOf 函数,但我主要关心的是如何使用递归来完成所有这些工作。非常感谢任何帮助!
【问题讨论】:
-
你写
map了吗?这非常相似:您需要遍历列表,一次处理一个元素,并生成一个新列表,其中的元素与原始列表中的元素 1:1 对应。 -
这就是我遇到的麻烦。你能提供一些关于如何编写这个函数的见解吗?
标签: functional-programming sml caml ml