No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

Buzzになる数字をn個挙げるをClojureで(その2)

このシリーズの一覧はこちら

はじめに

Clojure! (あいさつ)

Buzzになる数字をn個挙げるをClojureで - No Programming, No Lifeの続き。
clojure-contrib.str-utilsのstr-joinをuseして、出力をカンマ区切りにしてみました。

useを追加

(use '(clojure.contrib (str-utils :only (str-join))))

userequirereferを一気にやってくれるので、名前空間なしで参照できるようになります。
:onlyキーワードで必要な関数だけ指定することで、名前空間の汚染を最小限に留めることができます。
(useとrequireについては require と use - 水底で思うことがとても参考になりました)

出力部分を str-join を使うように修正

前は、doseqを使っていたのですが、今回はuseしてきたstr-join関数を利用してみたいと思います。

Usage: (str-join separator sequence)

str-utils API reference (clojure-contrib)

使い方は、第一引数にセパレータとなる文字を、その後くっ付けたいシーケンスを指定する感じです。

; 出力 (str-join版)
(println
  (str-join ", " (take 10 (to-only-buzz-list fizz-buzz-list))))

ここでは、先頭10個に絞った fizz-buzz のシーケンスを ", " で繋いで出力しています。

出力結果

5, 10, 20, 25, 35, 40, 50, 55, 65, 70

おわりに

clojure-contribは非常に強力な関数ライブラリなので、使い方を一覧にしたりしたいです。
Enjoy Coding!

ソース