【问题标题】:Clojure, Map one function to two parameters, one parameter is fixed , other is taken from a list [duplicate]Clojure,将一个函数映射到两个参数,一个参数是固定的,另一个是从列表中获取的[重复]
【发布时间】:2014-08-14 09:55:10
【问题描述】:

我有一个带有两个参数的函数。

现在我想:

(map fn x [y1 y2 y3])

我需要fn 的结果应用于x y1 , x y2 , x y3

谁能帮忙?

【问题讨论】:

    标签: map clojure


    【解决方案1】:

    有几种方法可以做到这一点:

    首先,只需根据需要重复x

    (map fn (repeat x) [y1 y2 y3])
    

    repeat 将返回 xs 的惰性序列。

    另一种方法是使用partial 函数,该函数应用了已绑定到原始函数的参数部分。

    (map (partial fn x) [y1 y2 y3])
    

    (partial fn x) 将返回一个 x 已应用于原始 fn 的函数。所以结果将是((fn x y1) (fn x y2) (fn x y3))

    【讨论】:

      【解决方案2】:

      这就是 partial 的用途。

      http://clojuredocs.org/clojure_core/clojure.core/partial

      针对您的具体情况:

      (map (partial fn x) [y1 y2 y3])
      

      【讨论】:

        【解决方案3】:

        (map #(f x %) [y1 y2 y3])

        #() 是 (fn [args] (...)) 的读取器宏

        【讨论】:

        • +1 用于创建匿名函数而不是部分 - 部分比这个问题需要的更普遍
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        • 2015-06-19
        • 2020-03-13
        • 2016-07-10
        • 1970-01-01
        • 2019-02-19
        相关资源
        最近更新 更多