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式をはじめとしていずれも大きな成功と言うに至ったものはない。
