2024年Clojure状态调查!中分享您的想法。

欢迎!请访问关于页面以获取更多关于如何使用本站的信息。

0
core.logic
由Burt在Clojure邮件列表中报道

使用"1.9.0-alpha10"和core.logic "0.8.10"

(ns lwb.nd.rules
  (:refer-clojure :exclude [==])
  (:require [clojure.core.logic :refer :all]))
=> nil

使用"1.9.0-alpha12"和core.logic "0.8.10"

(ns lwb.nd.rules
  (:refer-clojure :exclude [==])
  (:require [clojure.core.logic :refer :all]))
编译器异常clojure.lang.ExceptionInfo:对clojure.core/fn的调用不符合规范
在:[0] val: clojure.core.logic/-inc失败spec::clojure.core.specs/arg-list at:[:args :bs :arity-1 :args]谓词:vector?
在:[0] val: clojure.core.logic/-inc失败spec::clojure.core.specs/args+body at:[:args :bs :arity-n]谓词:(cat :args :clojure.core.specs/arg-list :prepost (? map?) :body (* any?))
:clojure.spec/args(clojure.core.logic/-inc [] (bind (this) g))
 #:clojure.spec{:problems ({:path [:args :bs :arity-1 :args], :pred vector?, :val clojure.core.logic/-inc, :via [:clojure.core.specs/args+body :clojure.core.specs/arg-list :clojure.core.specs/arg-list], :in [0]} {:path [:args :bs :arity-n], :pred (cat :args :clojure.core.specs/arg-list :prepost (? map?) :body (* any?)), :val clojure.core.logic/-inc, :via [:clojure.core.specs/args+body :clojure.core.specs/args+body], :in [0]}), :args (clojure.core.logic/-inc [] (bind (this) g))}, 编译:(clojure/core/logic.clj:1130:5)

4 答案

0

评论者:[email protected]

看起来问题出在宏-inc上。它应在宏展开期间引用内部fn名称,使其保持为未限定的符号。

0

评论者:[email protected]

宏在扩展期间需要保护fn的内部名称。

0
0
参考资料:[https://clojure.atlassian.net/browse/LOGIC-180](https://clojure.atlassian.net/browse/LOGIC-180)(由[email protected]报告)
...