如果我们将clojure函数juxt推广到juxe,即juxe返回一个哈希映射而不是向量,那么这个函数juxe有用吗?
在一些函数式编程书籍中,他们将tuple定义为[abc]形式,将entity定义为{:ax:bycz}形式 如果我们把如果我们将clojure函数juxt推广到juxe,即juxe返回一个哈希映射而不是向量,那么这个函数juxe有用吗?,clojure,Clojure,在一些函数式编程书籍中,他们将tuple定义为[abc]形式,将entity定义为{:ax:bycz}形式 如果我们把juxt中的t作为元组的概念,我们可以用e作为实体的概念,得到更高阶的函数名juxe 因此,juxe的行为如下 ((juxe :a a :b b :c c) x) => {:a (a x) :b (b x) :c (c x)} 此函数是否有用 关于这个问题的一些背景想法。我认为Culjure中有三种高阶函数: 类型1:高阶模板函数 map、filter、reduce、t
juxt
中的t
作为元组的概念,我们可以用e
作为实体的概念,得到更高阶的函数名juxe
因此,juxe的行为如下
((juxe :a a :b b :c c) x) => {:a (a x) :b (b x) :c (c x)}
此函数是否有用
关于这个问题的一些背景想法。我认为Culjure中有三种高阶函数:
- 类型1:高阶模板函数
map、filter、reduce、take n、group by
- 类型2:高阶装饰功能
partial,comp,juxt
- 类型3:
#(…%1%2)
(defn juxe [& kf-pairs]
(let [pairs (partition 2 kf-pairs)
[ks fs] (apply mapv vector pairs)]
(fn [x] (zipmap ks (map #(% x) fs)))))
比如说,
=> ((juxe :a inc :b dec :c -) 99)
{:a 100, :b 98, :c -99}
我会检查clojureverse中常见的util库嫌疑犯。如果有人认为它有用。如果它对你有用,为什么不写下来并使用它呢?但我投了接近票。给出了应用于映射的序列函数的几种翻译。您的函数不在其中,因为它还处理将函数集合应用于常量数据的过程。