2009-01-01から1年間の記事一覧

antでcljファイルをコンパイル(build.xmlのひな形)

antでcljファイルをコンパイル後、jarにアーカイブするためのbuild.xmlを作成した。 プロジェクト構成 プロジェクトのディレクトリ構成は以下の通り。 hogeapp/ … プロジェクトディレクトリ src/ … ソースファイル sample/hoge/hogeapp.clj … サンプルアプリ…

echo server

Programming Clojureを読み終えた。 Common Lispとは微妙に違うので、コードを書く時にとまどう事も多いが、豊富なJavaライブラリを直接使用できるのは大きな利点である。 emacs + slimeを使えば、動作確認をしながらコードを書けるので、サクサク開発できて…

アナフォリックマクロ

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を使えるようにした…

duck-streams

clojure.contrib.duck-streamにはファイル入出力用の便利な関数が定義されている。 ; 使用する関数を宣言 (use '[clojure.contrib.duck-streams :only (spit append-spit pwd)]) ; ファイルに文字列を出力する。 (spit "hello.txt", "こんにちは、世界!\n") …

(compile 'hoge.fuga)でコンパイルできない

Programming Clojureを読みながらclojureの勉強中である。hoge/fuga.cljをコンパイルしようと、 (compile 'hoge.fuga) を実行すると、ClassNotFoundException例外が発生した。 コンパイルしたいcljソースファイルと、コンパイルされたクラス出力ディレクトリ…

clj script

Windowsで、cljスクリプトの実行とREPL環境を実現するためのスクリプト。 JLineを使用し、カーソルキーの上下で過去の入力を再入力できる。参考URL: http://en.wikibooks.org/wiki/Clojure_Programming/Getting_Started各ライブラリのインストール先は以下の…

安定版(version1.0)のclojure, clojure-contribのビルド方法

Programming Clojureを読みながらClojureを勉強中であるが、 記載されていたClojureのビルド方法は古かった。 本ではsvnを使ってビルドしているが、現在はclojureとclojure-contribはgit管理(ホストはgit-hub)となっている。 version1.0のパッケージを作成す…

Programming Clojure

お昼休みに八重洲ブックセンターに寄って、 Programming Clojureを買いました。 なかなか面白そう。まずは、勉強がてら、指定したファイルの中身を出力するコードを書いてみよう。 Common Lispでは、こんな感じで書けるけど。 (defun cat (filename) (with-o…

NTEmacs23 + slime + clojure

NTEmacs23 + slime + clojure の開発環境構築手順メモ。 http://riddell.us/tutorial/slime_swank/slime_swank.html を参考に。環境: Vista, NTEmacs23, cygwinインストール済み homeディレクトリ: c:\home アプリインストール先: c:\home\opt clojure-mode,…

ncursesを使う

Common Lispにはcl-ncursesというncursesライブラリあり。まずはインストール。 (require 'asdf-install) (asdf-install:install 'cl-ncureses) 簡単なサンプルを作ってみる。sample1.lisp (asdf:oos 'asdf:load-op :cl-ncurses) (defun print-msg (y x msg)…