2008-01-29から1日間の記事一覧

仮引数と引数の数が合わないときには

そのまま呼び出されちゃうようにしてみた ku> add = ^x y(x + y); > -> kuzha.object.KuFunction@9f2a0b ku> add: "abc" "def"; > -> abcdef ku> add: "abc"; > -> abcvoid ku> add; > kuzha.IllegalOperationException: void + void を計算できません。こう…

関数の引数

は、やっぱり C みたいに func(arg1, arg2);みたいにしたほうが良いのかなあ。 今の文法だと func: arg1 arg2;だけど、はてさて……。

変数名を動的に生成する方法

io よろしく name = "hoge"; setSlot:name 123;とする予定。 キーワード引数についての変数名は name = "hoge"; func call: self args { setSlot(name, 456); };で対処できるかな? けど func が引数無し関数だと func の時点で評価されちゃうな。 name = "h…

function definication

fun add: x y do return x + y; endで定義される関数定義の構文を消した。 今度からは add = fun x y do return x + y; end;みたいな匿名関数へ一本化しました。 ちなみに add = fun x y (x + y);みたいに、() の中に式を書く構文も追加してみました。

通算ダウンロード数

が1400個/月を超えていました。みなさまありがとうございます。 1.0 以前のバージョンはダウンロード数が100個/年程度だったので、vector の新着レビューの効果が物凄いということを改めて実感いたしました。

kuzha の変数スコープ

一応レキシカルスコープですが繋ぎ変えは parent から可能だったりします。 ku> a = "lexical"; > bar = ^(puts: a); > foo = ^do > a = "dynamic"; > bar; > end; > foo; > lexical

kuzha で Y コンビネータその2

とりあえず匿名メッセージを送ると関数が呼び出されるようにしてみた。 ku> sample = ^(puts: "Hello!"); > kuzha.object.KuFunction@929206 ku> &sample; > kuzha.object.KuFunction@929206 ku> &sample; > Hello!ので、さっきのYコンビネータを書き換えて…

kuzha で Y コンビネータ

元ネタは Y コンビネータって何? - IT戦記 と Y Combinator から、kuzha で Y Combinator を作ってみた。 ku> Y = fun f do > temp = fun proc( > f: fun arg do > temp = proc: &proc; > return temp: arg; > end > ); > return temp: fun proc( > f: fun …