list - 用列表中的单词替换数字

标签 list recursion lisp

我试图用一个词替换列表中的所有数字并保持原始词:例如:(垃圾邮件'(我吃了1,他也吃了1))输出:我吃了食物,他也吃了食物.在我的函数中,如果列表为空,我首先检查基本情况。 然后我递归地检查列表中的字符,如果它们是数字,则将它们转换为一些单词食物。最后我检查字符是否是字符保留它。即使我认为逻辑是正确的,代码也无法正常工作并出现错误。所以这是我的代码

(defun spam(list)
    (if (null list) nil
        (if (first numberp list) 'food (spam(rest list))
            ((first list)(spam(rest list)))
        )
    )
) 

最佳答案

CL-USER > (subst-if 'food #'numberp '(i ate 1 and he ate 1 too))
(I ATE FOOD AND HE ATE FOOD TOO)

关于list - 用列表中的单词替换数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953977/

相关文章:

python - 如何在运行后禁用/限制一行代码? (Python)

list - 为什么 F# 列表范围比 for 循环慢这么多?

python - 填充嵌套字典

recursion - 在方案列表中定义 "reduce"

python - python 中奇怪的递归行为

java - 二叉树节点计数的递归方法

tree - Scheme中n叉树的map函数

c# - 保存动态添加的相关元素集的最佳方法

sorting - Lisp 排序功能键

list - 如何在 Lisp 中获取点对?