clojure cheat sheet for SICP

clojureの文法で特にSICPで必要になったものをメモしていきたいと思っています。
original cheat sheetはこちら
説明については正しくない可能性があるので予めご了承ください。

Chapter 2

list, first, last (cons, car, cdrの代わり)

user=> (def x (list 1 2))
#'user/x
user=> (first x)
1
user=> (last x)
2
listについては'()でも作成できる
user=> '(1 2 3 4)
(1 2 3 4)
user=> (list 1 2 3 4)
(1 2 3 4)

rest (listからfirstを除いたものを返す)

user=> (rest [1 2 3 4 5])
(2 3 4 5)
user=> (rest ["a" "b" "c" "d" "e"])
("b" "c" "d" "e")



Chapter 1


cond 条件分岐

(cond
  (> grade 90) "A"
  (> grade 80) "B"
  (> grade 70) "C"
  (> grade 60) "D"
  :else "F"))

if 2択?

(if (< number 100)
  "yes"
  "no"))

defn 関数の宣言

schemeは全部defineで済ませます?が、clojureではdefnとします。SICPでも頻出。
※ちなみにclojureのdefは変数への代入?に使います。

(defn foo [a b c]
  (* a b c))

(foo 1 2 3)
6


fn いわゆるlambda式

ローカルな関数を定義したいときに使います。
((fn [a b] (+ a b)) 3 4)
7

let ローカル変数宣言

(let [a 1 b 2]
 (+ a b))
3






















タグ:

clojure
最終更新:2012年04月27日 11:13