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

Musical Batonだそうです

まさか僕に回ってくる日が来るとは思いませんでした。次の人に渡す予定はありませんが、先輩のid:ytqwertyさんからのバトンです。音楽ってあまり聞かないしCDなんて滅多に買わないんですよ。基本的に音楽は心の中で再生されます。最近はMP3プレーヤ持ってる…

ちょこちょこと必要そうな関数を書き加えつつリスト遊び。define-syntaxは作れていないのだけど、define-macroっていうのを作ったからScheme自身で基本的な関数や構文をかなり作ることができる。最低限必要なものを考えてたんだけど、あっちがあったらこっち…

evalとかloadとかdefine-macroとかリスト処理周りとかの関数を作った。 でも、まだまだSchemeとしてはおかしなところでいっぱい。defineは()を返すし、lambdaは式をひとつしか持てない。(lambda () (.....) (.....))ってなことが出来ない。lambdaの中でdefin…

ドットリスト

S式の解析器をFlexとBisonを使わずにちょっと作ってみたけど、やっぱり手間がかかる。最所はプッシュダウンオートマトンみたいなの作ればいいのかと書き始めてみたけどシンプルなS式の解析に状態用のスタックなんか無くてもいいんじゃないかと、スタックなし…

人手で

FlexとBison使ってると細々したところの変更が面倒。肝心な部分を作るのは楽なのに。とりあえず自分で解析器作ってみる。

最近、ゲームばかりやってる。。。

解析の途中で解析したり

大まかにマクロの部分を作れそうになって、ちょっと他の部分を変えようと思ったんだけど。 FlexやBisonをシンプルに使ってると大域変数を使ってくれるおかげで解析の途中でさらに解析器を呼び出したりすることができない。オプションとかで切り替えられるみ…

マクロつくろ

うーん。久しぶりに手をつけるねぇ。マクロは入力をどれかのパターンにマッチさせてテンプレートに当てはめると。どのパターンにマッチするか探すだけならそれほど難しく無さそうだけどテンプレートに当てはめる部分が難しそう。パターンを繰り返したりする"…

やっと終わりました。

やっとスッキリ

効率悪いもの、まあまあスッキリした評価器ができた。やっと他の構文に取り掛かれる。とりあえずdefine,if,=を作った。これが無いとあんまりプログラムって感じがしない。トップレベルじゃないdefineの挙動はかなり怪しい。set!の代用になることをちょっぴり…

SchemeでScheme

ふと、Schemeで書かれたSchemeの処理系ってどんなのだろうと探してた。探しただけで見てないけどSICPにも載ってるらしい。そのうち読まなくては。

怪しい継続

悩みつつ怪しい作りの継続ができたように見える。評価中の関数を複数まとめて脱出したりできた。でも、全くスッキリしない作りだ。もう少し悩もう。評価の細かい手順が悪いせいで全体が崩れてるように見える。もう少し評価中の状態を細かく分けて考えるべき…

多値

無くても良さそうな気がしてたけど、せっかくだから作ろうとする。いい作り方が浮かばないけど。

ゆっくり再開

とりあえず末尾再帰は出来るようになった・・・と思う。 関数呼び出しをした所に目印を入れて関数を呼び出すたびに末尾かどうかチェック。効率悪そう。関数を作った時にどこが末尾式か調べるようにした方がいいのかな?その辺はマクロなんかを作れるようにな…

家庭の事情って面倒だ。

評価したりしなかったり

Schemeの式って同じような位置にあるのに同じタイミングで評価したりしなかったりする。 たとえば(if test then else)って感じに全部同じようにならんでるけどtestを評価した後thenかelseを評価しないといけない。他にも(define v e)なんかもeは評価するけど…

末尾再帰

今のところインタプリタだから一応作れそうなんだけど効率悪そう。もっとお手軽に末尾式であることを判定できないのかねぇ。今の予定ではとりあえず関数を呼び出すたびに関数の末尾だったかどうかを判定することになってる… 形 今、式の評価をスタック使った…

もう少し分かりやすく作れないだろうか

再帰に頼っていたところを再帰無しにするのって難しい。さて、lambdaも書き換えないといけない。そして、適当に完了。 継続をオブジェクトにするところまではできたと思う。ただ、call/ccをどう作ろうか悩んでる。call/ccが関数なら関数は好きなタイミングで…

お正月だね。