その他の変更予定

そこで今回は、比較演算すべてが可能にしたら良いのではないかと思っている。voidが一番小さく、その次がnull、その次に数値、その次が文字という感じ。

http://d.hatena.ne.jp/nagaShima/20090122/p1

それいいなぁ。頂いちゃおう。kuzha.runtime.Operator#gt,lt,gte,lte の4箇所を修正すれば大丈夫かな。変更後の gt 関数もメモしておこう。

public static KuzhaObject gt(KuzhaObject left, KuzhaObject right) {
    if (left instanceof KzNumber && right instanceof KzNumber)
        return OP_GT.calc((KzNumber)left, (KzNumber)right);
    if (left == null)
        return false;
    return getSlotValue(left, ">").call(left, right);
}

null.`>` の処理は、KzNull の Traits にメソッドとして入れておけば良いかな。
ついでに、Operator の修正点を見つけたから、これも直しておこう。

-return KzFunction.newPartialApplication(val, Converter.toKuzhaObject(name));
+return KzFunction.newPartialApplication(val, KzString.valueOf(name));

forward 用の部分適用関数を作る部分だけど、String name を KzString に変換する部分は Converter 使わないほうが遥かに高速だね。