TL;DR

  • Clojure では、fn で名前のない関数(無名関数)を定義できる。
  • defn は、def で定義した変数に fn で作った関数を束縛するシンタックスシュガーである。

内容

fn を使うと、名前を持たない関数を定義できる。

(def print-something
  (fn [something]
    (println something)))
(print-something "something is better than nothing")
;; something is better than nothing

上のコードは something という引数を 1 つ受け取る関数を print-something という変数に束縛している。

関数の定義に使う defn は、def で定義した変数に関数 fn を束縛したもののシンタックスシュガーである。したがって、先ほどのコードは次と等しい。

(defn print-something [something]
	(println something))

キーワード