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

Windows上のClozure CLでhunchentoot

http://d.hatena.ne.jp/t2ru/20101205/1291537110 のやり方でasdf-installを使えるようになったのは良いが、hunchentootをインストールしようとしたときにCL+SSLでエラーが出てしまう。O_NONBLOCKというのがないと言われてた。いいのかどうかは不明だが、下…

Windows上のClozure CLでasdf-install

Windows上のClozure CLでasdf-installを使う方法について、先日のエントリのコメ欄で教えてもらった方法を試した。 http://d.hatena.ne.jp/t2ru/20100807/1281151524#c 意外に悶絶してしまったので、やり方を記録しておく。 ~/ccl-init.lisp ;; asdf-install…

チルダクオート

マクロを組むときには変数捕捉に気をつけないといけないが、実は変数捕捉をうまく使う方法もあって、On Lispにそんな例が載っている。 http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/anaphoricMacros.html一番簡単な例としては、アナフォリックIFがあ…

Common LispでGUIの必勝パターン

Windows上で フリーのCommon Lispを使った GUIアプリケーションの 自分的必勝パターン を作っておきたいと思って、ここ2,3日調べている。結論としては、Clozure CLでCL-GTK2を使うのが今のところ一番楽でパフォーマンスも良いと思われる。 スレッドを使えな…

error-kit解説

clojure.contrib.error-kit*1を使うと、Common Lispのconditionに似たエラー処理ができるようになる。 Clojureのエラー処理では、Javaのtry/throw/catchをそのまま使うが、error-kitのwith-handle/raise/handle/bind-continue/continue*2を使う。bind-contin…

error-kitを使ってretry

error-kitとtrampolineを使ったリトライ処理の実装。 (ns jp.t2ru.retry (:use [clojure.contrib.error-kit])) (defn- do-with-retry [f & args] (with-handler {:result (apply f args)} (bind-continue retry [& args] #(apply do-with-retry f args)))) (…

forマクロ

Clojureでプログラムを組んでいるうちに、forマクロが強力だということにやっと気づいたので、リファレンスを書いてみる。 forマクロとは 普通の(というか、CやJava系列の)言語では、forはループ文を表すが、Clojureではforマクロはループではなく、シーケン…

identityの別名定義でmapを便利にする

Clojureのmapでこういう変換をしたくなるときがよくある。(1 "piyo" :foo) -> ({:hoge 1} {:hoge "piyo"} {:hoge :foo})でも、#()で無名関数の定義をしてみると、エラーが出る。 #()の中身は、関数呼び出しorマクロor特殊形式である必要があるため、(#(1))と…

Leiningenで簡単Clojureプロジェクト

Programming Clojureの訳本がもうすぐ出るということで、ここ数日盛り上がり気味のClojure。Amazonに出たので、即注文。Clojureには、Javaで言うMavenに相当するツールで「Leiningen」というのがある。 http://github.com/technomancy/leiningen これを使え…