list - 在 Lisp 中,如何将给定元素添加到给定列表中的每个列表中?

标签 list functional-programming lisp common-lisp

这是我到目前为止所拥有的:

(defun append-all(x L)
  (if (null L)
    L   
    (cons (append (car L) x) (append-all x (cdr L))))
  )
)

输出:

(append-all '3 '((1) (2 1) (2)))

((1 . 3) (2 1 . 3) (2 . 3))

想要:

((1 3) (2 1 3) (2 3))

这是一个辅助函数,因此它是一个链表这一事实似乎给我带来了问题。

谢谢

编辑:修复递归调用

最佳答案

在您的代码中,更改这部分:

(append (car L) x)

对此:

(append (car L) (list x))

它之前不起作用,因为 append 应该接收两个列表作为参数,而不是一个列表和一个元素。

关于list - 在 Lisp 中,如何将给定元素添加到给定列表中的每个列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468925/

相关文章:

java - 转换为List后如何迭代方法中的元素?

haskell - 这个特定的递归可以用尾部优化的方式重写吗?

haskell - underscore.js 中的 chain 函数是否创建了一个 monad?

lisp - 函数的意外结果(递归)

python - 将字典列表保存到文件python 3

R找到一个变量的索引和一个列表的子集

python - 给定 2 个列表,从两个列表中找到一个随机固定大小的子集,使得每个列表中至少有一个值(最好是统一选择)

scala - 函数式根据 Scala 中的值创建列表

deployment - 构建和部署 Clojure 应用程序的最佳实践 : good tutorials?

lisp - 尾递归函数将元素附加到列表