我有这样的事情:
user> (defrecord vertex [id val]) => user.vertex
user> (def v vertex) => #'user/v
user> (= v vertex) => true
user> (type v) => java.lang.Class
user> (type vertex) => java.lang.Class
user> (vertex. 1 2) => #user.vertex{:id 1, :val 2}
user> (v. 1 2) => "Unable to resolve classname v"
user> (new v 1 2) => "Unable to resolve classname v"
所以基本上我不能将顶点绑定到另一个名字。尝试将 defrecord 类型传递给函数、let 或其他任何东西也是如此。为什么会这样,我可以做些什么来临时重命名 defrecord?
我猜这是与Java互操作有关的一些技巧。