4

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

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

即使上述方法有效:

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

我对此不满意,因为 Cursive 突出显示n并作为未声明的变量,这对于和m之类的宏不会发生。如何改进我的实施?forlet

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

4

1 回答 1

2

取自@superkonduktr 评论:

这是目前正在处理的 Cursive 中的一个已知问题。目前,唯一的补救措施似乎是在 beta 版本 1.3.0-eap1 中,您可以在其中指示 Cursive 解析宏中的绑定,就好像它是一个 let 一样。另一种解决方案是完全禁用突出显示未解析的符号(设置 → 语言和框架 → Clojure → 突出显示未解析的符号)。

于 2016-05-27T11:59:47.477 回答