Clojure与Haskell语言特性探索
1. Clojure语言特性
Clojure是Lisp语言的一种,具有强大的元编程能力,其代码即数据的特性使得宏等功能得以实现。
1.1 多方法与协议调度
在Clojure中,多方法和协议调度可解决表达式问题。以动物示例来说,代码如下:
(use 'clojure.test)
(def h (horse "CJ"))
(is (= (speak h) "CJ says neigh"))
(def c (cow "Bessie"))
(is (= (speak c) "Bessie says moooo"))
(is (= (speak (sheep "Little Lamb")) "Little Lamb says baaaa"))
; Add a new kind of animal
(defn dog [name] {:Animal :dog :name name})
; Add a new method
(defmulti emoji :Animal)
(defmethod emoji :horse [h] "\uD83D\uDC0E")
(defmethod emoji :cow [c] "\uD83D\uDC04")
(defmethod emoji :sheep [s] "\uD83D\uDC11")
(defmethod emoji :dog [d] "\uD83D\uDC15")
(doseq [a [h c (sheep "Wooly") (dog "Spike")]] (println (emoji a)))
<
超级会员免费看
订阅专栏 解锁全文

85

被折叠的 条评论
为什么被折叠?



