しかし私は今ニートなので購入するか(あるいはできるのか)非常に悩ましいところです。
とりあえず環境を作って少ーし試してみました。
少し試して疲れたので続きはまた今度。
環境はclojure boxが手っ取り早いです。
実はclispとslimeを突っ込んではいたもののほとんど触っておらず、slimeの使い方がまだいまいちよくわかりません。
ところでClojureってCommon LispでもSchemeでもないそうですね。Arcなんかと同様、新しいLispの方言ってとこなんでしょうかね?
今回は以下のページを見ながらぽちぽち書いて、なるほど動くな、と試してみた程度。
clojureはGAEで動くらしいのでやっぱやってみたいですよね。
ついでにGAEのSDKも整備してdemoを動かして「すげー」しました。
(defn dbl [x]
(* x x))
;; C-c C-c
(dbl 5)
;; C-x C-e
; -> 25
; SLIME 2010-01-06
user> (dbl 5)
25
user>
; factorial
(defn fact [n]
(if (= n 0)
1
(* n (fact (- n 1)))))
user> (fact 10)
3628800
user> (+ 1 2)
3
user> (println "hello, world")
(defn hello [name]
(println "Hello, " name))
(def vowel? (set "aeiou"))
(defn pig-latin [word]
(let [first-letter (first word)]
(if (vowel? first-letter)
(str word "ay")
(str (subs word 1) first-letter "ay"))))
(println (pig-latin "red"))
; -> edray
(println (pig-latin "orange"))
; -> orangeay
(require 'clojure.contrib.str-utils)
(doc clojure.contrib.str-utils/str-join)
; ->
;; -------------------------
;; clojure.contrib.str-utils/str-join
;; ([separator sequence])
;; Returns a string of all elements in 'sequence', separated by
;; 'separator'. Like Perl's 'join'.
(let [x 1]
(let [x 3]
(println (str "x = " x))))
; -> x = 3
(count [1 2 "three" 4 5])
; -> 5
(reverse [5 4 3 2 1])
; -> (1 2 3 4 5)
(map #(+ % 3) [2 4 6])
; -> (5 7 9)
(map + [2 4 7][5 6][1 2 3 4])
; -> (8 12)
(map + [1 2 3][1 2 3][1 2 3])
; -> (3 6 9)
(apply + [1 2 3 4 5 6 7 8 9 10])
; -> 55
(def languages
["lisp" "scheme" "clojure" "arc"])
(first languages)
; -> "lisp"
(second languages)
; -> "scheme
(third languages)
; -> errorr?
(last languages)
; -> "arc"
(nth languages 0)
; -> "lisp"
(nth languages 3)
; -> arc
(next languages)
; -> ("scheme" "clojure" "arc")
(butlast languages)
; -> ("lispp" "scheme" "clojure")
(drop-last 2 languages)
; -> ("lisp" "scheme")
(filter #(> (count %) 3) languages)
; -> ("lisp" "scheme" "clojure")
0 件のコメント:
コメントを投稿