【发布时间】:2019-03-07 03:03:24
【问题描述】:
问题陈述:编写一个函数对,它接受两个整数列表并生成一个对列表,其中每个对是每个列表中每个元素的组合。
例如,pair ([1,2], [3,4,5]) 应该返回
[(1,3), (1,4), (1,5), (2,3), (2,4), (2,5)].
到目前为止我的工作:
-fun pair(a:int list, b:int list) = if null a then nil else if null b then nil else (hd a, hd b)::pair(a, tl b)@pair(tl a, b);
val pair = fn : int list * int list -> (int * int) list
-pair([1,2],[3,4,5]);
val it = [(1,3),(1,4),(1,5),(2,5),(2,4),(2,5),(2,3),(2,4),(2,5)]
我试图追踪函数以找出为什么 (2,5)、(2,4)、(2,5) 会出现,但我仍然看不清楚。
这似乎很简单,但我似乎无法解决最后的问题。一些帮助查明为什么在中间添加这些元素会有所帮助。
谢谢。
彼得
【问题讨论】:
标签: list functional-programming sml smlnj