我正在尝试编写一个函数,该函数递归地通过数据结构,该数据结构在内部使用列表一次而不对其进行修改。我在递归之外再次预置元素时遇到问题,这样它就不会死循环。
difference (Set ((element, count) : set)) (MultiSet set')
| ... = difference (Set ((element, count) : set)) (Set set') -- Prepends tuple inside the recursion
| ...
我需要的是一种在set
前面预置元组(元素、计数)的方法,而无需将其包含在 difference
的递归调用中。
什么是简单/标准的方法?
看起来您可能正在寻找的是
| ... = 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]
。