Top > Blog Index > はじめての Clojure , Hello World をやってみる

はじめての 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 !