Smalltalk-72で学ぶOOPの原点:組み込みの構造化エディター(Enter、Leave、Exit)
アラン・ケイの“オブジェクト指向”というアイデアをもとに(非同期処理などいろいろ足りていないながらも──)比較的忠実に実装された1970年代の非常に古いSmalltalk-72で遊んでみるシリーズです(なお最新のSmalltalkについては Pharo などでお楽しみください!)。他の記事はこちらから→Smalltalk-72で学ぶOOPの原点 Advent Calendar 2019 - Qiita
(念願のクリック、's(instance_evalで使う記号)、⦂(オープンコロン)を手に入れた!の続き)
REPLの便利機能(redo
、fix
)とコード/配列エディター
Smalltalk-72のREPLでは、redo
で直前に評価した式を、またredo <正数>
と数値を付すことで指定した数だけ前に評価した式の再評価を行えます。
一方、fix
は指定した式の一部を変更して評価できます。このとき、コード(実体は配列)専用のエディターが起動します。redo
同様にどのくらい遡るかも指定できます。
このコード/配列エディターがマウスクリック必須なので、これまでfix
やアクション/クラス編集用のedit
などが使用できずたいへん不便でしたが、今後はだいぶREPLの使い勝手も改善されそうです。ただし前回紹介したちょい直し版を使っていない場合、残念ながらこのエディターでの操作はできません。esc
キーを押してそのまま終了してください。
「Enter」「Leave」「Exit」
このエディターは配列の要素の編集が基本的な機能です。要素内に配列があるときは()
(トークンに分断されないよう、実際は1文字の記号)と省略されて表示され、編集中はひとつの要素として扱われます。
配列(もしくはコード)の中にネストした配列がひとつしかないときは「Enter」コマンドをクリックするとその中身を見ることができます。複数あるときは、「Enter」コマンドがハイライトした状態で中身を見たい配列(()
で表示されている)をクリックします。
元の表示に戻るには「Leave」を使います。戻る画面がないときはエディターを抜けて編集中のコードを再評価します。「Exit」はどの階層からでもエディターを直ちに抜けてやはり編集中の式を再評価します。