Lisp

Weblocksでウィジェットのスロットを変更すると即座に反映される件

以前weblocksのwith-flowマクロを使ってウィジェットを置き換えるという記事を書いたが、別のウィジェットに置き換えるのではなく、同じウィジェットのスロットを変更してそれを反映させたい場合はどうするのだろうかという疑問が湧いたので実験してみた。ま…

Weblocksの継続ベースの画面遷移

WeblocksはCommon Lisp用のWebアプリケーションフレームワーク(WAF)。Common LispのWAFも色々出てきているみたいだけど、一番リッチに作り込まれているのはこのWeblocksだと思う。なにしろ1行のHTMLもJavascriptも書かずにWebアプリを作ることができるという…

lispbuilder-sdlでライフゲーム書いてみた

Common Lispでゲーム開発するときはlispbuilder-sdlを使うのが定石らしい。実際CLのライブラリとしてはドキュメントも充実してるし移植性もそれなりにあり、完成度は高いように思える。とりあえず簡単な例をつくってみることにした。 思えばライフゲームを作…

LtkでGUIの練習―オセロ盤

Common Lispには全てのウィジェットがCLOSオブジェクトという強力なGUI環境の仕様CLIM(Common Lisp Interface Manager)というのがあって、商用の実装Allegro CLIMやオープンソースの実装McCLIMがある。しかしMcCLIMはかなり大きいライブラリなのでインストー…

SLIMEでClojureを使う

Clojureのバージョンアップのせいか、どうも前に他のサイトで見た方法がうまくいかなくなってしまった。 試行錯誤してみた結果とりあえずちゃんと動くようになったので、色々とアヤシイところはあるもののまとめてみる。 SLIMEのインストール Emacs Lispは~/…

なぜRubyは許容可能なLISPなのか

LISPの真実を読んでたら最後に出てきたので、かなり古い記事だけれども、Eric Kidd氏のWhy Ruby is an acceptable LISPを訳してみました。まつもとさんによる反応もあり、そのエントリの中で原文はほぼ要約されています。 一年前、私はRubyに注目してはいた…

GNOEM: Gauss Net with On-line EM algorithm

