缺点 递归之外的数据类型



我正在尝试编写一个函数,该函数递归地通过数据结构,该数据结构在内部使用列表一次而不对其进行修改。我在递归之外再次预置元素时遇到问题,这样它就不会死循环。

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]

最新更新