Emacs Lisp 組込み関数

リスト操作

予約語 使用法 説明
consp consp object object がコンスセルの場合 t を返し、そうでない場合 nil を返す。
atom atom object object がアトムの場合 t を返し、 そうでない場合 nil を返す。コンスセル以外のものは全てアトム。
listp listp object object がコンスセルか nil の場合 t を返し、そうでない場合 nil を返す。
nlistp nlistp object nlist の反対。これは object がリストでない場合 t を返し、 そうでない場合 nil を返す。
null null object object が nil の場合 t を返し、そうでない場合 nil を返す。 この関数は not と同じだが、慣例として object がリストを示す場合 null を用い、 真理値を示す場合 not を用いる。
cons cons object1 object2 新しくリストを作る際に用いる関数。 これは object1 を car、object2 を cdr として、 コンスセルを作り、この新しいコンスセルへのポインタを返す。
list list &rest objects objects を要素とするリストを作る。 結果として返されるリストは nil でターミネートされている。 objects が与えられない場合、empty リストを返す。
make-list make-list integer object 各要素が object である長さ integer のリストを作る。
append append &rest sequences sequences の全ての要素を含むリストを返す。 最後の 1 つを除いたアーギュメントは全てコピーされ、 変更されることはない。
car car list コンスセル list の最初のポインタを返す。 アーギュメントがリストでない場合、エラーになる。
cdr cdr list コンスセル list の 2 番目のポインタを返す。 アーギュメントがリストでない場合、エラーになる。
car-safe car-safe object どのような型のアーギュメントに対しても呼ぶことができるようになっている。
cdr-safe cdr-safe object どのような型のアーギュメントに対しても呼ぶことができるようになっている。
nth nth integer list list の integer 番目の要素を返す。
nthcdr nthcdr integer list list の integer 番目の cdr を返す。
setcar setcar cons object コンスセルの car ポインタをオブジェクトで置き換える。 結果は object 。
setcdr setcdr cons object コンスセルの cdr ポインタをオブジェクトで置き換える。 結果は object 。
nconc nconc &rest lists lists の要素を含むリストを返す。 append とは異なり、 lists はコピーせず、 lists の各々の要素の(最後の) cdr ポインタが次のリストを指すよう変更する。
reverse reverse list list の要素を逆順に持つリストを新しく作る。list は変更しない。
nreverse nreverse list list の要素を逆順にして返す。 reverse とは異なり、 list の cdr ポインタを大きく変更する。 結果は list の最後のコンスセルへのポインタで、 一般に list はそれ自身の nreverse とは同じではない。
sort sort list predicate preficate を用いて要素を比較し、cdr ポインタを変えて list をソートし、 ソートされたリストを返す。 predicate は 2つのアーギュメントを持つ関数でなくてはいけない。 これは list 中の 2つの要素を引数として sort 関数内部で呼ばれる。 小さい順にソートするためには、 predicate が、 最初の要素が 2 番目の要素 "より小さい" 場合 t を、 そうでない場合 nil を返すようにする。
memq memq object list object が list の要素であるか否かを調べる。 要素である場合、 memq は object が最初に現われた場所を頭にして リストの後ろの部分を返す。要素でない場合 nil を返す。
delq delq object list list から object に eq な全ての要素を削除する。 object がリストの最初の要素である場合を除いて list を変更する。
sequencep sequencep object object がリストか、ベクトルか、ストリングの場合 t、それ以外の場合 nil を返す。
copy-sequence copy-sequence sequence sequence のコピーを返す。このコピーに対する変更は、オリジナルには影響を 及ぼさない。しかし、これは sequence のトップレベルのみをコピーし、 それより深いレベルはコピーしない。つまり、 sequence の要素と、コピーの対応する 要素は、互いに eq になる。
length length sequence sequence 中の要素の数を返す。sequence がリストの場合そのリストが nil で終っていない場合、 wrong-type-argument エラーになる。
elt elt sequence integer integer を添字とする sequence の要素を返す。 この関数は、 aref や nth と機能的には同じだが、どんな種類のシーケンス に対しても機能する。シーケンス中の最初の要素の添字は 0 。
assoc assoc key alist alist において key に対応する最初のコンスセルを返す。alist に、その car が key と equal であるコンスセルが存在しない場合、nil を返す。
assq assq key alist alist において key に対応する最初のコンスセルを返す。alist に、その car が key と eq であるコンスセルが存在しない場合、nil を返す。 eq は equal より速く、ほとんどの alist はシンボルをキーとして用いるため、 assoc より頻繁に用いられる。
rassq rassq alist value alist のコンスセルの car のかわりに cdr を調べる点を除いて assq と同じ。 この関数は alist 中の value に対する最初のコンスセルを返す。 alist 中に value に eq な cdr が存在しない場合 nil を返す。
copy-alist copy-alist alist alist の深さ 2 レベルのコピーを返します。各 pair のコピーを作り、 前のものを変更することなく、新しい alist における対応関係を変更できるようにする。

