Clojure:运行时的函数组合 问题:
假设我有一组函数f_1。。。我希望在运行时编写的函数,例如:Clojure:运行时的函数组合 问题:,clojure,function-composition,Clojure,Function Composition,假设我有一组函数f_1。。。我希望在运行时编写的函数,例如: (f_a (f_b (f_c) (f_d)) (f_e)) 因此,我需要每个函数的参数类型和返回值,以便知道哪些函数可以相互插入 第一次尝试:注释每个函数 我不喜欢这种方法,因为有明显的原因,比如如果我想使用clojure.core作为函数集,我必须对每个函数进行注释,这不是很理想 问题 你将如何尝试解决这个问题 你能帮我吗 我在编写传递给solr的搜索查询时也做了类似的事情,并使用一个映射作为所有函数的参数,让它们返回一个映射,其
(f_a (f_b (f_c) (f_d)) (f_e))
因此,我需要每个函数的参数类型和返回值,以便知道哪些函数可以相互插入
第一次尝试:注释每个函数
我不喜欢这种方法,因为有明显的原因,比如如果我想使用clojure.core作为函数集,我必须对每个函数进行注释,这不是很理想
问题
我在编写传递给solr的搜索查询时也做了类似的事情,并使用一个映射作为所有函数的参数,让它们返回一个映射,其中包含函数决定在映射中进行的任何更改,其他所有内容都返回不变。简言之,我想:
(defn foo [n f]
^{:params [Number clojure.lang.Fn]
:return String}
(do stuff with f and n, return a string))