是否有惯用的方法来干燥Clojure中的类似功能定义?

乔恩·布里斯托(Jon Bristow)

我从以下代码开始(想像的还不止于此,但我认为这很重要):

(defn fun1 [arg] {:fun1 arg})
(defn funA [arg] {:funA arg})
(defn funOne [arg] {:funOne arg})
(defn funBee [arg] {:funBee arg})

(defn -main [& args] (prn (fun1 "test-data")))

我的下一张通行证是这样的:

(defmacro item-defn [a]
  `(defn ~(symbol a) [arg#] {~(keyword a) arg#}))
(item-defn "fun1")
(item-defn "funA")
(item-defn "funOne")
(item-defn "funBee")
(defn -main [& args] (prn (fun1 "test-data")))

有没有办法将其归结为:

(defmacro item-defn [a]
  `(defn ~(symbol a) [arg#] {~(keyword a) arg#}))
(map #(item-defn %) ["fun1" "funA" "funOne" "funBee"])
(defn -main [& args] (prn (fun1 "test-data")))

(我在repl中尝试过该方法,并且似乎可以正常工作,但是当我加载其中包含的clj文件时,它就无法工作。它给我一个“ CompilerException”“无法解析符号:fun1”)

我在滥用宏吗?你会怎么做?

列昂尼德·贝沙斯特尼(Leonid Beschastny)

您可以为此定义另一个宏,例如:

(defmacro item-defn [a]
  `(defn ~(symbol a) [arg#] {~(keyword a) arg#}))

(defmacro items-defn [& names]
  `(do ~@(for [n names] `(item-defn ~n))))

那么您将可以使用它来定义任意数量的函数:

(items-defn "fun1" "funA" "funOne" "funBee")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否有惯用的方法来消除RSpec中重复的方法调用

来自分类Dev

在Clojure中,是否有类似Haskell的功能?

来自分类Dev

是否有解决方法来为c ++中的短裤定义用户定义的文字?

来自分类Dev

有没有一种惯用的方法来避免使用长Clojure字符串文字?

来自分类Dev

Clojure是否具有类似于Mathematica中BinCounts的功能?

来自分类Dev

是否有预定义的方法来计算Nutiteq中的多边形面积?

来自分类Dev

hapi js中是否有类似req.session.destroy()这样的等效方法来销毁会话?

来自分类Dev

Clojure是否具有类似Mathematica的%的功能?

来自分类Dev

是否有补充方法来获取类似鼠标事件的信息?

来自分类Dev

是否有一种优雅的方法来更改Clojure映射的键?

来自分类Dev

是否有一种优雅的方法来更改Clojure映射的键?

来自分类Dev

是否有内置(或至少简单)的方法来检查是否存在可通过$ FPATH访问的功能?

来自分类Dev

是否有任何简单易读的方法来以功能方式解析 Python 表?

来自分类Dev

pymunk-是否有标准方法来设置对象的自定义重力?

来自分类Dev

是否有高性能的numpy或pandas方法来创建自定义存储桶?

来自分类Dev

递归是否有拉链和HOF的气味(在惯用的Clojure中)?

来自分类Dev

有没有惯用的方法来测试嵌套状态分支?

来自分类Dev

Clojure方法来更新向量中的地图

来自分类Dev

有没有一种可移植的方法来知道是否在stdint.h中定义了uintptr_t?

来自分类Dev

是否有更紧凑的方法来映射指定键的值,从结果数组中删除所有未定义的值并从中获取唯一值

来自分类Dev

有没有更好的方法来检查多个变量是否在Python中是单个类型?

来自分类Dev

有没有更快的方法来检查列表中的列表是否等效?

来自分类Dev

R中是否有更好的方法来拆分具有多个部分的文件

来自分类Dev

在PySpark 1.6中是否有更有效的方法来实现余弦相似度?

来自分类Dev

在Typescript的订阅中是否有更有效的方法来订阅

来自分类Dev

是否有正确的方法来解析 JavaScript 中带有循环的 JSON?

来自分类Dev

图表 - 是否有更简单/更快的方法来删除 SharePoint 列表中的所有项目?

来自分类Dev

在Python中,是否有方便的方法来重载C ++等方法?

来自分类Dev

有没有更好的方法来编写将此代码插入到Clojure中的排序列表中的代码?

Related 相关文章

  1. 1

    是否有惯用的方法来消除RSpec中重复的方法调用

  2. 2

    在Clojure中,是否有类似Haskell的功能?

  3. 3

    是否有解决方法来为c ++中的短裤定义用户定义的文字?

  4. 4

    有没有一种惯用的方法来避免使用长Clojure字符串文字?

  5. 5

    Clojure是否具有类似于Mathematica中BinCounts的功能?

  6. 6

    是否有预定义的方法来计算Nutiteq中的多边形面积?

  7. 7

    hapi js中是否有类似req.session.destroy()这样的等效方法来销毁会话?

  8. 8

    Clojure是否具有类似Mathematica的%的功能?

  9. 9

    是否有补充方法来获取类似鼠标事件的信息?

  10. 10

    是否有一种优雅的方法来更改Clojure映射的键?

  11. 11

    是否有一种优雅的方法来更改Clojure映射的键?

  12. 12

    是否有内置(或至少简单)的方法来检查是否存在可通过$ FPATH访问的功能?

  13. 13

    是否有任何简单易读的方法来以功能方式解析 Python 表?

  14. 14

    pymunk-是否有标准方法来设置对象的自定义重力?

  15. 15

    是否有高性能的numpy或pandas方法来创建自定义存储桶?

  16. 16

    递归是否有拉链和HOF的气味(在惯用的Clojure中)?

  17. 17

    有没有惯用的方法来测试嵌套状态分支?

  18. 18

    Clojure方法来更新向量中的地图

  19. 19

    有没有一种可移植的方法来知道是否在stdint.h中定义了uintptr_t?

  20. 20

    是否有更紧凑的方法来映射指定键的值,从结果数组中删除所有未定义的值并从中获取唯一值

  21. 21

    有没有更好的方法来检查多个变量是否在Python中是单个类型?

  22. 22

    有没有更快的方法来检查列表中的列表是否等效?

  23. 23

    R中是否有更好的方法来拆分具有多个部分的文件

  24. 24

    在PySpark 1.6中是否有更有效的方法来实现余弦相似度?

  25. 25

    在Typescript的订阅中是否有更有效的方法来订阅

  26. 26

    是否有正确的方法来解析 JavaScript 中带有循环的 JSON?

  27. 27

    图表 - 是否有更简单/更快的方法来删除 SharePoint 列表中的所有项目?

  28. 28

    在Python中,是否有方便的方法来重载C ++等方法?

  29. 29

    有没有更好的方法来编写将此代码插入到Clojure中的排序列表中的代码?

热门标签

归档