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
最終更新:2012年04月27日 11:13