タグ

2008年2月5日のブックマーク (5件)

  • JavaScript で引数束縛: Days on the Moon

    引数束縛 (カリー化) の話。まずは「JavaScriptでカリー化」(檜山正幸のキマイラ飼育記)。タイトルを見てどこかで聞いたような話だなと思ったら「関数の変形」(Effecttive JavaScript - Dynamic Scripting) だった。だが、前者は文字列に戻してから評価というのが力技っぽくて個人的に好きでないし、後者は汎用的過ぎていささかわかりにくい。そこで今回は先頭の引数から束縛していくというのに的を絞ってみたいと思う。 まず第 1 引数のみを束縛する場合。Function#apply を使えば引数を配列として渡せるので、束縛された値と後から渡された引数とを連結してやればいいのではないか。 function curry(func) { return function (first) { return function () { var args = Array.p

    mind
    mind 2008/02/05
    引数束縛 (カリー化) の話。 ――bind? 部分適用? //
  • JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptでカリー化。ありがち、つうか実際にあるでしょうね。小ネタと思ってやりはじめたら、意外と混乱した。一種のメタプログラミングのはずだが、実際にはテキスト加工処理。 内容: カリー化ってなに? カリー化を行う関数を作る:準備 カリー化を行う関数を作る:テキストのパッチワーク カリー化を行う関数を作る:組み立て ●カリー化ってなに? 2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること -- ゴチャゴチャ説明するより実例実例: functio sum(x, y) { return x + y; } このsumのカリー化の例: function curried_sum(x) { return function (y) {return sum(x, y);} } curreid_sum関数は1引数で、戻り値として関数

    JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mind
    mind 2008/02/05
    2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること ―― // ―― //
  • SELF: The Power of Simplicity(訳)

    戻る SELF: The Power of Simplicity DAVID UNGAR, RANDALL B. SMITH 原文 概要 SELFは、探求プログラミングのための オブジェクト指向言語で、 プロトタイプ、スロット、振る舞いという 少数の単純で具体的な考えに基づいている。 プロトタイプは継承とインスタンス化を一つにし、 多くのオブジェクト指向言語よりも単純で柔軟な枠組みを提供する。 スロットは、変数と手続きを単一の構造に一体化させる。 これにより継承階層を使い、 従来の言語における字句スコープ機能を採り入れられる。 そして最後に、SELFは状態と振る舞いを区別しないので、 普通のオブジェクトと手続きとクロージャとの間の相違が小さくなる。 SELFの単純さと表現力は、 オブジェクト指向計算に新たな洞察を与える。 To thine own self be true.(自己に忠実であ

    mind
    mind 2008/02/05
    ――プロトタイプ型OOP //3 状態と振る舞いを混ぜ合わせる ―― //クロージャとメソッド ―― // ―― //
  • Effective JavaScript - Dynamic Scripting

    Effective JavaScript A Few Ways to Improve Your JavaScript Effective JavaScript は JScript 、JavaScript 、ECMAScript による効果的なスクリプトの構築方法を解説するものです 目次 0 序章 はじめに 表記法 1 関数 引数 - デフォルト引数、正当性チェック、残余引数、オーバーロード 関数とオブジェクト - 無名関数、関数オブジェクト、関数アダプタ クロージャ - 無名関数を返す関数 関数の変形 - 関数の合成、引数の束縛、引数の加工 2 例外 3 オブジェクト プロパティとメソッド - 基的な話 コンストラクタとプロトタイプ - コンストラクタ、メソッドの定義、プロトタイプによる継承 アクセスレベル - 非公開メンバ、限定公開メンバ実現のアプローチ © 1999-2004 exe

  • アルゴリズム百選 - 値と参照 : 404 Blog Not Found

    2007年12月06日15:30 カテゴリアルゴリズム百選 アルゴリズム百選 - 値と参照 今回は値と参照について取り上げます。 突然ですが問題です。以下のJavaScriptプログラムを実行すると、何と表示されるでしょうか? プログラム: var a = [0, 1, 2, 3]; var b = a; b[0] = 'zero'; p(a); 出力: エラー: 答えは、"zero, 1, 2, 3"です。しかし、なぜaを直接変更していないのにaの中身が変わっているのでしょうか? ここで、二行目に注目してみます。ここでは変数bに変数aを代入しています。変数aは配列です。ここだけ見ると、内部で起こっているのは以下のようなことに見えなくもありません。 array b -+ array b -+ | 0 | | 0 | | 1 | = | 1 | | 2 | | 2 | | 3 | | 3 |

    アルゴリズム百選 - 値と参照 : 404 Blog Not Found
    mind
    mind 2008/02/05
    ――listの 非破壊的結合 の場合はどれか(大きそうなもの)をcopyせずに済む。 //――逆に配列, リスト, etcetcの概念的区別を、様々な操作時の副作用たちによって定義できる。