如何在Clojure宏中绑定变量?

时间:2016-05-27 10:42:30

标签: variables binding clojure macros cursive

我正在尝试编写一个带有绑定向量的宏和一个可以访问这些绑定的函数。最简单的形式:

(defmacro f-with-binds [binds f]
  `(let [~@binds]
     ~f))

即使以上工作:

(f-with-binds [n 123 m 456] (println n m)) ;; => 123 456

我对此并不满意,因为草书会将nm作为未声明的变量,而forlet等宏不会发生。如何改进我的实施?

ps:真正的宏返回传感器 - 绑定是传感器的状态,功能是传感器的阶跃函数

1 个答案:

答案 0 :(得分:2)

取自@superkonduktr评论:

这是Cursive中的一个已知问题,目前正在worked on。目前唯一的补救措施似乎是在测试版1.3.0-eap1中,您可以在其中指示Cursive解析宏as if it was a let中的绑定。另一种解决方案是完全禁用突出显示未解析的符号(设置→语言和框架→Clojure→突出显示未解析的符号)。