【发布时间】:2012-09-19 21:47:24
【问题描述】:
我一直在使用 ml 函数,但遇到了一些烦人的事情。
我会用简单的代码来解释它。 例如,如果有一个 list(int*int) 并且我想检查是否有一些元组的第一个元素包含 3。
L = [(1,2),(2,3),(3,5),(3,4)]
所以在这个列表中,我想得到 5 和 4。 但是,在 ML 中,函数是递归的,所以如果我这样写代码。
fun a(list) =
if #1(hd(list)) = 3 then #2(hd(list))
else a(tl(list))
在这个简单的函数中,它可以得到 5 但不能得到 4,因为一旦检测到 (3,5) 满足条件,它就会返回 5 并且函数结束。
有什么方法可以同时获得 4 吗?
【问题讨论】: