S式
ナビゲーションに移動
検索に移動
S式(エスしき、英: S-expression)とは、Lispで導入され、主にLispで用いられる、コンスセル、二分木ないしリスト構造の形式的な記述方式。SはSymbolに由来。
形式的には、おおまかにS式は次のように定義される。
- シンボル(および、その他のアトムやデータオブジェクトのリテラル)はS式である
- (アトムの一種とする流儀もあるが) 空リストあるいはnil (Common Lispなどにおいては、Schemeではnilを表さない) を表現する
()
もS式である (??? . ???)
のように、S式をドットで区切り、丸カッコでくくったペアもS式である(コンスセル・二分木)- 連結リストの形をした
(??? . (??? . ()))
を(??? ???)
のように、また(??? . ())
を(???)
のように、省略した記法もS式である(リスト) - その他の略記法。たとえば
(quote foo)
を'foo
など
S式は、Lispにおけるリスト構造を直接表現するものとしてジョン・マッカーシーによって考案された。S式は表記に大量の括弧を使用するが、コードとデータを均質に記述し扱うのに便利で、また構造の解析が容易でマクロへの応用も幅広い。連結リストのみを表現するJSONのようなもの、とも言える。LispとS式は密接に結びついており、両者を分離しようとする試みもいくつかあったが、その元祖と言えるM式をはじめとしていずれも大きな成功と言うに至ったものはない。