我一直在使用 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吗?