タグ

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

  • ActionScript の API に動的にアクセスする方法 - 言語ゲーム

    前回、http://d.hatena.ne.jp/propella/20090805/p1 の中で package と名前空間の関係についてさらりと書きました。名前空間を使うと import しなくてもライブラリを呼べます。その時ご紹介したコードは次のような物です。 namespace ns = "flash.text"; var field = new ns::TextField();このようなコードは、例えば ActionScript でメタサーギュラーなインタプリタを作りたい場合必須だと思います。でも色々やってみると問題がありました。この namespace 構文では左辺にリテラルしか指定出来ないのです。ガックリしたと思いきや、実は実行時に名前空間を組み立てるには Namespace オブジェクトを使えば良いと分かりました。 var ns = new Namespace("flash

    ActionScript の API に動的にアクセスする方法 - 言語ゲーム
  • ActionScript3 でグローバル関数を定義する方法 - 言語ゲーム

    ActionScript3 でグローバル関数を定義するには二つの約束を守らないといけません。 無名パッケージの中に一つだけ public 関数を定義する。 関数名と同じ名前のファイル名を付ける。 例えば package { public function print(...s): void { trace(s); } } というプログラムがあった時、print.as としてソースパスの場所に保存すると、他のソースからグローバル関数として print を呼ぶ事が出来ます。 と、いうしょうもない事を調べるために一日潰してしまって悔しいのでここに書きました。色々ヒントはありました。例えばドキュメントには、ActionScript のファイル名は クラス名.as とすると書かれてあるし、たまにエラーメッセージの中に、一つのファイルには一つの public 定義しか出来ないと書かれている事があります

    ActionScript3 でグローバル関数を定義する方法 - 言語ゲーム
    kageroh_
    kageroh_ 2009/11/17
  • Go For C++ Programmers #interface の勝手に和訳 - 言語ゲーム

    普段はグーグルとかそういうトレンディな場所には近づかないようにしているのですが、継承最悪説、継承こそがオブジェクト指向の生み出した悪の根源だと唱えたり唱えなかったりしている自分としては Go For C++ Programmers #interfaces のようなドキュメントをみるとうれしくなってしまいまして、Go For C++ Programmers の真ん中くらいの "Interfaces" の部分を勝手に和訳しました。権利的に問題があれば削除します。 何となくたかはらさんの Go For C++ Programmersの勝手に和訳 に文体を合わせました。 以下、訳となります。 C++ でクラスやサブクラス、テンプレートがあるけど、Go ではインタフェースがあるよ。Go のインタフェースは C++ の純粋抽象関数に似ている。これってデータメンバが無くて純粋抽象メソッドしか無いクラスの

    Go For C++ Programmers #interface の勝手に和訳 - 言語ゲーム
    kageroh_
    kageroh_ 2009/11/17
  • Smalltalk 式イメージベース開発環境の欠点とその解決方法、開発環境の意味論。 - 言語ゲーム

    ここ半年ほど考えていた問題に解決の糸口が見えたのでメモ。主要なプログラミングのスタイルには二通りあります。一つはソースコード式、もう一つはイメージ式です。 ソースコード式は普通にソースコードを書いてから実行する方法です。イメージ式というのは馴染みが薄いですが、プログラムと開発環境が一体になっていて、プログラムを動かしながら動的にプログラムを変更して行きます。作業が一段落すると現在の作業内容をイメージファイルという大きなファイルに書き出して作業を終えます。プログラムの配布にはイメージファイルをそのまま使います。これは Smalltalk で使われる方法で、LISP でも似たような機能があります。 Smalltalk でプログラムを書いた事が無い人は、ずーっとデバッガを実行しっぱなしで、しかもソースコードをいつでも書き換えられる状況を想像すると良いです。この方式の良い所は、プログラムの生きた振

    Smalltalk 式イメージベース開発環境の欠点とその解決方法、開発環境の意味論。 - 言語ゲーム
  • A Declarative Model for Defining Smalltalk Programs と ANSI Smalltalk - 言語ゲーム

    論文 http://www.smalltalksystems.com/publications/_awss97/SSDCL1.HTM スライド http://www.smalltalksystems.com/publications/_awss97/INDEX.HTM ANSI Smalltalk draft http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf 先日 http://d.hatena.ne.jp/propella/20090709/p1#c1247123822 梅澤さんに教えて頂いた資料を読んでみました。これは面白いです。私がケチを付けた所はすでに10年以上も前から言われていた事だったのです。そりゃそうか。 問題をもう一度書くと、Smalltalk の伝統的な開発手法が副作用に依存しているため

    A Declarative Model for Defining Smalltalk Programs と ANSI Smalltalk - 言語ゲーム
  • Coqで遊ぶその2: 風が吹けば桶屋が儲かるか - 言語ゲーム

    前回の Coq はいきなり難しすぎました。forall とか、数学やってる人には常識なのかも知れないけど一介のプログラマには高度すぎます。ikegami さんに単純な例 http://www.youtube.com/watch?v=f9XOdpmeJ0o を教えてもらったんだけど同じじゃつまらないのでちょっと変えてやってみます。 風が吹く -> 桶屋が儲かる 風が吹く 以上の二つが成り立つ時、「桶屋が儲かる」が成り立つ。 矢印 -> は、条件と結果を現す記号です。「としたら」とか、「ならば」のように読みます。ここで一体何を証明しようとしているのか確認するのは大切だと思うので強調しますが、ここでは「風が吹く -> 桶屋が儲かる」こと自体を証明しようとしているわけではありません。もしも「風が吹く -> 桶屋が儲かる」と「風が吹く」の二つが正しいとしたら、「桶屋が儲かる」も正しいと言う事、つまり

    Coqで遊ぶその2: 風が吹けば桶屋が儲かるか - 言語ゲーム
  • Coqで遊ぶその1: - 言語ゲーム

    CafeOBJ の雰囲気が分かった所で今度は Coq に挑戦。かなり難しいですが、あきらめずに Coq in a Hurry http://cel.archives-ouvertes.fr/inria-00001173 を元に勉強しています。 起動と終了 起動は coqtop で終了は Quit. です。また、macports でインストールすると emacs 用のスクリプトがついてきます。 M-x load-library coq-inferior M-x run-coq で実行すると便利。 Check: 要素から型を探す。 Check コマンドを使うと、関数型言語みたいに使えます。ただし計算はせずに型だけ表示します。nat が自然数型で、Prop が命題型(「ある」か「ない」かをあらわす)、Prop と似たようなのに bool (論理型) がありますが、使い分けるそうです。 Coq <

    Coqで遊ぶその1: - 言語ゲーム
  • Javascript でタートルグラフィックス - 言語ゲーム

    http://languagegame.org/tmp/jstile/exp/worm.html RUN ボタンを押すと実行します。 そういえば昔アランさんたちが作った logowiki というウェブブラウザで動く LOGO がありました。残念ながら今はなくなっているのですが、あれどうやって実装していたのだろうと気になって、自分で作ってみる事にしました。LOGO でも無いし、wiki でも無いですが、ウェブブラウザで簡単なタートルグラフィックスが楽しめます。Firefox2 と IE6 で動作確認しています。動く感じは IE の方がお茶目です。色々プログラムを変えて遊んでみてください。 実装上の落とし穴 比較的 SVG の方がすんなり動きました。VML の方は意外な動きが多かったのでかなり悩みました。特に引っかかったのは次の点です。 VML のオブジェクトをグループ化する時は座標系を明示す

    Javascript でタートルグラフィックス - 言語ゲーム
  • 形式的で一般的な GUI フレームワークの研究 - 言語ゲーム

    今日電車の中で、これは行けそうだ!という予感がしたので記念に書いておきます。予感だけで、当に出来るかまだ分からない。 やりたい事 GUI フレームワークを形式的に定義します。GUI フレームワークというのは、ある情報(例えば温度)がある時に、それをどのように画面に表示するかと言う方法の事です。簡単に書けば単にある数字を表すフォントを画面に点で書けば良いだけですが、例えば温度計みたいに表示したり、グラフで表示したり、編集出来るようにしたり、色んな事を考えるとフレームワークと言うのを使った方が良いです。 形式的にというのは、数式で表現するという事です。数式で表現出来ると意味を変えずに表現を変える事が出来ます。すると、計算が速くなったり頭がすっきりしたりします。 一般的にというのは、GUI 以外にも使えるという事です。オブザーバパターンの枠内だったら何でも使えます。 バックグラウンド Sque

    形式的で一般的な GUI フレームワークの研究 - 言語ゲーム
  • Cat 言語 in Javascript - 言語ゲーム

    この週末は Cat 言語の Javascript 版を作っていました。作者さんによるオリジナル版が壊れていたので直しただけですが、Cat と Joy の違いがよく分かりました。まだ関数定義が出来ないので、はっきり言って面白い事は何も出来ないけど、今日の成果をとりあえず晒します。 http://www.languagegame.org/pub/interpreter.html Cat と Joy の最大の違いはクォーテーションです。Joy では、関数オブジェクトとリストを同一視するという美しい設計になっていたのですが、残念ながら Cat では別物です。その理由は、Cat が強い型付けを持つ言語である事に由来しています。リストにはあらゆるオブジェクトがあらゆる順序で格納されるのに比べて、強い型付けの言語では関数合成の順序は厳格なルールに則って行われます。だから別々にする必要があるのです。Joy

    Cat 言語 in Javascript - 言語ゲーム
  • 1