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
by
0
by
...