作为改进Cider调试器的一部分,我需要为所有可能的特殊形式实现特殊处理。换句话说,我需要知道满足$resouce
的所有符号。
Special Forms上的文档页面尽管很有帮助但并未提供所有文档页面。
例如,经过一些实验,我已经了解了
special-symbol?
个对应项(例如*
和let*
)。 loop*
特殊符号(如果不是为了运气,我就不会找到它。)是否有所有特殊符号的完整列表?
或者,有没有办法列出所有实习符号?如果是这样,那么我可以过滤clojure.core/import*
。
答案 0 :(得分:15)
查看special-symbol?
的定义提供了一个很大的线索:
(defn special-symbol?
"Returns true if s names a special form"
{:added "1.0"
:static true}
[s]
(contains? (. clojure.lang.Compiler specials) s))
因此:
user=> (pprint (keys (. clojure.lang.Compiler specials)))
(&
monitor-exit
case*
try
reify*
finally
loop*
do
letfn*
if
clojure.core/import*
new
deftype*
let*
fn*
recur
set!
.
var
quote
catch
throw
monitor-enter
def)