Cons数据类型外部递归

时间:2015-01-16 10:27:48

标签: haskell recursion

我正在尝试编写一个递归遍历数据结构的函数,该函数在内部使用列表一次而不修改它。我无法在递归之外再次添加元素,因此它不会死循环。

difference (Set ((element, count) : set)) (MultiSet set')
    | ... = difference (Set ((element, count) : set)) (Set set') -- Prepends tuple inside the recursion
    | ...

我需要的是一种在set前面添加元组(元素,计数)而不将其包含在difference的递归调用中的方法。

这样做的简单/标准方法是什么?

1 个答案:

答案 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]。)