S式

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

S式(エスしき、: S-expression)とは、Lispで導入され、主にLispで用いられる、コンスセル、二分木ないしリスト構造の形式的な記述方式。SはSymbolに由来。

形式的には、おおまかにS式は次のように定義される。

  1. シンボル(および、その他のアトムやデータオブジェクトのリテラル)はS式である
  2. (アトムの一種とする流儀もあるが) 空リストあるいはnil (Common Lispなどにおいては、Schemeではnilを表さない) を表現する () もS式である
  3. (??? . ???) のように、S式をドットで区切り、丸カッコでくくったペアもS式である(コンスセル・二分木)
  4. 連結リストの形をした (??? . (??? . ()))(??? ???) のように、また (??? . ())(???) のように、省略した記法もS式である(リスト)
  5. その他の略記法。たとえば (quote foo)'foo など

S式は、Lispにおけるリスト構造を直接表現するものとしてジョン・マッカーシーによって考案された。S式は表記に大量の括弧を使用するが、コードとデータを均質に記述し扱うのに便利で、また構造の解析が容易でマクロへの応用も幅広い。連結リストのみを表現するJSONのようなもの、とも言える。LispとS式は密接に結びついており、両者を分離しようとする試みもいくつかあったが、その元祖と言えるM式をはじめとしていずれも大きな成功と言うに至ったものはない。

関連項目[編集]