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 在: [: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上。它应该引用内部fn名称,以便在宏扩展过程中保持为未限定符号。

0

评论者:[email protected]

宏需要保护在扩展过程中的函数内部名称。

0
0
...