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



Tags: clojure