Clojure元编程动态选择记录(初学者!)

Clojure元编程动态选择记录(初学者!),clojure,metaprogramming,Clojure,Metaprogramming,我有一堆实现p协议的记录 我想写一个方法,它将选择一种类型的记录,构造它,然后对它调用一个方法 例如,如果我有一个记录列表 def types'A B C我想做一些类似->第一类1 2 3的事情,函数也是值,可以存储在数据结构中,也可以从数据结构中检索。因此,您应该能够以某种方便的格式存储要从中选择的构造函数,并从中使用它们。比如: def记录foo[x y] 除雾记录条[x y z] def构造函数[->foo->bar] 第一个构造函数4 5;;=>user.foo{:x4,:y5} ;;或

我有一堆实现p协议的记录

我想写一个方法,它将选择一种类型的记录,构造它,然后对它调用一个方法

例如,如果我有一个记录列表
def types'A B C我想做一些类似->第一类1 2 3的事情,函数也是值,可以存储在数据结构中,也可以从数据结构中检索。因此,您应该能够以某种方便的格式存储要从中选择的构造函数,并从中使用它们。比如:

def记录foo[x y] 除雾记录条[x y z] def构造函数[->foo->bar] 第一个构造函数4 5;;=>user.foo{:x4,:y5} ;;或 应用第二个构造函数[20 true:baz];;=>user.bar{:x20,:ytrue,:z:baz} ->第二个构造函数应用'59-30 false;;=>user.bar{:x59,:y-30,:zfalse} 或者您甚至可以完全跳过数据结构:

defn-quxx[n-a-map] 如果<25 n地图->食物地图->酒吧地图 quxx 2{:x3:y9:z-200};=>user.bar{:x3,:y9,:z-200} quxx 29{:X3:Y9:z-200};=>user.foo{:x3,:y9,:z-200}