はじめての Clojure , Hello World をやってみる
ちょっとひねってみて、 リストにある人物それぞれにこんにちはするサンプル。
;
; Hello World!
;
(def toy-story-cast '("Woody","Buzz","Sarge"))
(defn say-hello
"リストにある人物にこんにちは"
[persons]
( println (str "Hello " (first persons) " !" ) )
( when-not (zero? (count (rest persons)))
(say-hello (rest persons))
)
)
(say-hello toy-story-cast)
なんとなく、リスト遊び、という感覚がつかめてきたような気がしてきた。 しかし、やっぱり括弧が多いのでどの括弧がどの括弧で、ということは気になる。
自分自身の関数で再帰する場合は、関数名でなく recur を使えばよいことが判明。 つまり以下のように.
;
; Hello World!
;
(def toy-story-cast '("Woody","Buzz","Sarge"))
(defn say-hello
"リストにある人物にこんにちは"
[persons]
( println (str "Hello " (first persons) " !" ) )
( when-not (zero? (count (rest persons)))
;(say-hello (rest persons))
(recur (rest persons))
)
)
(say-hello toy-story-cast)
結果はこんな感じ.
$ clj hello.clj
Hello Woody !
Hello Buzz !
Hello Sarge !