-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathobjects.texi
2830 lines (2520 loc) · 132 KB
/
objects.texi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/objects
@node Lisp Data Types, Numbers, Introduction, Top
@c @chapter Lisp Data Types
@chapter Lispのデータ型
@c @cindex object
@c @cindex Lisp object
@c @cindex type
@c @cindex data type
@cindex オブジェクト
@cindex Lispオブジェクト
@cindex 型
@cindex データ型
@c A Lisp @dfn{object} is a piece of data used and manipulated by Lisp
@c programs. For our purposes, a @dfn{type} or @dfn{data type} is a set of
@c possible objects.
Lisp@dfn{オブジェクト}(object)とは、
Lispプログラムが使用し操作するデータのことです。
@dfn{型}(type)や@dfn{データ型}(data type)とは、ここでは、
可能なオブジェクトの集合を意味します。
@c Every object belongs to at least one type. Objects of the same type
@c have similar structures and may usually be used in the same contexts.
@c Types can overlap, and objects can belong to two or more types.
@c Consequently, we can ask whether an object belongs to a particular type,
@c but not for ``the'' type of an object.
各オブジェクトは、少なくとも、1つの型に属します。
同じ型のオブジェクトは、構造に類似性があり、普通、同じ文脈で使われます。
型は互いに重複していてもよく、オブジェクトは複数の型に属することができます。
そのため、オブジェクトが特定の型に属するかどうかは判断できますが、
オブジェクトの型を『1つ』に限定することはできません。
@c @cindex primitive type
@cindex 基本型
@c A few fundamental object types are built into Emacs. These, from
@c which all other types are constructed, are called @dfn{primitive
@c types}. Each object belongs to one and only one primitive type. These
@c types include @dfn{integer}, @dfn{float}, @dfn{cons}, @dfn{symbol},
@c @dfn{string}, @dfn{vector}, @dfn{subr}, @dfn{byte-code function}, plus
@c several special types, such as @dfn{buffer}, that are related to
@c editing. (@xref{Editing Types}.)
Emacsには少数の基本オブジェクト型を組み込んであります。
これらの型は他のすべてのオブジェクト型を構成するもとであり、
@dfn{基本型}(primitive types)と呼びます。
各オブジェクトはたった1つの基本型に属します。
基本型には、
@dfn{整数}(integer)、@dfn{浮動小数点数}(float)、
@dfn{コンス}(cons)、@dfn{シンボル}(symbol)、
@dfn{文字列}(string)、@dfn{ベクトル}(vector)、@dfn{subr}、
@dfn{バイトコード関数}(byte-code function)、
ならびに、編集に関連する@dfn{バッファ}(buffer)などの
特別な型があります。
(@pxref{Editing Types}。)
@c Each primitive type has a corresponding Lisp function that checks
@c whether an object is a member of that type.
各基本型には、その型に属するオブジェクトであるかどうかを検査する
対応するLisp関数があります。
@c Note that Lisp is unlike many other languages in that Lisp objects are
@c @dfn{self-typing}: the primitive type of the object is implicit in the
@c object itself. For example, if an object is a vector, nothing can treat
@c it as a number; Lisp knows it is a vector, not a number.
Lispオブジェクトは@dfn{型を自己記述}(self-typing)するという点で、
Lispは他の多くの言語とは異なります。
つまり、オブジェクトの基本型は、オブジェクト自体に暗に含まれています。
たとえば、オブジェクトがベクトルであれば、それを数と扱うことはありません。
Lispには、ベクトルは数ではないとわかっているのです。
@c In most languages, the programmer must declare the data type of each
@c variable, and the type is known by the compiler but not represented in
@c the data. Such type declarations do not exist in Emacs Lisp. A Lisp
@c variable can have any type of value, and it remembers whatever value
@c you store in it, type and all.
多くの言語では、プログラマは各変数のデータ型を宣言する必要があります。
型はコンパイラが知っているのであって、データの中には入っていません。
このような型宣言はEmacs Lispには存在しません。
Lisp変数はどんな型の値でも保持でき、
変数に入れた値と型を記録しています。
@c This chapter describes the purpose, printed representation, and read
@c syntax of each of the standard types in GNU Emacs Lisp. Details on how
@c to use these types can be found in later chapters.
本章では、GNU Emacs Lispの各標準型の表示表現と入力構文を説明します。
これらの型の使用方法の詳細は、あとの章に譲ります。
@menu
* Printed Representation:: How Lisp objects are represented as text.
* Comments:: Comments and their formatting conventions.
* Programming Types:: Types found in all Lisp systems.
* Editing Types:: Types specific to Emacs.
* Type Predicates:: Tests related to types.
* Equality Predicates:: Tests of equality between any two objects.
@end menu
@node Printed Representation
@comment node-name, next, previous, up
@c @section Printed Representation and Read Syntax
@section 表示表現と入力構文
@c @cindex printed representation
@c @cindex read syntax
@cindex 表示表現
@cindex 入力構文
@c The @dfn{printed representation} of an object is the format of the
@c output generated by the Lisp printer (the function @code{prin1}) for
@c that object. The @dfn{read syntax} of an object is the format of the
@c input accepted by the Lisp reader (the function @code{read}) for that
@c object. @xref{Read and Print}.
オブジェクトの@dfn{表示表現}(printed representation)とは、
Lispプリンタ(関数@code{prin1})がそのオブジェクトを出力表示するときの
書式です。
オブジェクトの@dfn{入力構文}(read syntax)とは、
Lispリーダ(関数@code{read})がそのオブジェクトを入力として受理する書式です。
@xref{Read and Print}。
@c Most objects have more than one possible read syntax. Some types of
@c object have no read syntax, since it may not make sense to enter objects
@c of these types directly in a Lisp program. Except for these cases, the
@c printed representation of an object is also a read syntax for it.
ほとんどのオブジェクトには1つ以上の可能な入力構文があります。
ある種の型のオブジェクトには入力構文はありませんが、
そのような型のオブジェクトをLispプログラムに直接入力する意味がないからです。
このような場合を除くと、
オブジェクトの表示表現はそのオブジェクトの入力構文でもあります。
@c In other languages, an expression is text; it has no other form. In
@c Lisp, an expression is primarily a Lisp object and only secondarily the
@c text that is the object's read syntax. Often there is no need to
@c emphasize this distinction, but you must keep it in the back of your
@c mind, or you will occasionally be very confused.
他の言語では、式はテキストであって、これ以外の形はありません。
Lispでは、式はとにかくLispオブジェクトであって、
オブジェクトの入力構文であるテキストは副次的なものです。
この違いを強調する必要はありませんが、
このことを心に留めておかないと混乱することがあります。
@c @cindex hash notation
@cindex ハッシュ記法
@c Every type has a printed representation. Some types have no read
@c syntax---for example, the buffer type has none. Objects of these types
@c are printed in @dfn{hash notation}: the characters @samp{#<} followed by
@c a descriptive string (typically the type name followed by the name of
@c the object), and closed with a matching @samp{>}. Hash notation cannot
@c be read at all, so the Lisp reader signals the error
@c @code{invalid-read-syntax} whenever it encounters @samp{#<}.
各型には表示表現があります。
入力構文のない型もあります。
たとえば、バッファ型には入力構文はありません。
このような型のオブジェクトは@dfn{ハッシュ記法}(hash notation)で表示します。
つまり、文字列@samp{#<}のあとに説明用の文字列
(典型的には型名にオブジェクトの名前を続けたもの)を続け、
対応する@samp{>}で閉じます。
ハッシュ記法を読み取ることはできませんから、
Lispリーダが@samp{#<}に出会うとエラー@code{invalid-read-syntax}を
通知します。
@kindex invalid-read-syntax
@example
(current-buffer)
@result{} #<buffer objects.texi>
@end example
@c When you evaluate an expression interactively, the Lisp interpreter
@c first reads the textual representation of it, producing a Lisp object,
@c and then evaluates that object (@pxref{Evaluation}). However,
@c evaluation and reading are separate activities. Reading returns the
@c Lisp object represented by the text that is read; the object may or may
@c not be evaluated later. @xref{Input Functions}, for a description of
@c @code{read}, the basic function for reading objects.
読者が対話的に式を評価するとき、
Lispインタープリタは、まず、
式のテキスト表現を読み取ってLispオブジェクトを生成し、
そのオブジェクトを評価します(@pxref{Evaluation})。
しかしながら、評価と読み取りは別々の動作です。
読み取りでは、読み取ったテキストが表すLispオブジェクトを返します。
このオブジェクトを、のちに評価する場合もありますが、
評価しない場合もあります。
オブジェクトを読み取る基本関数@code{read}については、
@xref{Input Functions}。
@node Comments
@comment node-name, next, previous, up
@c @section Comments
@section コメント
@c @cindex comments
@c @cindex @samp{;} in comment
@cindex コメント
@cindex @samp{;}、コメント内
@c A @dfn{comment} is text that is written in a program only for the sake
@c of humans that read the program, and that has no effect on the meaning
@c of the program. In Lisp, a semicolon (@samp{;}) starts a comment if it
@c is not within a string or character constant. The comment continues to
@c the end of line. The Lisp reader discards comments; they do not become
@c part of the Lisp objects which represent the program within the Lisp
@c system.
@dfn{コメント}(comment)は、プログラム内に書かれたテキストであり、
プログラムを読む人間のためだけにあり、
プログラムの意味にはまったく影響しません。
Lispでは、文字列や文字定数の外にあるセミコロン(@samp{;})で
コメントを始めます。
コメントは行末までです。
Lispリーダは、コメントを破棄します。
コメントは、
Lispシステム内部でプログラムを表すLispオブジェクトの一部にはなりません。
@c The @samp{#@@@var{count}} construct, which skips the next @var{count}
@c characters, is useful for program-generated comments containing binary
@c data. The Emacs Lisp byte compiler uses this in its output files
@c (@pxref{Byte Compilation}). It isn't meant for source files, however.
@samp{#@@@var{count}}という書き方は、
後続の@var{count}個の文字を飛び越します。
これは、プログラムで生成したバイナリデータを含むコメントに便利です。
Emacs Lispのバイトコンパイラは、出力ファイルにこのようなコメントを使います
(@pxref{Byte Compilation})。
しかしながら、ソースファイル向きではありません。
@c @xref{Comment Tips}, for conventions for formatting comments.
コメントの体裁に関する慣習については、@xref{Comment Tips}。
@node Programming Types
@c @section Programming Types
@section プログラミング向けの型
@c @cindex programming types
@cindex プログラミング向けの型
@cindex 型、プログラミング向け
@c There are two general categories of types in Emacs Lisp: those having
@c to do with Lisp programming, and those having to do with editing. The
@c former exist in many Lisp implementations, in one form or another. The
@c latter are unique to Emacs Lisp.
Emacs Lispには、大きく2種類の型があります。
Lispのプログラミングに関わるものと、編集に関わるものです。
前者は、さまざまな形でLispの多くの実装に見られます。
後者は、Emacs Lispに固有です。
@menu
* Integer Type:: Numbers without fractional parts.
* Floating Point Type:: Numbers with fractional parts and with a large range.
* Character Type:: The representation of letters, numbers and
control characters.
* Symbol Type:: A multi-use object that refers to a function,
variable, or property list, and has a unique identity.
* Sequence Type:: Both lists and arrays are classified as sequences.
* Cons Cell Type:: Cons cells, and lists (which are made from cons cells).
* Array Type:: Arrays include strings and vectors.
* String Type:: An (efficient) array of characters.
* Vector Type:: One-dimensional arrays.
* Char-Table Type:: One-dimensional sparse arrays indexed by characters.
* Bool-Vector Type:: One-dimensional arrays of @code{t} or @code{nil}.
* Function Type:: A piece of executable code you can call from elsewhere.
* Macro Type:: A method of expanding an expression into another
expression, more fundamental but less pretty.
* Primitive Function Type:: A function written in C, callable from Lisp.
* Byte-Code Type:: A function written in Lisp, then compiled.
* Autoload Type:: A type used for automatically loading seldom-used
functions.
@end menu
@node Integer Type
@c @subsection Integer Type
@subsection 整数型
@c The range of values for integers in Emacs Lisp is @minus{}134217728 to
@c 134217727 (28 bits; i.e.,
Emacs Lispにおける整数の値の範囲は、ほとんどの計算機では、
@minus{}134217728から134217727(28ビット長。つまり
@ifinfo
-2**27
@end ifinfo
@tex
$-2^{27}$
@end tex
@c to
から
@ifinfo
@c 2**27 - 1)
2**27 - 1)
@end ifinfo
@tex
%c $2^{28}-1$)
$2^{27}-1$)%c 誤植?
@end tex
@c on most machines. (Some machines may provide a wider range.) It is
@c important to note that the Emacs Lisp arithmetic functions do not check
@c for overflow. Thus @code{(1+ 134217727)} is @minus{}134217728 on most
@c machines.
です。
(計算機によっては、より広い範囲になる。)
Emacs Lispの算術演算関数は、桁溢れ(オーバフロー)を
検査しないことを覚えておいてください。
したがって、ほとんどの計算機では、
@code{(1+ 134217727)}は@minus{}134217728となります。
@c The read syntax for integers is a sequence of (base ten) digits with an
@c optional sign at the beginning and an optional period at the end. The
@c printed representation produced by the Lisp interpreter never has a
@c leading @samp{+} or a final @samp{.}.
整数の入力構文は、(10を基数とした)数字の並びであり、
先頭に符号があってもよく、また、最後にピリオドがあってもかまいません。
Lispインタープリタが生成する表示表現では、
先頭の@samp{+}や最後の@samp{.}はありません。
@example
@group
@c -1 ; @r{The integer -1.}
@c 1 ; @r{The integer 1.}
@c 1. ; @r{Also The integer 1.}
@c +1 ; @r{Also the integer 1.}
@c 268435457 ; @r{Also the integer 1 on a 28-bit implementation.}
-1 ; @r{整数 -1}
1 ; @r{整数 1}
1. ; @r{これも整数 1}
+1 ; @r{これも整数 1}
268435457 ; @r{28ビット長整数では、これも整数 1}
@end group
@end example
@c @xref{Numbers}, for more information.
より詳しくは、@xref{Numbers}。
@node Floating Point Type
@c @subsection Floating Point Type
@subsection 浮動小数点数
@c Emacs supports floating point numbers (though there is a compilation
@c option to disable them). The precise range of floating point numbers is
@c machine-specific.
Emacsは浮動小数点数を扱えます
(ただし、コンパイル時のオプションで使用不可にできる)。
浮動小数点数の範囲は、計算機に依存します。
@c The printed representation for floating point numbers requires either
@c a decimal point (with at least one digit following), an exponent, or
@c both. For example, @samp{1500.0}, @samp{15e2}, @samp{15.0e2},
@c @samp{1.5e3}, and @samp{.15e4} are five ways of writing a floating point
@c number whose value is 1500. They are all equivalent.
浮動小数点数の表示表現には、
小数点(に続けて1桁以上の小数部分)または指数、
あるいは、その両方が必要です。
たとえば、@samp{1500.0}、@samp{15e2}、@samp{15.0e2}、
@samp{1.5e3}、@samp{.15e4}は、同じ1500という値の
浮動小数点数を書く5つの方法です。
どれも、まったく等価です。
@c @xref{Numbers}, for more information.
詳しくは、@xref{Numbers}。
@node Character Type
@c @subsection Character Type
@subsection 文字型
@c @cindex @sc{ASCII} character codes
@cindex @sc{ASCII}文字コード
@c A @dfn{character} in Emacs Lisp is nothing more than an integer. In
@c other words, characters are represented by their character codes. For
@c example, the character @kbd{A} is represented as the @w{integer 65}.
Emacs Lispにおける@dfn{文字}(character)は、
整数以外の何物でもありません。
いいかえれば、文字はその文字コードで表現されます。
たとえば、文字@kbd{A}は@w{整数 65}と表現されます。
@c Individual characters are not often used in programs. It is far more
@c common to work with @emph{strings}, which are sequences composed of
@c characters. @xref{String Type}.
プログラムで個々の文字を独立に使うことはあまりありません。
文字を並べた@emph{文字列}(strings)として扱うことが断然多いのです。
@xref{String Type}。
@c Characters in strings, buffers, and files are currently limited to the
@c range of 0 to 524287---nineteen bits. But not all values in that range
@c are valid character codes. Codes 0 through 127 are ASCII codes; the
@c rest are non-ASCII (@pxref{Non-ASCII Characters}). Characters that represent
@c keyboard input have a much wider range, to encode modifier keys such as
@c Control, Meta and Shift.
文字列内、バッファ内、ファイル内の文字は、
現時点では、0から524287までの範囲、19ビット長に制限されます。
しかし、この範囲の値すべてが正しい文字コードではありません。
0から127までのコードはASCIIコードです。
それ以外は、非ASCIIです(@pxref{Non-ASCII Characters})。
キーボード入力を表す文字は、コントロール、メタ、シフトなどの
修飾キーを符号化するために、範囲がより広くなります。
@c @cindex read syntax for characters
@c @cindex printed representation for characters
@c @cindex syntax for characters
@cindex 文字の入力構文
@cindex 入力構文、文字
@cindex 文字の表示表現
@cindex 表示表現、文字
@cindex 文字の構文
@c Since characters are really integers, the printed representation of a
@c character is a decimal number. This is also a possible read syntax for
@c a character, but writing characters that way in Lisp programs is a very
@c bad idea. You should @emph{always} use the special read syntax formats
@c that Emacs Lisp provides for characters. These syntax formats start
@c with a question mark.
文字は、実際には整数ですから、文字の表示表現は10進数です。
また、文字の入力構文として10進数も可能ですが、
Lispプログラムでこのように文字を書くのは最悪です。
Emacs Lispに用意してある文字向けの特別な入力構文を
@emph{つねに}使うべきです。
これらの構文は疑問符で始まります。
@c The usual read syntax for alphanumeric characters is a question mark
@c followed by the character; thus, @samp{?A} for the character
@c @kbd{A}, @samp{?B} for the character @kbd{B}, and @samp{?a} for the
@c character @kbd{a}.
英数字向けの普通の入力構文は、疑問符に続けて1つの英数字を書きます。
したがって、文字@kbd{A}は@samp{?A}、文字@kbd{B}は@samp{?B}、
文字@kbd{a}は@samp{?a}と書きます。
@c For example:
たとえば、つぎのとおりです。
@example
?Q @result{} 81 ?q @result{} 113
@end example
@c You can use the same syntax for punctuation characters, but it is
@c often a good idea to add a @samp{\} so that the Emacs commands for
@c editing Lisp code don't get confused. For example, @samp{?\ } is the
@c way to write the space character. If the character is @samp{\}, you
@c @emph{must} use a second @samp{\} to quote it: @samp{?\\}.
同じ入力構文を句読点文字にも使えますが、
@samp{\}を追加して、Lispコードを編集するEmacsコマンドが混乱しないように
することがよいでしょう。
たとえば、空白文字は@samp{?\ }と書きます。
文字@samp{\}は、クォートするために2つめの@samp{\}を使う@emph{必要があり}
@samp{?\\}です。
@c @cindex whitespace
@c @cindex bell character
@cindex 白文字
@cindex ベル文字
@cindex @samp{\a}
@c @cindex backspace
@cindex バックスペース
@cindex @samp{\b}
@c @cindex tab
@cindex タブ
@cindex @samp{\t}
@c @cindex vertical tab
@cindex 垂直タブ
@cindex @samp{\v}
@c @cindex formfeed
@cindex ページ送り
@cindex @samp{\f}
@c @cindex newline
@cindex 改行
@cindex @samp{\n}
@c @cindex return
@cindex 復帰
@cindex @samp{\r}
@c @cindex escape
@cindex エスケープ
@cindex @samp{\e}
@c You can express the characters Control-g, backspace, tab, newline,
@c vertical tab, formfeed, return, and escape as @samp{?\a}, @samp{?\b},
@c @samp{?\t}, @samp{?\n}, @samp{?\v}, @samp{?\f}, @samp{?\r}, @samp{?\e},
@c respectively. Thus,
コントロールg、バックスペース、タブ、改行、
垂直タブ、ページ送り、復帰、エスケープは、
それぞれ、@samp{?\a}、@samp{?\b}、@samp{?\t}、@samp{?\n}、@samp{?\v}、
@samp{?\f}、@samp{?\r}、@samp{?\e}と書きます。
つまり、つぎのとおりです。
@example
?\a @result{} 7 ; @r{@kbd{C-g}}
@c ?\b @result{} 8 ; @r{backspace, @key{BS}, @kbd{C-h}}
@c ?\t @result{} 9 ; @r{tab, @key{TAB}, @kbd{C-i}}
@c ?\n @result{} 10 ; @r{newline, @kbd{C-j}}
@c ?\v @result{} 11 ; @r{vertical tab, @kbd{C-k}}
@c ?\f @result{} 12 ; @r{formfeed character, @kbd{C-l}}
@c ?\r @result{} 13 ; @r{carriage return, @key{RET}, @kbd{C-m}}
@c ?\e @result{} 27 ; @r{escape character, @key{ESC}, @kbd{C-[}}
@c ?\\ @result{} 92 ; @r{backslash character, @kbd{\}}
?\b @result{} 8 ; @r{バックスペース、 @key{BS}、@kbd{C-h}}
?\t @result{} 9 ; @r{タブ、 @key{TAB}、@kbd{C-i}}
?\n @result{} 10 ; @r{改行、@kbd{C-j}}
?\v @result{} 11 ; @r{垂直タブ、@kbd{C-k}}
?\f @result{} 12 ; @r{ページ送り文字、@kbd{C-l}}
?\r @result{} 13 ; @r{復帰、@key{RET}, @kbd{C-m}}
?\e @result{} 27 ; @r{エスケープ文字、@key{ESC}、@kbd{C-[}}
?\\ @result{} 92 ; @r{バックスラッシュ文字、@kbd{\}}
@end example
@c @cindex escape sequence
@cindex エスケープシーケンス
@c These sequences which start with backslash are also known as
@c @dfn{escape sequences}, because backslash plays the role of an escape
@c character; this usage has nothing to do with the character @key{ESC}.
バックスラッシュで始まる系列は
@dfn{エスケープシーケンス}(escape sequences)とも呼びます。
バックスラッシュが、エスケープ文字の役割を果たすからです。
この使い方は、文字@key{ESC}とは関係ありません。
@c @cindex control characters
@cindex コントロール文字
@c Control characters may be represented using yet another read syntax.
@c This consists of a question mark followed by a backslash, caret, and the
@c corresponding non-control character, in either upper or lower case. For
@c example, both @samp{?\^I} and @samp{?\^i} are valid read syntax for the
@c character @kbd{C-i}, the character whose value is 9.
コントロール文字は別の入力構文でも表現できます。
疑問符に続けてバックスラッシュ、カレット(@samp{^})、そして、
対応するコントロールでない文字を大文字か小文字で書きます。
たとえば、@samp{?\^I}も@samp{?\^i}も、
値が9である文字@kbd{C-i}の正しい入力構文です。
@c Instead of the @samp{^}, you can use @samp{C-}; thus, @samp{?\C-i} is
@c equivalent to @samp{?\^I} and to @samp{?\^i}:
カレットのかわりに、@samp{C-}を使ってもかまいません。
ですから、@samp{?\C-i}は、@samp{?\^I}や@samp{?\^i}と等価です。
@example
?\^I @result{} 9 ?\C-I @result{} 9
@end example
@c In strings and buffers, the only control characters allowed are those
@c that exist in @sc{ASCII}; but for keyboard input purposes, you can turn
@c any character into a control character with @samp{C-}. The character
@c codes for these non-@sc{ASCII} control characters include the
文字列やバッファ内では@sc{ASCII}のコントロール文字だけが許されますが、
キーボード入力においては@samp{C-}で任意の文字をコントロール文字にできます。
これらの非@sc{ASCII}コントロール文字の文字コードは、
対応する非コントロール文字の文字コードと
@tex
$2^{26}$
@end tex
@ifinfo
2**26
@end ifinfo
@c bit as well as the code for the corresponding non-control
@c character. Ordinary terminals have no way of generating non-@sc{ASCII}
@c control characters, but you can generate them straightforwardly using X
@c and other window systems.
のビットを含みます。
普通の端末では、非@sc{ASCII}コントロール文字を生成する手立てはありませんが、
Xウィンドウシステムや他のウィンドウシステムでは、
簡単に生成できます。
@c For historical reasons, Emacs treats the @key{DEL} character as
@c the control equivalent of @kbd{?}:
歴史的な理由で、
Emacsは@key{DEL}文字を@kbd{?}に対応したコントロール文字として扱います。
@example
?\^? @result{} 127 ?\C-? @result{} 127
@end example
@noindent
@c As a result, it is currently not possible to represent the character
@c @kbd{Control-?}, which is a meaningful input character under X, using
@c @samp{\C-}. It is not easy to change this, as various Lisp files refer
@c to @key{DEL} in this way.
その結果、今のところ、
Xウィンドウシステムのもとでは意味のある文字@kbd{Control-?}を
@samp{\C-}では表現できません。
@c For representing control characters to be found in files or strings,
@c we recommend the @samp{^} syntax; for control characters in keyboard
@c input, we prefer the @samp{C-} syntax. Which one you use does not
@c affect the meaning of the program, but may guide the understanding of
@c people who read it.
ファイルや文字列に現れるコントロール文字を表現するには、
@samp{^}構文を勧めます。
キーボード入力のコントロール文字には、@samp{C-}構文が好ましいです。
どちらを使ってもプログラムの意味には影響しませんが、
それを読む人には理解の手助けになるかもしれません。
@c @cindex meta characters
@cindex メタ文字
@c A @dfn{meta character} is a character typed with the @key{META}
@c modifier key. The integer that represents such a character has the
@dfn{メタ文字}(meta character)は、
@key{META}修飾キーを使って打った文字です。
そのような文字を表す整数は、(ほとんどの計算機では負の数になる)
@tex
$2^{27}$
@end tex
@ifinfo
2**27
@end ifinfo
@c bit set (which on most machines makes it a negative number). We
@c use high bits for this and other modifiers to make possible a wide range
@c of basic character codes.
のビットがセットされています。
上位のビットをメタや他の修飾子に用いることで、
基本となる文字コードの範囲をできるだけ大きくします。
@c In a string, the
文字列では、メタ文字を表すASCII文字には
@tex
$2^{7}$
@end tex
@ifinfo
2**7
@end ifinfo
@c bit attached to an ASCII character indicates a meta character; thus, the
@c meta characters that can fit in a string have codes in the range from
@c 128 to 255, and are the meta versions of the ordinary @sc{ASCII}
@c characters. (In Emacs versions 18 and older, this convention was used
@c for characters outside of strings as well.)
のビットを付加します。
つまり、文字列に収められるメタ文字のコードは128から255の範囲であり、
任意の@sc{ASCII}文字のメタ変種を使えます。
(Emacs 18やそれ以前では、この方式を文字列の外にある文字にも使っていた。)
@c The read syntax for meta characters uses @samp{\M-}. For example,
@c @samp{?\M-A} stands for @kbd{M-A}. You can use @samp{\M-} together with
@c octal character codes (see below), with @samp{\C-}, or with any other
@c syntax for a character. Thus, you can write @kbd{M-A} as @samp{?\M-A},
@c or as @samp{?\M-\101}. Likewise, you can write @kbd{C-M-b} as
@c @samp{?\M-\C-b}, @samp{?\C-\M-b}, or @samp{?\M-\002}.
メタ文字の入力構文には@samp{\M-}を使います。
たとえば、@samp{?\M-A}は@kbd{M-A}です。
@samp{\M-}と一緒に8進文字コードも使えますし(下記参照)、
@samp{\C-}や文字向けの他の構文も使えます。
したがって、@kbd{M-A}は@samp{?\M-A}と書いたり@samp{?\M-\101}と書けます。
同様に、@kbd{C-M-b}は@samp{?\M-\C-b}、
@samp{?\C-\M-b}、@samp{?\M-\002}と書けます。
@c The case of a graphic character is indicated by its character code;
@c for example, @sc{ASCII} distinguishes between the characters @samp{a}
@c and @samp{A}. But @sc{ASCII} has no way to represent whether a control
@c character is upper case or lower case. Emacs uses the
図形文字の大文字小文字は、その文字コードで示されます。
たとえば、@sc{ASCII}では@samp{a}と@samp{A}の文字を区別します。
しかし、@sc{ASCII}ではコントロール文字の大文字小文字を表現できません。
Emacsでは、コントロール文字を打つときに使ったシフトキーを表すために
@tex
$2^{25}$
@end tex
@ifinfo
2**25
@end ifinfo
@c bit to indicate that the shift key was used in typing a control
@c character. This distinction is possible only when you use X terminals
@c or other special terminals; ordinary terminals do not report the
@c distinction to the computer in any way.
のビットを付加します。
このような区別はX端末や他の特別な端末を使っている場合に限り可能です。
普通の端末ではこのような区別を計算機に送れません。
@c @cindex hyper characters
@c @cindex super characters
@c @cindex alt characters
@cindex ハイパー文字
@cindex スーパー文字
@cindex アルト文字
@c The X Window System defines three other modifier bits that can be set
@c in a character: @dfn{hyper}, @dfn{super} and @dfn{alt}. The syntaxes
@c for these bits are @samp{\H-}, @samp{\s-} and @samp{\A-}. (Case is
@c significant in these prefixes.) Thus, @samp{?\H-\M-\A-x} represents
@c @kbd{Alt-Hyper-Meta-x}.
Xウィンドウシステムでは、
文字に設定可能な修飾ビットが他に3つあります。
@dfn{ハイパー}(hyper)、@dfn{スーパー}(super)、@dfn{アルト}(alt)です。
これらの修飾ビットの構文は、
@samp{\H-}、@samp{\s-}、@samp{\A-}です。
(これらのプレフィックスでは、大文字小文字を区別する。)
したがって、@samp{?\H-\M-\A-x}は@kbd{Alt-Hyper-Meta-x}を表します。
@tex
%c Numerically, the
%c bit values are $2^{22}$ for alt, $2^{23}$ for super and $2^{24}$ for hyper.
数値的には、
アルトは$2^{22}$、スーパーは$2^{23}$、ハイパーは$2^{24}$のビット値です。
@end tex
@ifinfo
@c Numerically, the
@c bit values are 2**22 for alt, 2**23 for super and 2**24 for hyper.
数値的には、
アルトは2**22、スーパーは2**23、ハイパーは2**24のビット値です。
@end ifinfo
@c @cindex @samp{?} in character constant
@c @cindex question mark in character constant
@c @cindex @samp{\} in character constant
@c @cindex backslash in character constant
@c @cindex octal character code
@cindex @samp{?}、文字定数
@cindex 文字定数、@samp{?}
@cindex 疑問符、文字定数
@cindex 文字定数、疑問符
@cindex @samp{\}、文字定数
@cindex 文字定数、@samp{\}
@cindex バックスラッシュ、文字定数
@cindex 文字定数、バックスラッシュ
@cindex 8進数字文字定数
@cindex 文字定数、8進数字
@c Finally, the most general read syntax for a character represents the
@c character code in either octal or hex. To use octal, write a question
@c mark followed by a backslash and the octal character code (up to three
@c octal digits); thus, @samp{?\101} for the character @kbd{A},
@c @samp{?\001} for the character @kbd{C-a}, and @code{?\002} for the
@c character @kbd{C-b}. Although this syntax can represent any @sc{ASCII}
@c character, it is preferred only when the precise octal value is more
@c important than the @sc{ASCII} representation.
文字向けのもっとも汎用の入力構文では、
文字コードを8進数や16進数で表現します。
8進数を使うには、順に、
疑問符、バックスラッシュ、(3桁までの)8進数字文字コードを書きます。
たとえば、@samp{?\101}は文字@kbd{A}を表し、
@samp{?\001}は文字@kbd{C-a}を表し、@code{?\002}は文字@kbd{C-b}を表します。
この構文で任意の@sc{ASCII}文字を表現できますが、
@sc{ASCII}での表現よりも8進数値で表現することが重要な場合に限るべきです。
@example
@group
?\012 @result{} 10 ?\n @result{} 10 ?\C-j @result{} 10
?\101 @result{} 65 ?A @result{} 65
@end group
@end example
@c To use hex, write a question mark followed by a backslash, @samp{x},
@c and the hexadecimal character code. You can use any number of hex
@c digits, so you can represent any character code in this way.
@c Thus, @samp{?\x41} for the character @kbd{A}, @samp{?\x1} for the
@c character @kbd{C-a}, and @code{?\x8e0} for the character
16進数を使うには、順に、疑問符、バックスラッシュ、
@samp{x}、16進数字文字コードを書きます。
16進数の桁数はいくつでもよいので、任意の文字コードを表現できます。
したがって、@samp{?\x41}は文字@kbd{A}を表し、
@samp{?\x1}は文字@kbd{C-a}を表し、
@code{?\x8e0}は
@iftex
@c @samp{@`a}.
文字@samp{@`a}表します。
@end iftex
@ifinfo
@c @samp{a} with grave accent.
グレーブアクセント付きの文字@samp{a}を表します。
@end ifinfo
@c A backslash is allowed, and harmless, preceding any character without
@c a special escape meaning; thus, @samp{?\+} is equivalent to @samp{?+}.
@c There is no reason to add a backslash before most characters. However,
@c you should add a backslash before any of the characters
@c @samp{()\|;'`"#.,} to avoid confusing the Emacs commands for editing
@c Lisp code. Also add a backslash before whitespace characters such as
@c space, tab, newline and formfeed. However, it is cleaner to use one of
@c the easily readable escape sequences, such as @samp{\t}, instead of an
@c actual whitespace character such as a tab.
特別なエスケープの意味を持たないどんな文字のまえにもバックスラッシュを
付けることができ、しかも、無害です。
したがって、@samp{?\+}は@samp{?+}に等価です。
ほとんどの文字のまえにバックスラッシュを付ける理由はありません。
しかしながら、Lispコードを編集するEmacsコマンドが混乱しないように、
@samp{()\|;'`"#.,}のいずれかの文字のまえにはバックスラッシュを付けるべきです。
空白、タブ、改行、ページ送りのような白文字のまえにも
バックスラッシュを付けるべきです。
しかしながら、タブなどの実際の白文字のかわりに、
@samp{\t}などの読みやすいエスケープシーケンスを使ったほうが明確です。
@node Symbol Type
@c @subsection Symbol Type
@subsection シンボル型
@c A @dfn{symbol} in GNU Emacs Lisp is an object with a name. The symbol
@c name serves as the printed representation of the symbol. In ordinary
@c use, the name is unique---no two symbols have the same name.
GNU Emacs Lispにおける@dfn{シンボル}(symbol)は、
名前を持ったオブジェクトです。
シンボル名は、シンボルの表示表現としての役割があります。
普通の使い方では、名前は一意です。
つまり、2つのシンボルが同じ名前を持つことはありません。
@c A symbol can serve as a variable, as a function name, or to hold a
@c property list. Or it may serve only to be distinct from all other Lisp
@c objects, so that its presence in a data structure may be recognized
@c reliably. In a given context, usually only one of these uses is
@c intended. But you can use one symbol in all of these ways,
@c independently.
シンボルは、変数としての役割、関数名としての役割、
あるいは、属性リストを保持する役割を果たします。
また、他のすべてのLispオブジェクトと区別するためだけの役割を
果たすこともあり、データ構造の内部にそのようなシンボルが存在することを
正確に認識できます。
ある場面においては、普通、これらのうちの1つの使い方をします。
しかし、ある1つのシンボルに対してすべての使い方をしてもかまいません。
@c @cindex @samp{\} in symbols
@c @cindex backslash in symbols
@cindex @samp{\}、シンボル内
@cindex バックスラッシュ、シンボル内
@c A symbol name can contain any characters whatever. Most symbol names
@c are written with letters, digits, and the punctuation characters
@c @samp{-+=*/}. Such names require no special punctuation; the characters
@c of the name suffice as long as the name does not look like a number.
@c (If it does, write a @samp{\} at the beginning of the name to force
@c interpretation as a symbol.) The characters @samp{_~!@@$%^&:<>@{@}} are
@c less often used but also require no special punctuation. Any other
@c characters may be included in a symbol's name by escaping them with a
@c backslash. In contrast to its use in strings, however, a backslash in
@c the name of a symbol simply quotes the single character that follows the
@c backslash. For example, in a string, @samp{\t} represents a tab
@c character; in the name of a symbol, however, @samp{\t} merely quotes the
@c letter @samp{t}. To have a symbol with a tab character in its name, you
@c must actually use a tab (preceded with a backslash). But it's rare to
@c do such a thing.
シンボル名には、どんな文字でも含められます。
ほとんどのシンボル名は、英文字、数字、@samp{-+=*/}の句読点文字で書かれます。
そのような名前では、特別な書き方は必要ありません。
名前が数に見えなければ、名前を構成する文字はなんでもよいのです。
(名前が数に見えるときには、
名前の先頭に@samp{\}を書いてシンボルであると強制する。)
@samp{_~!@@$%^&:<>@{@}}の文字はあまり使われませんが、
これらにも特別な書き方は必要ありません。
これら以外の文字は、バックスラッシュでエスケープすれば、
シンボル名に含められます。
文字列におけるバックスラッシュの用法とは対照的に、
シンボル名におけるバックスラッシュは、直後の1文字をクォートするだけです。
たとえば、文字列では@samp{\t}はタブ文字を表しますが、
シンボル名では英文字@samp{t}をクォートするだけです。
名前にタブ文字を含むシンボルを書くには、
実際に(バックスラッシュの直後に)タブを使う必要があります。
しかし、そのようなことをするのは皆無でしょう。
@c @cindex CL note---case of letters
@cindex CLに関した注意−−大文字小文字の区別
@quotation
@c @b{Common Lisp note:} In Common Lisp, lower case letters are always
@c ``folded'' to upper case, unless they are explicitly escaped. In Emacs
@c Lisp, upper case and lower case letters are distinct.
@b{Common Lispに関した注意:}@code{ }
Common Lispでは、小文字を明示的にエスケープしない限り、
小文字をつねに大文字に『変換』する。
Emacs Lispでは、大文字と小文字を区別する。
@end quotation
@c Here are several examples of symbol names. Note that the @samp{+} in
@c the fifth example is escaped to prevent it from being read as a number.
@c This is not necessary in the sixth example because the rest of the name
@c makes it invalid as a number.
シンボル名の例をいくつかあげましょう。
5番目の例の@samp{+}は、数として読まれるのを防ぐために
エスケープしてあることに注意してください。
6番目の例では、これは必要ありません。
なぜなら、名前の残りの部分が数としては不正だからです。
@example
@group
@c foo ; @r{A symbol named @samp{foo}.}
@c FOO ; @r{A symbol named @samp{FOO}, different from @samp{foo}.}
@c char-to-string ; @r{A symbol named @samp{char-to-string}.}
foo ; @r{@samp{foo}という名前のシンボル}
FOO ; @r{@samp{FOO}という名前のシンボル、@samp{foo}とは別}
char-to-string ; @r{@samp{char-to-string}という名前のシンボル}
@end group
@group
@c 1+ ; @r{A symbol named @samp{1+}}
@c ; @r{(not @samp{+1}, which is an integer).}
1+ ; @r{@samp{1+}という名前のシンボル}
; @r{(整数の@samp{+1}ではない)}
@end group
@group
@c \+1 ; @r{A symbol named @samp{+1}}
@c ; @r{(not a very readable name).}
\+1 ; @r{@samp{+1}という名前のシンボル}
; @r{(読みにくい名前)}
@end group
@group
@c \(*\ 1\ 2\) ; @r{A symbol named @samp{(* 1 2)} (a worse name).}
\(*\ 1\ 2\) ; @r{@samp{(* 1 2)}という名前のシンボル(悪い名前)}
@c @c the @'s in this next line use up three characters, hence the
@c @c apparent misalignment of the comment.
@c +-*/_~!@@$%^&=:<>@{@} ; @r{A symbol named @samp{+-*/_~!@@$%^&=:<>@{@}}.}
@c ; @r{These characters need not be escaped.}
+-*/_~!@@$%^&=:<>@{@} ; @r{@samp{+-*/_~!@@$%^&=:<>@{@}}という名前のシンボル}
; @r{これらの文字をエスケープする必要はない}
@end group
@end example
@node Sequence Type
@c @subsection Sequence Types
@subsection シーケンス型
@c A @dfn{sequence} is a Lisp object that represents an ordered set of
@c elements. There are two kinds of sequence in Emacs Lisp, lists and
@c arrays. Thus, an object of type list or of type array is also
@c considered a sequence.
@dfn{シーケンス}(sequence)とは、
要素の順序集合を表現するLispオブジェクトです。
Emacs Lispには2種類のシーケンス、つまり、リストと配列があります。
したがって、リスト型や配列型のオブジェクトは、
シーケンス型でもあると考えられます。
@c Arrays are further subdivided into strings, vectors, char-tables and
@c bool-vectors. Vectors can hold elements of any type, but string
@c elements must be characters, and bool-vector elements must be @code{t}
@c or @code{nil}. The characters in a string can have text properties like
@c characters in a buffer (@pxref{Text Properties}); vectors and
@c bool-vectors do not support text properties even when their elements
@c happen to be characters. Char-tables are like vectors except that they
@c are indexed by any valid character code.
配列はさらに、文字列、ベクトル、文字テーブル、ブールベクトルに細分されます。
ベクトルは任意の型の要素を保持できますが、
文字列の要素は文字である必要があり、
ブールベクトルの要素は@code{t}か@code{nil}のいずれかである必要があります。
バッファ内の文字のように、
文字列内の文字はテキスト属性を持てます(@pxref{Text Properties})。
ベクトルとブールベクトル
@footnote{【訳注】ベクトルのみの誤り?}
では、それらの要素が文字であったとしても、
テキスト属性を扱えません。
文字テーブルは、ベクトルに似ていますが、正しい文字コードで添字付けします。
@c Lists, strings and the other array types are different, but they have
@c important similarities. For example, all have a length @var{l}, and all
@c have elements which can be indexed from zero to @var{l} minus one.
@c Several functions, called sequence functions, accept any kind of
@c sequence. For example, the function @code{elt} can be used to extract
@c an element of a sequence, given its index. @xref{Sequences Arrays
@c Vectors}.
リスト、文字列、および、その他の配列型は別のものですが、
それらには重要な類似性があります。
たとえば、それらすべてに長さ@var{l}があり、
それらのすべての要素は0から@var{l}@minus{}1で添字付けできます。
シーケンス関数と呼ばれるいくつかの関数は、
任意のシーケンス型を扱います。
たとえば、シーケンスから指定した添字の要素を取り出すには、
関数@code{elt}を使います。
@xref{Sequences Arrays Vectors}。
@c It is generally impossible to read the same sequence twice, since
@c sequences are always created anew upon reading. If you read the read
@c syntax for a sequence twice, you get two sequences with equal contents.
@c There is one exception: the empty list @code{()} always stands for the
@c same object, @code{nil}.
一般には、同一のシーケンスを二度読み取ることは不可能です。
というのは、読むたびにつねに新たにシーケンスを作成するからです。
シーケンスの入力構文を二度読むと、
同じ内容の2つのシーケンスを得ることになります。
1つ例外があります。
空リスト@code{()}は、つねに同じオブジェクト@code{nil}を表します。
@node Cons Cell Type
@c @subsection Cons Cell and List Types
@subsection コンスセルとリスト型
@c @cindex address field of register
@c @cindex decrement field of register
@c @cindex pointers
@cindex レジスタの番地フィールド
@cindex レジスタの減数フィールド
@cindex ポインタ
@c A @dfn{cons cell} is an object that consists of two pointers or slots,
@c called the @sc{car} slot and the @sc{cdr} slot. Each slot can
@c @dfn{point to} or hold to any Lisp object. We also say that the ``the
@c @sc{car} of this cons cell is'' whatever object its @sc{car} slot
@c currently points to, and likewise for the @sc{cdr}.
@dfn{コンスセル}(cons cell)とは、
@sc{car}スロットおよび@sc{cdr}スロットと呼ばれる
2つのポインタから成るオブジェクトです。
各スロットは、任意のLispオブジェクトを@dfn{指す}ことができます。
また、現在@sc{car}スロットが指しているオブジェクトがなんであれ、
『コンスセルの@sc{car}は』といったいい方をします。
@sc{cdr}についても同様です。
@c A @dfn{list} is a series of cons cells, linked together so that the
@c @sc{cdr} slot of each cons cell holds either the next cons cell or the
@c empty list. @xref{Lists}, for functions that work on lists. Because
@c most cons cells are used as part of lists, the phrase @dfn{list
@c structure} has come to refer to any structure made out of cons cells.
@dfn{リスト}(list)はコンスセルが連なったものであり、
各コンスセルの@sc{cdr}スロットは、
後続のコンスセルを指すか空リストを指します。
リストに作用する関数については、@xref{Lists}。
ほとんどのコンスセルは、リストの一部分として使われるので、
@dfn{リスト構造}(list structure)という用語は、
コンスセルから成る任意の構造のことを意味します。
@c The names @sc{car} and @sc{cdr} derive from the history of Lisp. The
@c original Lisp implementation ran on an @w{IBM 704} computer which
@c divided words into two parts, called the ``address'' part and the
@c ``decrement''; @sc{car} was an instruction to extract the contents of
@c the address part of a register, and @sc{cdr} an instruction to extract
@c the contents of the decrement. By contrast, ``cons cells'' are named
@c for the function @code{cons} that creates them, which in turn is named
@c for its purpose, the construction of cells.
@sc{car}や@sc{cdr}という名称は、Lispの歴史に由来します。
最初のLispは@w{IBM 704}で動作していました。
この計算機では、ワードを2つの部分、『番地』(address)部分、
『減数』(decrement)部分と呼ばれるものに分けていました。
@sc{car}はレジスタの番地部分の内容(Contents of Address Register)を
取り出す命令であり、
@sc{cdr}はレジスタの減数部分の内容(Contents of Decrement Register)を
取り出す命令でした。
一方、『コンスセル』という名称は、
これらを作成する関数@code{cons}からきています。
この関数名は、その目的、セルを作る(construction of cells)からきています。
@c @cindex atom
@cindex アトム