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

キーワード引数

というより、それ以上の機能。 text = "あいうえお"; print = ^do puts: text; end; print; // -> あいうえお print|text = "かきくけこ"; // -> かきくけこ

Hello world!

なんとこれで Hello world! print = ^do puts: this; end; print@"Hello world!";

素数の列挙

とりあえずリストとかぜんぜん整備してないんで純朴に fun is_prime:num do if 2 < num then for m in [2..num-1] if num % m == 0 then return false; return true; end for num in [2..100] if (is_prime:num) then put: num + ", "; puts;実行結果 2, 3, …

脅威の Double Inheritance

こんなことができます。super と parent の2個のスロットがありまして、スロット検索は this, super, parent の順に行われます。 neko = {}; puts: neko.name; // -> void this.name = "みけ"; puts: neko.name; // -> みけ neko.parent = { name = "こま";…

repeat 文を

入れようかな。入れなくても良いかな? repeat 10 do puts: "Hello world"; endそれとも int オブジェクトのメソッドで入れようかな。ruby みたいに。 10 repeat: ^do puts: "Hello world"; end;

の with ステートメント

を考えるその2。TJS のリファレンスを読んでみた。 「ステートメントまたはブロック」内で、左側が省略された . (ドット)演算子が使用された場合、その . (ドット)演算子が参照するオブジェクトは、with ステートメントの expression で指定したオブジェク…

の with ステートメント

をどうするか考えるために Ecma-262 を読んでみた。 The production WithStatement : with ( Expression ) Statement is evaluated as follows: 1. Evaluate Expression. 2. Call GetValue(Result(1)). 3. Call ToObject(Result(2)). 4. Add Result(3) to th…

try-catch-finally

プログラム try throw "exception 01"; catch $ex puts: "catch: " + $ex; try throw "exception 02"; catch $ex puts: "catch: " + $ex; finally puts: "exec finally 02"; try throw "exception 03"; finally puts: "exec finally 03"; 実行結果 catch: ex…

kuzha -> java コンパイラ

こういう kuzha のプログラムが、 for i in [1..9] do puts: i; endこういう java のクラスファイルを吐き出す。 KuzhaObject curSelf; Iterator iter = Operation.getIterator(Operation.newRangeList(C_0, C_1, C_0)); while (iter.hasNext()) { locals.se…

代入文のあれこれ

その1 x = 1; x = y = 1;を accept するかどうか悩み中。"=" の右辺に "=" が再び出現することを認めるか否か。 foo hoge = 1; foo hoge = bar fuga = 1;こっちはオブジェクトのスロットへの代入。こっちも悩み中。 その2 foo bar hoge = 1; foo bar, hoge…

Java と JavaScript の \uXXXX

ちょっとした雑学を。 BMPしか扱えない\uXXXXは、JavaScriptがJavaから受け継いだ Bad Legacy だ。 404 Blog Not Found:javascript - \uXXXXを使わない理由 のあたりを見て、ふと思い出したネタでも1つ。 java の場合 \u0070\u0075\u0062\u006C\u0069\u0063…

面白そうなのを発見 http://www.gentee.com/

http://www.quag.geek.nz/io/getting-started/ えーw なんでリンク張られてんのー。このコードって今でも動くのかなw

asm でバイトコード生成

とりあえずテスト String className = "kuzha.code.jvm.JvmCodeBlock"; ClassWriter cv = new ClassWriter(ClassWriter.COMPUTE_MAXS); MethodVisitor mv; cv.visit(V1_5, ACC_PUBLIC, className.replace('.', '/'), null, "kuzha/code/CodeBlock", new Stri…

twitter 始めました

どぞ http://twitter.com/skn9x

java-ja

に参加してみた。よろしくお願いします。

バイトコードコンパイラ

たぶん asm を使うと思う。なんか横着した気分だけど仕方が無いw http://forge.objectweb.org/projects/asm

Java のバイトコードコンパイラ

を作ってるわけだけど……これ、死ぬほど大変じゃね? pnuts とか jython とか jruby とか、ひたすらパワーがあるなぁ、とコンパイル周りのコード見るたびに思います。 早く JLR プロジェクトに共通コンパイラ上がらないかなぁ……。

perl の my, local, our の話

local と my - IT戦記 とか 404 Blog Not Found:perl - myとourとscopeと とか my と local のサンプル - IT戦記 のあたりからの話です。 $\ = "\n"; sub test() { print "1: $var"; } $var = 'main'; { package MY; { my $var = "my"; # my は、このスコー…

狼と香辛料

が全裸過ぎて困るヽ(≧∀≦)ノ

が vector の新着レビューに載りました

http://www.vector.co.jp/magazine/softnews/080110/n0801102.html うあー。こうしてレビューを実際に見ると、なんか感慨深いなぁ。他人様が書いた自分のソフトのレビューって、実は見るの初めてだったりします。とても幸せです。vector の担当記者のかたに…

間違えることは恥ずかしいことじゃない。 ……訂正。間違えることは悪いことじゃない。ちょっと恥ずかしいけどそれで終わりだ。

Firefox のメモリ使用量を減らすツール……を作った

Firefoxのメモリ消費量を猛烈に減らすツール"Firefox Ultimate Optimizer" - あまたの何かしら。 いや、見たら簡単に作れそうだなーって思って作ったら、本当に1時間以内にできちゃった。 パフォーマンス計測やったら、ソース付きで公開しよう。ツール本体…

Java仮想マシン仕様 (The Java series)作者: ティムリンドホルム,フランクイェリン,Tim Lindholm,Frank Yellin,村上雅章出版社/メーカー: ピアソンエデュケーション発売日: 2001/05メディア: 単行本購入: 5人 クリック: 98回この商品を含むブログ (35件) を…

Re:DLR ASTを使っただけの言語と、DLRな言語は違うんじゃないか、と思ったしだいである - ラシウラ

DLR

たった今、言及されていたことに気付いた orz 遅すぎだろ...orz DLR ASTを使っただけの言語と、DLRな言語は違うんじゃないか、と思ったしだいである ……明記するの忘れてた (゚д゚) かも。 「DLR で凝ったことするときには ActionBinder 定義する必要があるけど…

の Semantics

って、どうしようかなーとは迷ってる。いちおう肩書きだけは理論屋だから一回くらいはフォーマルに書き下したいとは思うけど、さてどうしようか。 kuzha のコードから、どんな JavaVM のコードセットが生成されるかだけ書けばいいかな。丸投げパターンだけど…

Hybrid Type Checking

http://obfusco.com/tmp/popl06-hybrid.pdf Dynamic Checking と (Static)Type Checking の中間くらいって最初に図に書いてあるけど、Soft Typing とどう違うんだろう。参考文献に Fagan の論文があるから、たぶん発展系なんだとは思うが……。

FizzBuzz その2

for num in [1..100] do if num mod 3 == 0 and num mod 5 == 0 then puts: "FizzBuzz"; else if num mod 3 == 0 then puts: "Fizz"; else if num mod 5 == 0 then puts: "Buzz"; else puts: num; endfor 文が動いたー

FizzBuzz その1

kuzha プログラム num = 1; while num <= 100 do if num mod 3 == 0 and num mod 5 == 0 then puts: "FizzBuzz"; else if num mod 3 == 0 then puts: "Fizz"; else if num mod 5 == 0 then puts: "Buzz"; else puts: num; num = num + 1; end実行結果 1 2 Fi…

キーワード引数の実装は完了 けど関数呼び出しのたびに KeyParams オブジェクト生成してるんじゃオーバーヘッド大きそうだな、と思ったり if, for, while とかのコード列生成のためにドラゴンブック再読中