タグ

ブックマーク / propella.hatenablog.com (3)

  • オープンクラスとはダイナミックスコープだという話。 - 言語ゲーム

    http://blog.livedoor.jp/dankogai/archives/51507869.html を読んで、これは書かなきゃ!と思ったので、まだ考え途中だけどメモします。私のネームスペース理論で言うと、オープンクラスとはダイナミックスコープなのです。 まずオープンクラスとは何かざっと復習。Java 等の静的なオブジェクト指向言語では、クラスを定義する時に全部のメソッドを書く必要があるけど、Smalltalk や Ruby のクラスでは、あとからメソッドを追加したり書き換える事が出来ます。こういうのをオープンクラスと言います。オープンクラスの凄い所は、メソッドを変更する前にもともとあったプログラムの振る舞いまで変わってしまうと言う事です!これは柔軟であると同時に大変危険な諸刃の剣です。 次にダイナミックスコープとは何かをざっと復習。変数が使われている場所ではなく、処理の流れを元

    オープンクラスとはダイナミックスコープだという話。 - 言語ゲーム
  • SOE 15.3 章 The Implementation - 言語ゲーム

    いよいよ反応プログラミングの核心に入って行きます。前回までの復習。 id:propella:20070304:p1 SOE 15 章 A Module of Reactive Animations id:propella:20070305:p1 SOE 15.2 章 Implementing FAL id:propella:20070306:p1 SOE 14 章ストリーム プログラムは振る舞い (Behavior) を組み合わせて作る。 Behavior は動作 (UserAction) と時間 (Time) の組を受け取りある値を返す関数 Behavior の引数も返り値もストリーム Behavior に イベント(Event) を設定した物は Behavior である。 Event は Behavior の返り値が Maybe 型の物。 Behavior と Event を組み合わせ

    SOE 15.3 章 The Implementation - 言語ゲーム
  • Smalltalk のクラスと Haskell の型クラスを比較します。 - 言語ゲーム

    私は Haskell の一番すごい所は型クラスだと思っているんですが、ここ数日それを言葉にしようとずっと悩んでいました。結局、もう一つの好きな言語なSmalltalk と比較して型クラスがどういう物か書いてみる事にしました。 型クラスという名前について Smalltalk に染まってしまった人にとって、「型クラス」というのは最悪なネーミングです。あまりにも Smalltalk のクラスと違いすぎるからです。機能的には traits や Java のインタフェースから継承を除いた物と思ったら良いです。また、「継承」や「インスタンス」など、Smalltalk と Haskell 両方で使われる言葉はことごとく別ものと思った方が良いです。 型クラスの位置づけ Smalltalk をはじめとするオブジェクト指向言語の機能をそのまま Haskell で実現しようとすると最初はすごく戸惑います。日

    Smalltalk のクラスと Haskell の型クラスを比較します。 - 言語ゲーム
  • 1