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

Memo

http://www.radonc.washington.edu/medinfo/prism/

メモ SBCL LLVM backend

http://sbcl10.sbcl.org/ http://repo.or.cz/w/sbcl/llvm.git これは読みたいなあ。

clj-processing(2)

ああ、defapplet という便利マクロが定義されていた。これを使うと短く掛けるな。 問題は未だにかっこいい例を見つけられないという一点。

clj-processing

clj-processing 環境が壊れていたので作り直し。ant だとかの java 資産が使えるのが clojure のいいところ。芸術度は低すぎるが一応張っておこう。emacs から clojure の repl を実行した後、以下をロードすると Processing (PApplet) のウィンドウが立ち上…

メモ

まだファイルを開いてs式を一つづつ読む、さえやり方が分かっていないな。 とりあえず slurp でファイル全体を読んで、read-string でデータにしておこう。 clojure のループは scheme の named let っぽい、recur と組み合わせて使う progn のかわりは do d…

Toy VM(4)

まだ途中だけどスタックの状態をダンプできるようになってきた。 実行時オプションを追加 済 VM のメインループにダンプするためのコードを追加 済 何がスタックに積まれているか調べる これから P5 に渡す これから 続く

Toy VM(3)

メモ。 Gauche を構造を理解する目的で読む場合、古いバージョンから読む。 例えば Reading Gauche が対象にしている 0.8.11 では、src/vm.c と src/gauche/vm.h にかなりの情報が有る。YAGHG も0.8.6 が対象。現在の gauche のソースはずっと複雑な作りにな…

対話的なグラフィック環境

ライブコーディング、というのだろうか、対話的にプログラミング言語でビジュアライズできる環境について。 名前 URL 特徴など サンプル Processing http://processing.org/ マルチプラットフォーム。java ベース、java を簡易化した p5 シンタックスで操作…

簿記(2)

3級レベルだと、貸借対照表と損益計算書とあとはひたすら仕訳、というのが現時点での理解。 面白みというのはあまり無いが、まあ進めてみよう。

簿記

次回の簿記検定試験情報。出遅れたので今回は受けれない。 平成22年2月28日(日) 申し込み期間 12月15日(火)〜平成22年1月15日(金) 現在の知識。 ;; (defclass 貸借対照表 () ((資産 :accessor 資産) (負債 :accessor 負債) (資本 :accessor 資本) (貸借…

Toy VM(2)

Gauche の命令列の一部だけが動くおもちゃの vm を作ってスタックマシンを理解しよう、の続き。時間が空いてしまったので何もかも忘れている。以下、何もかも途中だけど自分のために記録。SECD Machine をある程度理解した今の頭で、やりたいことの骨格を改…

ピタゴラ装置 in Processing

パラメトロン計算機 http://parametron.blogspot.com/2009/10/blog-post_28.htmlこういう動きを見せるためにさらっと Processing で書けるようになりたい。

メモリ

しばらく忙しくて何も出来なかった。 ちょっと思いつきで tagged pointer を配列で書いて見ているところ。secd vm 。 cons すると空きメモリが減っていく alignment されていてアドレスの末尾 3bit を型情報につかう 以下は (cons 4 (cons 1 3)) のつもり SE…

memo

Wikiepdia にのっている SECD machine を見ると、なんだかメモリーの構成が書いてある。 アドレス タグ 内容 9 8 7 6 .. 2 1

memo

http://www.cs.utah.edu/~mflatt/past-courses/cs6510/public_html/lispm.pdf (defstruct cell (tag 'integer) (contents nil)) (make-array 1024 :element-type 'cell)うーん時間がない

SECD Machine SBCL ver.

common lisp でも SECD マシンを書いてみた。 gauche でコンシングの数を調べる方法は結局見つけられず。まだ機能として無いのかも。cons の実行回数を自分で数えてもいいけど SBCL にもプロファイルあり。time でコンシングの情報が手に入る。 SBCL には ut…

資料

http://www.geocities.jp/m_hiroi/func/abcscm33.html これは素晴らしい。SECD 仮想マシン。

profile

fib のプロファイルを最適化なしで取ってみた。 プロファイル無しだと 0.03 sec vs 11.5 sec(プロファイル付きで0.07 sec vs 14.25 sec) か。 いろいろ試しでもしないと速くなる気がしない。 gosh> (with-profiler (letrec ((fib (lambda (n) (if (< n 2) n …

secd in clojure

clojure でも secd machine を書いてみようとやってみて、あまりに clojure について知らなすぎることが分かった。 (cons 1 2) はエラー。(cons 1 (list 2)) は OK car, cdr はfirst,rest begin, progn のかわりに do cond,let は lisp に比べてカッコが一つ…

memo

http://d.hatena.ne.jp/KZR/20090915/p2 http://impromptu.moso.com.au/ これは。Processing 並の環境を scheme で?しかも LLVM も使ってる? 結構前からあるみたいだけど見逃してたっぽい。

toy VM 続き

gauche toy VM はまだ遠いので、SECD machine の続き。 LispMe の VM は SECD Machine をちょっと拡張したものになっている。特に理解しておきたいのが、シンプルに書けるという continuation(6.7,7.5) と、tail call(6.6, 7.4)。 まず末尾呼び出しの最適化…

こんにちは github

作ってみた。 http://github.com/cranebird/prj.secd うーん、なんか Loading Commit data... となったままなんだけどいいのだろうか。

LispMe

vm.c の PTR exec(void) を一部抜粋。cons とかはマクロ。 case LDC: /*------------------------------------------------------------*/ /* s e (LDC x.c) d --> (x.s) e c d */ /*------------------------------------------------------------*/ S = co…

twitter こんにちは

よくわからないけどtwitterを開始してみた。@quasicrane http://twitter.com/quasicrane/ Twitterrific.app http://www.kototone.jp/com/how_to_use_twittering-mode.html emacs クライアント

github こんにちは

github にリポジトリを作ろう。続く。

fink から macports へ

いまさらながら macports へ移行中。

secd 資料追加

しつこいがSECD で再帰関数を実行する例が欲しくて探していたら、COMPUT325: SECD Virtual Machine という資料を見つけた。 http://web.cs.ualberta.ca/~greiner/C-325/2004/325/2004/Slides/HandoutPDF/ 資料自体はいいのだけど、p35,p36 にある fact の例…

「採用面接ゲリラガイド」スーパースターと LispMe

http://local.joelonsoftware.com/wiki/採用面接ゲリラガイド%28version_3.0%29 「才能豊かなスーパースターがいて、彼らは週末に趣味でNintendo DS用のLispコンパイラをアセンブラで書いていたりする。」http://local.joelonsoftware.com/wiki/ゲリラ的雇用…

secd Machine DUM, RAP

再帰的な定義のためのインストラクション,DUM, RAP を一応実装した。まだ怪しいところがある。 RAP は set-car! を使って環境を書き換える。結果として循環構造を持ったリストができる。(※この時点で間違っている可能性あり。例がほとんどなく自信無し) と…

循環リスト

以前も似たようなことではまったのでメモ。 循環リストは以下のように破壊的操作によって作成できる。一般的に循環リストを gauche で素朴に印字してはならない。例えば : gosh> (define x (cons 1 2)) gosh> (set-car! x x) gosh> x #0=(#0# . 2) gosh> (pr…