言語ゲーム

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

Twitter: @propella

overview

reflection

  • モルフの外部参照名をそのままインスタンス変数の用に使えるようにしようとしたが、正しく動作しなかった。
    • そもそも、Smalltalk のセマンティックとして、変数参照を勝手にメソッド呼び出しにしてしまって利用者が後々混乱しないだろうか?
    • 名前空間の改造はとりあえず妥協する。 self bee のように self + 外部参照名 (外部参照名をメソッド呼び出しに変換)
  • テスト実行環境の実装をまたまたはじめられなかった。(激ヤバ)

goal(進んでない)

  • テキストモルフ等への参照を文字列や数字として使えるように。
  • ドーナツ屋の例によるテストの記述

implementaion

  • on changed の実装。モルフに変更があった場合 Player 側に通知し、制約メソッドを発動。
  • 出来れば、bee を self bee に書き換え。
  • parserNode へ MessageNode を挿入する為のヒント
  • encoder>>encodeVariable:sourceRange:ifUnknown: で変数 scopeTableにMessageNode が入ってると良い? 下記ハングする。
	scopeTable at: 'halt' put: (MessageNode new
				receiver: (StdVariables at: 'self')
				selector: #halt
				arguments: #()
				precedence: 0
				from: self
				sourceRange: (0 to: 1)).
  • 通知方式で制約を行う事の問題点
    • Player はそもそも model のサブクラスとして実装されているが、Morph > Player に依存関係を貼る事によって立場が逆転してしまうが混乱しないか?
    • Morph1 > Player1 <---> Player2 < Morph2
      • 二つのプレイヤ間が制約を持っていた場合、ループになってしまう。
    • 制約が成功したか失敗したかを通知する仕組みが必要。
    • TCP/IP の仕組みが参考になる?
  • テストを Player として実装する。
  • Morph のプレイヤを変える仕組み。
  • トランスフォーメーションの名前をちゃんと出す。
  • 部分的にリリース出来るように出来るだけモジュール化する。