我正在尝试编写一个递归遍历数据结构的函数,该函数在内部使用列表一次而不修改它。我无法在递归之外再次添加元素,因此它不会死循环。
difference (Set ((element, count) : set)) (MultiSet set')
| ... = difference (Set ((element, count) : set)) (Set set') -- Prepends tuple inside the recursion
| ...
我需要的是一种在set
前面添加元组(元素,计数)而不将其包含在difference
的递归调用中的方法。
这样做的简单/标准方法是什么?
答案 0 :(得分:1)
看起来可能正在寻找的是
| ... = Set ((element, count) : difference set (Set set'))
没有?怎么样:
| ... = let Set set2 = difference set (Set set') in Set ((element, count) : set2)
(我假设Set
只是data Set x = Set [x]
。)