2009-11-01から1ヶ月間の記事一覧

アナフォリックマクロ

Programming ClojureのChapter 7 Macroの途中まで読んだので、マクロを使ってみた。アナフォリックマクロを作成しようとして、sample/macro.clj (ns sample.macro) (defmacro aif [pred then] `(let [it ~pred] (if it ~then))) を定義し、実行すると、 user…

agent同期化のサンプル

agentをawait,await-for関数で同期化するサンプルを書いてみた。send関数によるagentの更新は非同期で行なわれるが、await関数を使い、send関数で指示した関数の実行が完了するまで待機することができる。 待ち時間を指定したい場合はawait-for関数を使用す…

alterとcommute

Programming Clojureをcommuteの説明まで読んだので、alterとcommuteの違いが分かるようなサンプルプログラムを書いてみた。test.clj (def *counter* (ref 0)) (defn test-func [name time] (fn [] (dotimes [i 5] (Thread/sleep 1000) (print (format "%d: …

clojure.contrib.def

clojure.contrib/def.cljのソースを眺めたのでメモ。 名前 説明 defvar 変数を初期値とドキュメント文字列で定義する。 defunboud unbound変数をドキュメント文字列で定義する。 defmacro- defmacroのプライベート定義版。 defvar- defvarのプライベート定義…

Emacs23 + ddskk

Ubuntu9.10がリリースされたので、インストールしてみた。Emacs+SKKが無いと何も出来ないので、早速、環境構築してみた。 Emacs23でddskkを使おうとしたら、Emacs22に依存していたので、 以下の手順でddskkをインストールし、Emacs23でSKKを使えるようにした…