2006-05-01から1ヶ月間の記事一覧

Concurrent Clean : CleanJ : モジュール名

ディスクリプタ名からモジュール名を抽出しなければいけないのですが、それをどうするかを検討。 エクスポートしたラベルは、"e_モジュール名_{l,n,s}関数名"という形式をしているので、その規則性から判断することが一つ。しかし、これだと、モジュール名に…

SICP : 第4章読了

第4章は、インタプリタを自作して、言語レベルでの抽象化による表現力の差異について考察しました。 この章では、4種類のインタプリタを自作します。 schemeインタプリタ(逐次翻訳 vs. JIT) 遅延評価インタプリタ(逐次翻訳版。メモ化あり vs メモ化なし…

紙の上で設計すること

について、よく批判されているような気がしますが、 何度もコードを書き直して、こねくり回すよりも、頭の中(紙の上を使ってもいい)で整理整頓しつくした上で、一気に書き上げることができれば、そちらの方が圧倒的に速く書けるはず。で、そういうことがで…

Concurrent Clean : ABCマシン(17) : .desc, .expdesc

全ての関数に、.desc, .expdescが記述されていればいいんだけど、そういうわけでもない。少なくとも、Start関数にはdescは記述されない。Start関数だけかな? - もうちょっとよく観察してみたら、1つの関数は、次のような構成をしているみたい。 exportされ…

Concurrent Clean : 入れ子構造

入れ子構造の処理を、入れ子ではないように書き下す方法を考え中。 つまり、 <html> <head> <title>Concurrent Clean</title> </head> <body> <h1>Concurrent Clean</h1> <form> <input type="button" value="ok"> </form> </body>みたいなものを、下のような感じに書き下して、 printHTML :: *File -> *File printHTML f = f --> html head title : "Concurrent Cle</html>…

今度はwikipediaにつながらないですけど・・・

いい加減、腹が立ってくるな。 プロバイダを変更しようか。

就職(転職)して、初めの内にやっておくべきこと。

時節柄、そんなネタも混ぜてみようかと。就職した企業(あるいは配属された部署)について、早いうちに理解しておくことは、会社生活を有利に(楽しく)すごす上でとても大切なことです。ある意味、社会人としてのマナーを身に付けることや、業務内容を覚え…

タブのスペース化はタブ幅よりも重要である

http://blog.livedoor.jp/dankogai/archives/50475459.htmlを読んで、なんか思ったのだけれど、何かわからなくてもやもやしていたのを、今思い出した。 インデントにタブを使っていやがると、私のコーディングスタイルでは、次のようなコードが滅茶苦茶にな…

構文解析

構文解析を書こうとすると、いつも、データ構造が汚くなるような気がして凹む。 字句解析を書いているときはすいすいなのに、構文解析を書き始めて、凹み始めて、遅筆になる・・・

末尾再帰の最適化の弊害

典型的な弊害は、例外のスタックトレースを取ったときに、字面上の呼び出し経路を反映しないこと。 つまり、 int main () { try{ return f (); }catch (Exception e){ e.printStackTrace (); } } int f () throws Exception { return g ();} int g () throws…

Concurrent Clean : CleanJ

ABCコードからJVMへの変換ですが、ひとまず、ABCコードに対応するJavaコードを(大量のnot implementedを出しつつ)記述することが完了しました。 簡単なチェックをした後に、ABCコードからJavaコードへのトランスレータ(CleanJと呼ぶことにします)の作成…