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]))
CompilerException clojure.lang.ExceptionInfo:对 clojure.core/fn 的调用不符合 spec
在:[0] val:clojure.core.logic/-inc 违反 spec::clojure.core.specs/arg-list 在:[:args :bs :arity-1 :args] 断言:vector?
在:[0] val:clojure.core.logic/-inc 违反 spec::clojure.core.specs/args+body 在:[: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 宏上。它应该在宏展开时引用内部函数名称,使其保持为非完全限定符号。

0

评论者:[email protected]

宏需要在展开时保护函数的内部名称。

0
0
...