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

haskell 入門

うーん、やっぱり haskell はまだ全く勉強不足。コンパイルを通すだけできつい。incremental に何か作れる気がまるでしないな。最初から定義を書き下せるくらいでないと。 以下、全く自信のない secd machine in haskell の途中。GHC 6.6 環境。 *Main> secd…

secd machine 分解

SECD マシンの実行過程を分解して見る。 gosh> (run '((lambda (x) (+ x 3)) 4)) s e (NIL LDC 4 CONS LDF (LDC 3 LD (1 . 1) + RTN) AP . c) dc の先頭は NIL。 NIL は NIL をスタックs に積む。 (NIL . s) e (LDC 4 CONS LDF (LDC 3 LD (1 . 1) + RTN) AP …

LLTV 資料

http://ll.jus.or.jp/2009/slides/ 後で読む。特に CiSE 。JiSE(Java in S expression) とかどこかにないかしら。 Clojure はまた微妙に違うしなぁ。 (そういえばもう随分前に Clojure 本を PDF(beta bookとかいうやつ)で買ったけどほとんど読めてない‥)

Shibuya.lisp

http://shibuya.lisp-users.org/2009/08/31/sltt-4-1/ 11月7日。はやくも第4回。いい勢いだ。11月にどこで何の仕事をしているか、すら予測できないていたらくだが、参加できるといいなぁ。

Architecture of LISP Machines

http://www.cs.utah.edu/~mflatt/past-courses/cs6510/public_html/lispm.pdf あれ、VM を調べていたはずなのに何故か Lisp Machine に辿り着いた?

secd machine compiler

まだテスト不足だけど secd machine 用コンパイラを書いた。一応以下のような再帰関数も書けて、ちゃんと VM で動く。いまさらだけど、グローバルな束縛が無いにも関わらず、再帰計算(のような計算。正確な名前は知らない)ができるのは面白い。 gosh> (print…

secd machine と util.match

gauche の util.match を使えばもっとずっと短く明快に、定義そのままに secd machine を書けることに今さら気づいた。やはりオブジェクトじゃなくリストで十分だった。うーん、パターンマッチは本当に強力だ。全体を見直したところ、完全に資料(http://www.…

secd machine(2)

ちょこっと前進。if のサポート。そして初めて secd の d, dump スタックを使った。 元の secd だと、必ず s とか e とかが末尾残っているのだけど、わたしのは空リスト。そのままだと secd の d は結局空のままで分かり難いので、 if の結果に足し算をする…

VM メモ

Perl VM by Perl http://search.cpan.org/~gfuji/Acme-Perl-VM-0.0.5/lib/Acme/Perl/VM/JA.pod これはすごい。Perl による Perl VM の実装。Shibuya.pmか。 PyPy http://morepypy.blogspot.com/ どうも LLVM のバックエンドは止まってしまったらしい。"Killi…

secd machine

分かりやすそうな http://www.cs.ualberta.ca/~you/courses/325/Mynotes/Fun/SECD-slides.html を元に SECD マシーンを作って見ている途中。ほとんど定義そのままの単純な構造。良くわかっていないが、まだ実装していない LDF あたりが楽しみ。 OP 説明 目的…

toy VM

Gauche の命令列の一部だけが動くおもちゃの vm を作ってスタックマシンを理解しよう。目標は、加減乗除と lambdaと関数適用が動く vm を作ること。 半年くらいまえに浅くやっていたものを、3imp で少し成長したのでもう一歩進める。 準備 最適化があるとわ…

memo

ふむ、いちおうこんなのも動くらしい。自分で書いていても良くわからんけど。 gosh> (eval3 '((lambda (o e n) (o o e n)) (lambda (o e x) (if (= x 0) "even" (e o e (+ x (- 1))))) (lambda (o e x) (if (= x 0) "odd" (o o e (+ x (- 1))))) 10)) (frame…

学習パターン

http://learningpatterns.sfc.keio.ac.jp/index.html reddit 経由。これはなかなか面白い。ちゃんと読んでみよう。

env, frame

もうちょっとちゃんと理解しよう。どこに何が積まれているんだ? extend を良く読む。 フレームと環境はオブジェクト(define-class で定義)にしてみるか。

http://blog.kzfmix.com/entry/1250594366 経由。 届いたので後で読む。斜め読みした感じでは良さげ。 というか仕事がなくなるまえにちゃんと勉強して、生き延びる。

Scheme コンパイラの勉強(49) - lambda, closure, frame

コンパイルの過程。以下3impに書いていること、そのまま。 lambda (lambda vars body) は (close vars cbody) へコンパイルされる。body をコンパイルするときは next を '(return) にしておく。 (return) インストラクションは、スタックから最初のフレーム…

fastcc

LLVM の呼び出し規約 fastcc とスタックフレームとで頭がぐるぐる回っている。やりたいこと。LLVM でネイティブコンパイラを書くこと。 3imp のヒープベースのコンパイラ+VM 。LLVM で自分でヒープを管理するって意味がある行為だろうか。

Scheme コンパイラの勉強(48)

再度整理。 rec -> gauche では定義しなくてよい。SRFI-31 として定義済み。 recur -> named let を使えば不要。 record-case -> match で書き換えできるので不要。 この 3imp 3.4 の VM + Compiler で、まずは普通の四則演算ができるようにしたい。さてどう…

[3imp] record-case

う、ちゃんとテストするとどうも間違っているらしい。ステップバイステップ、といいたいが仕事いかなきゃ。

Scheme コンパイラの勉強(47)

あまり進んでいないがメモ。VM のレジスタの役割を再度確認中。 VM にわたる引数を全て出力して一つ一つ追って行く。 うーん、コンパイラとVMとどちらがどこまで正しいのかよくわからないなぁ。もっと理解できる最小の系にしないと駄目だ。

カメラ

カメラをつなぎたい。 http://www15.atwiki.jp/arduino/pages/45.html http://kousaku-kousaku.blogspot.com/2008/11/arduinos9706.html http://eleshop.jp/shop/g/g402035/

Arduino 0017 alpha

メモ。正確には http://arduino.cc/en/Main/ReleaseNotes を見ること。 構成が 0016 から変わっている(Mac OS X 版) 。(Arduino now comes as an app file (in a dmg) on the Mac.) Arduino.app とドライバのみが配布物。 0017 Arduino.app/Contents/Resourc…

シリアル通信 cat/echo

簡単なところから確認しよう。arduino 側は昨日と同じ。まず端末を開いて、 cat /dev/cu.usbserial-A6008jmR 最初は何も表示されない。別の端末を開いて、 echo 'h' > /dev/cu.usbserial-A6008jmR 文字 'h' を書き込んだら、ちゃんと LED が点灯した。そして…

シリアル通信

シリアル通信ができるってことは好きな言語で Arduino をコントロールできるってことなので試す。以下 Arduino 側。シリアル通信で 'h' で LED オン、'l' で LED オフ。 // Serial - Gauche - Test - Arduino #define LED 13 int inByte; void setup() { pin…

シリアル通信再び

http://nekosan0.bake-neko.net/structure_usart.html http://blog.livedoor.jp/spkv/archives/249613.html gainer + gauche

コマンドライン

http://jp.makezine.com/blog/2009/06/arduino_xcode_template.html?CMP=OTC-T10K41815721 Arduino IDE のかわりに Xcode を使う http://www.arduino.cc/en/Hacking/CommandLine "Arduino from the Command Line" こちらは Makefile Xcode をそもそも全く使…

メモ

AVR のための LLVM バックエンド。 http://wiki.github.com/atduskgreg/llvm-avr まだかなり初期の状態に見えるので注意。わたし自身まだ試してもいない。でも、これで LLVM 用に Scheme コンパイラを書けば、 Arduino で作った自作ハードウェアもコントロー…

Tilt Sensor

動いた‥かも。ひゃっほー。

物理エンジン

Proce55ing で動く物理エンジンを探し中。 http://www.cs.princeton.edu/~traer/physics/

めったに使われない常套句 (3)

「コンパイラを作ったんだって?おめでとう!じゃあ次は、そのコンパイラのためのハードウェアを作る番だね!」