【问题标题】:Multiple arguments to mapcarmapcar 的多个参数
【发布时间】:2011-08-23 00:17:33
【问题描述】:

我确定这是一个非常初级的 lisp 问题,因为我只是在学习语言。

我在 clisp 中有一个名为 count 的函数。它计算给定原子在列表中出现的次数。我想做的是能够使用不同的参数多次调用 count ,但要搜索的列表相同。

例如,假设我想计算列表中'A、'B 和'C 的数量。我希望我能做这样的事情:

(mapcar 'count '(A B C) myList)

我发现这不起作用,因为'(A B C) 中的每个元素都只与 myList 中的一个元素配对。将带有附加输入参数的函数应用于列表中的每个项目的适当惯用方式是什么?

为了进一步澄清,我希望能够将'(A B C) 和'(A A B C C C) 作为输入并生成(2 1 3)。

【问题讨论】:

    标签: functional-programming lisp closures common-lisp


    【解决方案1】:

    用列表(A B C)中的每个项目重复调用函数count,每次计算相同序列的匹配项目mylist:

    (mapcar (lambda (x) (count x mylist)) '(A B C))
    

    【讨论】:

    • 那是完美的。正是我想要的。非常感谢!现在阅读本文,我发现我可能查看了十几个类似的解决方案,但并没有真正理解 lambda 函数在做什么。现在我看到了适用于我的具体问题的答案,这更有意义。
    • 感谢分享开悟的时刻!现在是回顾closures的好时机。
    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多