読者です 読者をやめる 読者になる 読者になる

Clojure

Clojureでテストを書く (with TDD)

Clojureでテストを書く、というのはclojure.testというものを用いることで簡単に達成できます。今回はTDDを進めていく体で、テストの書き方を紹介していこうと思います。 お題は簡単に行うためにFizzBuzz*1です。FizzBuzzについてはWeb上に多く紹介があると…

JSONファイルを処理するコードをClojureで書いてみよう

タイトルで「JSONファイルを処理するコードをClojureで書いてみよう」などと言っていますが、ほとんどすることはありません。基本的にはclojure.contrib.jsonを使って、JSON形式の文字列(およびJSONファイル)とClojureのマップの相互変換してもらえばいいだ…

Clojureでコマンドラインオプションを処理してみよう

Clojureでコマンドラインのオプションを処理するための便利なマクロがあります。それがclojure.contrib.command-lineです。早速ですが使い方を見てみます。 (ns sample.core (:use [clojure.contrib.command-line :only (with-command-line)]) (:use [clojur…

Clojureで簡易DSLを書いてみよう

今回は本当に簡単なDSL(もどきですが…)を書くということを行ってみます。 (defdsl :foo "foo" :bar "bar" :num 3 :data ["a" "b" "c"]) のようにファイルに書かれたDSLを読みこんで処理することを想定します。 (もちろんこれはClojureのコードになっています…

leiningenでClojureをビルドしよう

独りAdvent Calendar 第2弾として、Clojureについて書いていこうと思います。Clojureは私自身最近始めたばかりの言語で、1ヶ月ほど合間を見ながら少しずつやってきた言語です。 そのため、あまりよいコードになっていなかったり、Clojureっぽくない書き方に…

Clojureの"->"(arrow)マクロ

いろいろClojureを調べていたところ出くわした"->"というマクロが気になったのでリファレンスを見てなんとなく理解した気がするので書いておきます。 アロー(->)なマクロさん 現代的にしようという意図はありつつも、Lisp道をひた走るClojureさん。 連鎖的な…

Clojureの引数や関数の戻り値にキャストの情報を与える

Clojureは動的型付け言語です。つまり、変数や関数の戻り値、引数の型宣言はありません。 (defn hoge [s] (.toUpperCase s)) でも、結局のところ、引数に渡すオブジェクトや関数の戻り値で使っているのはJavaのクラスのオブジェクトだったりするわけです。さ…

ClojureでFizzBuzzを書いてみた with テストコード

ClojureでFizzBuzzをテスト付きで書いてみました。Clojure自体がなかなかつかめなくて、さすがにTDDできるほど余裕がなかったです… ; 名前空間の定義と ; test用の関数を使うために:useでclojure.testをロード (ns fizzbuzz (:use clojure.test)) ; 実際のFi…