例え話に表計算

ヒエー、僕は使ったことない。

  1. 表計算ソフト〈スプレッドシート〉が便利なのは、入力に対する自動計算/自動再計算をやってくれるから。
  2. 高機能かつDomainSpecificな電卓〈カリキュレーター〉として使える。
  3. セル番地は A1, C30 のように英字と数字の並び、英字部分が横座標(列名)、数字部分が縦座標(行番号)。
  4. スピヴァックは、複数のセルと関数から作った機能的かたまりをガジェットと呼んでいた。
  5. つまり、シート内にガジェットを配置する。計算ガジェットと呼ぶといいだろう。
  6. 「=式」と入力すると計算値が得られる。
  7. 式内のセル番地参照はコピーされると相対的な位置関係から書き換えが起きるらしい。つまり、自分自身からのオフセット座標と、シートの絶対座標がある。
  8. 絶対座標指定は、$A$1 のようにドル記号をつける。何も付けないと内部的にオフセット参照と解釈されている。オフセット座標は (-3, +1) とか書けばいいか。
  9. 構文論と意味論が作れそう。

構文論:

  1. 値リテラル
  2. 絶対セル番地
  3. 相対セル番地=オフセット座標(基準セル必要)
  4. 絶対セル範囲式
  5. 相対セル範囲式(基準セル必要)
  6. 名前(式に束縛される)
  7. 算術演算子
  8. 範囲演算子
  9. 論理演算子
  10. その他の関数
  11. 束縛 : 絶対番地 = 式
  12. 状態 : 束縛の集合、シートのセルに対する式の割り当て
  13. ガジェット: シート状態から作る入出力を持つオートマトン

意味論はガジェットの意味論を展開したほうが有意義だろう。ガジェットは、入力に対して、そのときの状態に応じた出力を計算する。ガジェットは、シート束縛状態に入力セル群と出力セル群を指定して定義できる。