Macros 编写redis json驱动程序时,Monad能否替换宏?
在本文中,他列出了您希望使用单子的原因。他的理由之一是: 那么,有什么线索表明一元溶液是可能的呢?在我看来,每当你复制和粘贴代码来定义一个与现有函数相似的新函数时,都可能潜伏着一个monad 这实际上与使用Clojure风格宏的理由非常相似 在本文中,他谈到了编写redis驱动程序生成json时宏的用例。在幻灯片66中,他展示了一个例子Macros 编写redis json驱动程序时,Monad能否替换宏?,macros,clojure,monads,Macros,Clojure,Monads,在本文中,他列出了您希望使用单子的原因。他的理由之一是: 那么,有什么线索表明一元溶液是可能的呢?在我看来,每当你复制和粘贴代码来定义一个与现有函数相似的新函数时,都可能潜伏着一个monad 这实际上与使用Clojure风格宏的理由非常相似 在本文中,他谈到了编写redis驱动程序生成json时宏的用例。在幻灯片66中,他展示了一个例子 (defmacro defcommand [name params] (let [p (parameters params)] `(defn
(defmacro defcommand
[name params]
(let [p (parameters params)]
`(defn ~name ~params
我的问题是-在为redis调用而不是宏生成json时,是否可以使用Monad来解决重复代码的问题
假设
- 我理解在Clojure中选择宏比选择单子更为惯用。对于这个问题,我选择忽略什么是惯用语,而只看什么是可能的李>
- 相同的代码块-使用函数/高阶函数
- 相同的代码块,但需要某种“编译时”预处理使其抽象为宏
- “有上下文的盒子中的值”的模式,它符合单子定律-单子。(可能,IO,List——所有这些都是API模式,我们可以在一个带有上下文的框中看到一个值)