gpt4 book ai didi

clojure - 将变量列表单独传递给 clojure 函数

转载 作者:行者123 更新时间:2023-12-03 18:20:14 26 4
gpt4 key购买 nike

我一直在玩 clojure,并决定制作一个结合 mapcat 和 list 的高阶函数来模拟这种行为:

Clojure> (mapcat list '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)

我的第一次尝试是定义 mapcatList 如下:
Clojure> (defn mapcatList[& more](mapcat list more))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
((1 2 3 4) (5 6 7 8))

显然该函数的行为不像我想要的那样,我认为这是因为两个列表被放入一个列表并作为单个参数传递,而不是两个。
我能够通过以下方式纠正这种情况,
Clojure> (defn mapcatList[x y & more](mapcat list x y))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)

此解决方案适用于两个列表,但我希望该函数使用可变数量的参数。

我的问题:如何将可变数量的参数传递给函数,然后对其进行解构,以便将它们作为单独的参数一起传递给“mapcat 列表”?

最佳答案

您正在寻找 apply .这将调用一个函数,其参数按序列提供。

但是你知道有一个函数interleave吗?这正是您的 mapcatList试图做什么?

关于clojure - 将变量列表单独传递给 clojure 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8523254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com