タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

1._reflexiveとjavaScriptとLispに関するmindのブックマーク (3)

  • 「再帰→ループ」の変換が大変だった件 - IT戦記

    まず、ループは再帰で表現できる ループというのはすべて再帰呼び出しで表現できる。 たとえば、コレは var array = [1, 2, 3]; for (var i = 0; i < array.length; i ++) alert(array[i]); こんな感じになる (function f(array, i) { if (i < array.length) { alert(array[i]); return f(array, i+1); } })([1, 2, 3], 0); もし、 array がこの目的以外に使われないならコッチのがキレイかも (function f(array) { alert(array.shift()); if (array.length) return f(array); })([1, 2, 3]); ということは、再帰はループで表現できるはず という

    「再帰→ループ」の変換が大変だった件 - IT戦記
    mind
    mind 2008/01/11
    ――継続渡しを手書き実装…!? ――BASICで書いたことが…ω。でもstackが外部から視えてしまうのが嫌だった。 // ――末尾再帰は簡単に消せるけど、では残った無限ループの中に自分を呼び出すλを置いてみ…; //
  • 第2回 JavaScriptの関数をマスターしよう

    関数内部で利用できる特殊なオブジェクト - argumentsオブジェクト - JavaScriptの関数を利用する場合に、もう1つ忘れてはならないトピックとして、argumentsオブジェクトがある。argumentsオブジェクトは、関数の内部でのみ利用可能なオブジェクトで、関数に渡された引数値を管理することができる。 ■JavaScriptは引数をチェックしない argumentsオブジェクトは、具体的にどのような局面で利用すればよいのか ―― それを解説する前に、まずは以下のコードをご覧いただきたい。 function display(msg) { window.alert(msg); } display();              // undefined [A] display('山田');        // 「山田」と表示 [B] display('山田', '掛谷');

    第2回 JavaScriptの関数をマスターしよう
    mind
    mind 2007/12/01
    argumentsオブジェクト …可変個引数も。…名前付き/名前なし引数の双方が「すべて」含まれている //arguments.callee(x, y, …) ――で、現在実行中の 関数f(x,y,…)を呼出せる。esp. lambda式。
  • 自己出力プログラムと自己参照プログラム

    自分自身を出力するプログラムを書いてみる事にする。 あたりまえだけど、プログラム全体を文字列とかリストにして、 プログラム中に埋め込むわけにはいかない。 でも全体は無理でも、 プログラム内の一部分だけなら文字列やリストにして利用することはできる。 そこで、プログラムを、 Aパート ... プログラムの一部分を、単に文字列とかリストにしたもの。 Bパート ... プログラム全体を出力する部分。 の2つに分けて考える。 Aパートは、Bパート(または、その一部分)をリテラルとして保持して、 Bパートがそれを利用して全体を出力するという役割分担になる。 Schemeの場合 簡単のために Schemeで考える(Lispでも動く)。 プログラムの構成は、大まかには、 (<Bパート> <Aパート>) みたいになる。 とりあえず、AパートはBパートそのものをリストにしていると考える。 するとAパート

    mind
    mind 2007/03/25
    「問題と答えが全く同じになるようなクイズって何だろう」 ―― // ――self= function() { return arguments.callee;} ――selfとself()が同じだ。。。 //――cf. Y combinator
  • 1