変数・代入・評価

予約語 使用法 説明
set set symbol object symbol の評価を行い、symbol に object を代入する。
setq setq [symbol object]* symbol の評価を行わずに、symbol に object を代入する。 最も一般的な代入の方法。
identity identity object object を変更せずに返す。quote とは異なり、アーギュメントを評価する。
quote quote object 評価せずに object を返す。これは評価されてしまうシンボルやリストを プログラム中に持つために用いられる。 quote はプログラム中で頻繁に用いられるので "'" を object の前に置いても 同じことである。
' 'object (quote object) と同じ。
let let binding-list forms* 上のレベルのリストとは独立したローカル変数を宣言する。 binding-list に従い変数をバインドし、 forms 中の全てのフォームを順に評価する。 let は (forms 中の)最後のフォームの値を返す。
let* let* binding-list forms* binding-list の各シンボルを与えられた順にバインドする点を除いて、let と同じ。

数値

予約語 使用法 説明
integerp integerp object アーギュメントが integer であるか否かを調べ、 integer である場合 t を返し、 そうでない場合 nil を返す。
zerop zerop object アーギュメントが 0 であるか否かを調べ、0 である場合 t を返し、 そうでない場合 nil を返す。
natnump natnump object "Natural number-p" の意味。アーギュメントが負でない数(自然数)であるか否かを調べ、 負でない数である場合 t を返し、そうでない場合 nil を返す。

比較

予約語 使用法 説明
eq eq object1 object2 2 つのオブジェクトが同じオブジェクトである場合 t を返し、 そうでない場合 nil を返す。
equal equal object1 object2 2 つのオブジェクトが構造的に同じものである場合 t を返し、 そうでない場合 nil を返す。 eq なオブジェクトはまた equal でもある。
= = m-integer1 m-integer2 アーギュメントが同じ数値であるか否かを調べ、同じ数値である場合 t を返し、 そうでない場合 nil を返す。
/= /= m-integer1 m-integer2 アーギュメントが同じ数値でないか否かを調べ、同じ数値でない場合 t を返し、 同じ数値である場合 nil を返す。
< < m-integer1 m-integer2 最初のアーギュメントが 2番目のアーギュメントより厳密に小さいか否かを調べる。 小さい場合 t を返し、そうでない場合 nil を返す。
<= <= m-integer1 m-integer2 最初のアーギュメントが 2番目のアーギュメントより小さいか等しいかを調べる。 小さいか等しい場合 t を返し、そうでない場合 nil を返す。
> > m-integer1 m-integer2 最初のアーギュメントが 2番目のアーギュメントより厳密に大きいか否かを調べる。 大きい場合 t を返し、そうでない場合 nil を返す。
>= >= m-integer1 m-integer2 最初のアーギュメントが 2番目のアーギュメントより大きいか等しいかを調べる。 大きいか等しい場合 t を返し、そうでない場合 nil を返す。
max max m-integer &rest m-integers アーギュメントの最大値を返す。
min min m-integer &rest m-integers アーギュメントの最小値を返す。

