SML如何减去2个列表并比较产品?

时间:2010-09-17 01:16:28

标签: sml

我正在尝试减去2个列表并返回比较的产品。

所以如果列表 a = [2,3,2] b = [1,1,1] 然后 a-b = [1,2,1],返回的产品(c)应为1.

val c = List.map (fn i => (i - b) mod 10) a

modulo(mod)10用于两个相减数字给出奇数结果的情况,例如: 2-8 = ~6 mod 10 = 4.

我陷入了减法,因为List.map不允许我进行减法,因为它需要一个int值而不是一个int列表(至少不是我编码它的方式:()。 / p>

我在比较中也是空白。

2 个答案:

答案 0 :(得分:3)

您可以使用ListPair.map一次迭代2个列表,如下所示:

val c = ListPair.map (fn (i, j) => (i - j) mod 10) (a,b)

答案 1 :(得分:1)

您不想减去b - 您想要减去相应的值。一种方便的方法是将列表压缩在一起:

val c = List.map (fn (i, j) => (i - j) mod 10) (ListPair.zip (a, b))