March 28, 2020
By: Kevin
clojure的676个核心函数
如果你觉得clojure函数多,你是对的.
统计了下, clojure(1.10.1)语言本身有大概五六百个核心函数.
(clojure-version)
;; "1.10.1"
看来做完4clojure的题不太够呀...
clojure.core中有539个函数
;; public
(count (ns-publics 'clojure.core))
;; => 659
;; funcs
(->> (ns-publics 'clojure.core)
vals
(filter #(not (.isMacro %)))
(map deref)
(filter (every-pred ifn? (comp not map?)))
count)
;; => 539
;; not functions
(->> (ns-publics 'clojure.core)
vals
(remove (comp ifn? deref))
clojure.pprint/pprint)
#_(#'clojure.core/*print-namespace-maps*
#'clojure.core/*source-path*
#'clojure.core/*command-line-args*
#'clojure.core/*read-eval*
#'clojure.core/*2
#'clojure.core/*verbose-defrecords*
#'clojure.core/*print-level*
#'clojure.core/*suppress-read*
#'clojure.core/*print-length*
#'clojure.core/*file*
#'clojure.core/*use-context-classloader*
#'clojure.core/*err*
#'clojure.core/*default-data-reader-fn*
#'clojure.core/*allow-unresolved-vars*
#'clojure.core/*1
#'clojure.core/*print-meta*
#'clojure.core/*compile-files*
#'clojure.core/*math-context*
#'clojure.core/EMPTY-NODE
#'clojure.core/*e
#'clojure.core/*unchecked-math*
#'clojure.core/*out*
#'clojure.core/*warn-on-reflection*
#'clojure.core/*compile-path*
#'clojure.core/*in*
#'clojure.core/*3
#'clojure.core/*ns*
#'clojure.core/*assert*
#'clojure.core/*print-readably*
#'clojure.core/*flush-on-newline*
#'clojure.core/*agent*
#'clojure.core/*fn-loader*
#'clojure.core/*compiler-options*
#'clojure.core/*print-dup*
#'clojure.core/*reader-resolver*)
常用的有:676个函数
(dorun (map require '[clojure.core clojure.data clojure.edn clojure.inspector
clojure.instant clojure.java.browse clojure.java.javadoc
clojure.java.io clojure.java.shellq
clojure.main clojure.pprint clojure.reflect clojure.repl
clojure.set clojure.stacktrace clojure.string
clojure.template clojure.test clojure.walk clojure.xml
clojure.zip]))
(->> (mapcat ns-publics
['clojure.core
;;'clojure.data
'clojure.edn
;;'clojure.inspector
'clojure.instant
'clojure.java.browse
'clojure.java.javadoc
'clojure.java.io
'clojure.java.shell
'clojure.main
'clojure.pprint
'clojure.reflect
'clojure.repl
'clojure.set
'clojure.stacktrace
'clojure.string
'clojure.template
'clojure.test
'clojure.walk
;;'clojure.xml
'clojure.zip])
vals
(filter #(not (.isMacro %)))
(map deref)
(filter (every-pred ifn? (comp not map?) (comp not vector?)))
count)
;;= 676