带有partials的嵌套函数参数

时间:2013-12-11 22:06:00

标签: clojure

我有这个函数定义,但是我想知道是否可以使用def和更高阶函数来执行此操作(我希望结果以相同的顺序获取args)

(defn f1
  [a b c]
  (f2
   (partial f3 a)
   b c))

f2和f3看起来像(保持参数相关命名):

(defn f2
  [f b c]
  (my-fn-using f b c))

(defn f3
  [a x c]
  (another-fn-using a x c))

1 个答案:

答案 0 :(得分:0)

我不是100%肯定我明白你在问什么,但这是我对答案的看法。

f1转换为HOF可能需要修改它以接受参数[f g a b c]并使用fg作为my-fn-using和{{1}来调用它}}

another-fn-using

然后你会把它称为:

(defn f1 [f g a b c]
  (f (partial g a) b c))

将适用于:

(f1 my-fn-using another-fn-using a b c)

我不确定你是否正在寻找的原因是你提到“嵌套函数参数”,但我不知道它们在哪里。 (my-fn-using (partial another-fn-using a) b c) 的缺失参数来自another-fn-using内部,当前者被调用时,后者直接得到它的参数。

例如:

my-fn-using