制御

予約語 使用法 説明
if if condition then-form else-forms* 最初に condition を評価し、これが nil でない値を返す場合、 then-form を評価し、値を返す。 condition が nil に評価された場合、else-forms を評価し、 その最後の値を返す。else-forms が存在しない場合、if は nil を返す。
cond cond clauses* 最初に clauses 中の各 clause の car を順番に non-nil が返されるまで評価する。 clause が (condition body) の形である場合、cond は この body を implied progn として評価し、その結果を返す。 この clause が (condition) の形である場合その値を返す。
while while test-form forms* GNU Emacs Lisp における唯一の繰返し。 test-form を評価し、その値が non-nil である場合、 フォームの残りのものを順に評価し再び test-form を評価するというよう に繰り返しを行なう。 test-form が nil に評価された場合、 while フォームを exit する。 while は常に nil を返す。

演算

予約語 使用法 説明
not not object object が nil の場合 t を返す。 それ以外の値の場合 nil を返す。
and and forms* 1つ以上のアーギュメントを受け取り、それらを 1度に 1つずつ評価する。 それらが(全て) non-nil の値に評価された場合、最後のフォームの値を返す。 あるアーギュメントが nil に評価された場合 残りのアーギュメントを評価せずに nil を返す。
or or forms* 1つ以上のアーギュメントを受け取り、それらを 1度に 1つずつ評価する。 それらが全て nil に評価された場合、or は nil を返す。 あるアーギュメントが non-nil の値に評価された場合 残りのアーギュメントを評価せずにその値を返す。
1+ 1+ m-integer アーギュメントに 1 を足す。
1- 1- m-integer アーギュメントから 1 を引く。
+ + &rest m-integers アーギュメントを足し合わせる。 アーギュメントが与えられない場合は 0 を返す。 オーバーフローのチェックは行わない。
- - &optional integer &rest other-integers アーギュメントが 1 つの場合、アーギュメントの符号を反転したものを返す。 アーギュメントが複数の場合、 other-integers の全てを integer から引く。 アーギュメトがない場合、結果は 0 になる。
* * &rest integers アーギュメントを掛け合わせる。 アーギュメントがない場合、1を返す。 オーバーフローのチェックは行わない。
/ / integer1 integer2 &rest other-integers integer1 を integer2 で割る。アーギュメントがそれ以上存在する場合、 それらで結果を次々に割っていく。 割り算の結果は毎回切り捨てる。
% % integer1 integer2 integer1 を integer2 で割った余りを返す。 結果の符号は integer1 の符号になる。 integer2 の符号は無視する。

関数

予約語 使用法 説明
defun defun symbol parameter-list forms* 新しく lisp 関数を定義する。 symbol をこのフォームの残りの部分が示す関数の名前として定義する。 このシンボルの関数セルが、 parameter-list と forms から作られる ラムダ式 (lambda parameter-list . forms) を指すようにすることで行なわれる。 値セルは関数セルとは独立しているので、同じシンボルをグローバル変数として 用いてもかまわない。
lambda (lambda args documentation body) 無名関数またはラムダ式と言われ、関数の形だけを定義する。 関数定義をしたくない場合に使われたりする。
mapcar mapcar function sequence sequence の各要素に function を適用し、その結果のリストを返す。 sequence が nil で終るリストでない場合、エラーになる。
mapconcat mapconcat function sequence separator sequence の各要素に function を適用し、その結果をストリングとして繋げる。 結果の各 pair の間に separator を挿入する。
funcall funcall function &rest arguments function をアーギュメントのリストに適用し、その結果を返す。 このリストは全てのアーギュメントから作られる。
apply apply function arg &rest args 最後のアーギュメントを特別に扱う点を除いて funcall と同じ。 リストは、最後のものを除いた(全ての)アーギュメントから作られ、 最後のものはそのリストの終りに append される。

Go back