Clojure is cool
Fibinocci in a one-liner
(defn fib [n] (cond (= n 0) 1 (= n 1) 1 :else (+ (fib (dec n)) (fib (dec (dec n))))))
Polymorphism
(defprotocol Talkable (talk [self]))
(defrecord Cat [] Talkable (talk [self] "meow"))
(defrecord Dog [] Talkable (talk [self] "woof"))
(def c (Cat.))
(talk c) => "meow"
(def d (Dog.))
(talk d) => "woof"
(map talk [c d]) => ("meow", "woof")
<< Home