2024 年 Clojure 州情况调查中分享您的观点!

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

0
core.typed

    (defmacro lol2 []
      (let [a (list `typed/Option `typed/AnyInteger)]
        `(fn [] :- ~a 1)))
    
    
    (defmacro lol []
      `(fn [] :- (typed/Option typed/AnyInteger) 1))

    (clojure.core.typed/def lol*2 :- [-> (typed/Option typed/AnyInteger)]
      (lol2))
    
    (clojure.core.typed/def lol* :- (typed/Option typed/AnyInteger)
      (lol))


我将此代码放在名称空间 A 中,两个都通过了类型检查,没有问题。

当 A 依赖于名称空间 B 时,当 B 进行检查时
lol*2 完全正常,但 lol* 报错

"Bad type syntax: (clojure.core.typed/Option clojure.core.typed/AnyInteger)"


以下代码运行正常。

    (defmacro lol**3 []
      `(fn [] :- typed/AnyInteger 1))
    
    (clojure.core.typed/def lol*3 :- typed/AnyInteger)
      (lol**3))

1 答案

0
参考:https://clojure.atlassian.net/browse/CTYP-191(由 alex+import 报告)
...