言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

反省

  • 2引数メソッドの表示まではOK, コンパイルはまだ怪しい部分がある。
  • color: see: のような特別のインタフェースを持つタイルの為のきれいなプロトコルを用意したい。
  • 型情報を活用したい。-> インタフェース

目標

  • 制約に使うための3引数の関数を eToys で利用出来るようにする(作成は出来なくても良い)。
  • ワールドに含まれるスクリプト、オブジェクトをツリー上に表示。どんな意味上の関連があるのか考える。
  • クラスインスタンス(siblings)
  • 新しいメソッドを追加する事が出来る。(この場合はコピーという事にする。簡単だから)
  • Step 方式のメリットとデメリットについてまとめる。
  • ブラウザから削除した時にビューワもついてくるようにする。

方針や疑問

  • テスト作成
  • ブラウザから作成したメソッドを scripts に登録する必要が無いかも知れない。
  • 最初から Player に実装されているメソッドも編集できたら面白いのでは無いか?

実装

  • ScriptEditorMorph と MethodMorph に依存関係を設定。
  • 型情報の生成と保存。
  • ブラウザから直接入力したメソッドを scripts に登録しないようにする。
  • self currentWorld printScriptSummary で現在のワールドの情報が分かるようになっている。
  • インタフェース Player>>methodInterface: selector として実装
  • Morph 側で Player にスロットを追加する方法の調査
    • Morph>>additionsToViewerCategories
メッセージはプレイヤのメッセージ
^#(
    カテゴリ名
        (
            (command メッセージ 'コメント' opt引数の型)
            (slot copy 'returns a copy of this object' Player readOnly Player getNewClone    unused unused)
            (slot メッセージ 'コメント' 返り型 readWrite レシーバ型 getter レシーバ型 setter:)
        )
    )

イデア

  • A horizon: B と書けた方が良いか?
  • TestDaemon 最後に成功したコンテキストを覚えておく。
  • スタック型。ツリー形にメモる仕組み。考え方を考える。
  • ワールドエキスプローラ