user=> (+ 7654 1234)
8888
此页面包含《学习 Clojure》指南中“测试你的知识”部分的解答。
使用 REPL,计算 7654 和 1234 的和。
user=> (+ 7654 1234)
8888
将以下代数表达式重写为 Clojure 表达式:( 7 + 3 * 4 + 5 ) / 10
。
(/ (+ 7 (* 3 4) 5) 10)
使用 REPL 文档函数,查找 rem 和 mod 函数的文档。根据文档比较提供的表达式的结果。
user=> (doc rem)
clojure.core/rem
([num div])
remainder of dividing numerator by denominator.
nil
user=> (doc mod)
clojure.core/mod
([num div])
Modulus of num and div. Truncates toward negative infinity.
nil
使用 find-doc,查找打印最近 REPL 异常的堆栈跟踪的函数。
pst
定义一个名为 greet
的函数,该函数不带参数并打印“Hello”。
(defn greet []
(println "Hello"))
使用 def
、fn
和 #()
重定义 greet。
;; using fn
(def greet
(fn [] (println "Hello")))
;; using #()
(def greet
#(println "Hello"))
定义一个名为 greeting
的函数……
(defn greeting
([] (greeting "Hello" "World"))
([x] (greeting "Hello" x))
([x y] (str x ", " y "!")))
定义一个名为 do-nothing
的函数……
(defn do-nothing [x] x)
定义一个名为 always-thing
的函数……
(defn always-thing [& xs] 100)
定义一个名为 make-thingy
的函数……
(defn make-thingy [x]
(fn [& args] x))
定义一个名为 triplicate
的函数……
(defn triplicate [f]
(f) (f) (f))
定义一个名为 opposite
的函数……
(defn opposite [f]
(fn [& args] (not (apply f args))))
定义一个名为 triplicate2
的函数……
(defn triplicate2 [f & args]
(triplicate (fn [] (apply f args))))
使用 java.lang.Math
类……
user=> (Math/cos Math/PI)
-1.0
user=> (+ (Math/pow (Math/sin 0.2) 2)
(Math/pow (Math/cos 0.2) 2))
1.0
定义一个函数,该函数将 HTTP URL 作为字符串……
(defn http-get [url]
(slurp
(.openStream
(java.net.URL. url))))
(defn http-get [url]
(slurp url))
定义一个名为 one-less-arg
的函数
(defn one-less-arg [f x]
(fn [& args] (apply f x args)))
定义一个名为 two-fns
的函数
(defn two-fns [f g]
(fn [x] (f (g x))))