正規化ガウス関数ネットワーク(Normalized Gaussian Networks)は正規分布による線形回帰ユニットを組み合わせて非線形回帰をするモデルだ。論文によってはほとんど同じモデルが確率的ニューラルネットワークと呼ばれていることもある。修士のときにこの論文(…

GAで取引エージェントのポートフォリオ最適化

前回のエントリで紹介したGAのライブラリGECOを使って実際の問題に応用してみる。比較的単純なルールでFXの自動売買を行うエージェントを色々組み合わせる事で、全体として安定して利益を出すようなシステムを考える。 まずSMAやMACDなどの指標にもとづいて…

Common Lisp用の遺伝的アルゴリズムのライブラリGECOを使ってみる

GECO (Genetic Evolution through Combination of Objects)ASDFが使えるので、インストールするには、このサイトからパッケージをダウンロードして展開し、その中のgeco.asdへのリンクを*central-registry*に登録されているディレクトリに置く。SBCLの場合、…

DECLAREとDECLAIMとPROCLAIMの違い

http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/aced55aeed5f6ef2/e4b7902d0d84fc68 を見ると、DECLAREはそのブロックの中だけで有効で、DECLAIMとPROCLAIMは大域的に作用すると書いてある。 DECLAIMとPROCLAIMの違いは、PROCLAIMは関…

CL-HMMのインストールとテスト

FXとかで普通の離散状態、離散行動の強化学習を使うには時系列をそのまま状態とするわけにもいかないので、時系列を離散的な状態にマッピングしてから強化学習したほうがいいような気がする。例えば隠れマルコフモデルのemissionsをレートの時系列として、そ…

with-open-fileの中で中断

無限ループさせてREPLから中断することを前提としているプログラムを書いているときに、ループの中での出力をどうやってファイルに記録するかという問題が出てくる。素直に考えると (defun write-test () (with-open-file (f "/home/masatoi/hoge" :directio…

コンディションの定義と再試行マクロwith-ntimes-retry

証券会社に売買注文を出す処理は失敗することもあるので、再試行できるようにする必要がある。ある処理の中で特定のコンディションが通知されたとき、一定回数再試行するマクロを書くことにした。まずコンディションを定義する必要があるが、コンディション…

SBCLでOpenMusicをコンパイルしようとしている

フランスのどこぞの研究機関で開発されたらしいCommon Lispベースの音楽作曲,プログラミング環境であるOpenMusicをコンパイルしようと試みる. 最新バージョンはLispWorksでしかビルドできないそうで,旧バージョンのSBCL用のソースがあったので取ってくる…

LISPは速い

http://www.timestretch.com/FractalBenchmark.html 型宣言しまくりのSBCLはほとんどC言語並みに速いという話

On Lisp と LOL

Schemeの人達が継続すげーってゆってるのでOn Lispの継続の章を読んでいます. 2chのLispスレ見てたら Let Over Lambda なんて本もあるのかー なんと邦訳出たばかり http://cadr.g.hatena.ne.jp/g000001/20090709/1247145399 ちょうど東京に来てるので紀伊国…

Cの関数をSBCLから呼んでみる

http://www.geocities.co.jp/SiliconValley-SanJose/7474/cmuclMemo.html#0001にCMUCLでの例がある. SBCLでもほとんど同じように出来る. 以下のようなCのソースファイルcall_c_from_sbcl.cがあって, #include <stdio.h> int call_c_from_sbcl(void){ printf("Hello\n"</stdio.h>…

CLOSとか

追跡問題においては,複数のエージェントをクロージャとして生成してきたわけだが,エージェントの型が増えるにつれエージェント生成器生成器,エージェント生成器生成器生成器(ryが必要になってきたのでCLOSで書き直した. なんとなくオブジェクト指向を使った…

SLIME

なぜ今日はこんなにほげほげしているのか. 今日はSLIMEのまぬあるを読んだので, .emacsの該当部分をさらしあげ. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;; LISP ENVIRONMENT ;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq inferior-lisp-pro…

reader macro その3

On Lispに書かれていたデリミタの例だが, (set-macro-character #\] (get-macro-character #\))) (set-dispatch-macro-character #\# #\[ #'(lambda (stream char1 char2) (let ((accum nil) (pair (read-delimited-list #\] stream t))) (do ((i (ceiling (…

reader macro

のつづき Gaucheにあるようなデバッグ用のリードマクロを書いてみた マクロ文字は@ (set-macro-character #\@ #'(lambda (stream char) (let ((read-data (read stream t nil t))) `(progn (format t "~A~A => ~A~%" ,char (quote ,read-data) ,read-data) ,…

組み込み用のCommon Lisp環境movitz

http://common-lisp.net/project/movitz/ movitzが面白そうである。これ使えばLispOSできるんじゃね?イメージの場所を指定すればgrubから起動できるらしいのでやってみようと思う。 やってみた まずVirtual PCをインストールする。これいつの間にかフリーに…

reader macro

リードマクロにめざめる。最も単純な例ではquote (quote a) => A 'a => Aがあるが、要するにreadで事前に環境に登録しておいた文字を読み取ると対応する関数が呼ばれるということらしい。これを上手に使いこなせれば容易に俺言語がつくれる。つまりコードが…

SBCL

SBCLはCMUCLと違って明にコンパイルしなくても、式を評価した時点でコンパイルされるみたい。defunで内部定義とかしているとWarning出まくる。抑制する方法があるらしいけどまぬある読むのめんどくさい…内部定義はlabelsでやれっていう話ですよ。でもネスト…

継続

Schemeのcall-with-current-continuationの使い方はなんとなく分かったんだけど、OnLispの継続の章のマクロが何をするものなのかがよくわからんぜ! Common Lispでマルチプロセスをやりたいのだけど・・・

for文

LISPにはfor文がない。それはループは再帰で書いた方がより柔軟だからだと思うけど、再帰で書くとコードが長くなりがち。回数が決まっているときのループくらいはfor文でやりたい気がする。Rubyのfor文みたいな感じでマクロを書いた。 ;;for構文 (define-mac…

SchemeとCommon Lispってどう違うんですか?

SchemeとCommon Lispってどう違うんですか? 名前が違うよね。 いや、そういうことじゃなく… 一番違うのは名前空間だろうか。Common Lispは関数と変数で名前空間が違うから。あとは継続の有無か。 名前空間が違うってどういう意味です? 名前を保管している場…

quackのpretty-lambda

emacsのfont-lockの機能を使うことでlambdaをちゃんとギリシャ文字で表わすことが出来てウケた。quack.elでpretty-lambda-pを非nilにすると反映される。

関数が一級市民

(define (sigma start end general-form) (letrec *1 (iter (+ i 1) end (+ product (general-form i))))))) (iter start end 0))) Σをこういう風に定義しておくと,例えばNapier数を求めたいとき,そのマクローリン展開はこういうふうに書ける. (sigma 0 100 …

Lispセミナー

ここ二日ほど学校をさぼってFranzと数理システムが主催しているLispのセミナーに出てきました. 初日は新宿御苑の数理システムのセミナー室で. ドトールコーヒーが飲み放題なのに感激する. CLOSの解説やら他言語とのインターフェースやらMySQLへの接続ライブ…