������ 3
��������� �ᒺ��� �����
����������� �ᒺ����� ����� � �������, ����� �� �����. muLisp �� ����� ������� ����������,
���������, ����������� �� ������� ��� �ᒺ���. �� �������� ������������ ����-�� �������
�ᒺ��� �����. �� ���� ������� ������, muLisp �� ��� ���� �����: ����� �� ������. �����
���������� �� ������� �� �����. ������ � ���������� �ᒺ���, �� ����� ���� ��������
��������� � ������ ������. ���� �������� �� ��������� �����.
������ � �ᒺ���� �����, � ���� �������� 4 ��������, ����� � ���� � ���������� ��:
� PRINT - ���. �� ���������� ����� ASCII �������, �� ��������� ����� ������� ����������
������ ��� ��������� ��������-���������. PRINT - ��� �� ���� ���� ������. ����� ��������
�� �������: ���� ������� ���� �� ����� �� 65536 �������.
� ������� ��������. ��������� ������� ���� ���� ����-���� �ᒺ�� �����, ���� ���������� �
������ �����. ���� � ���������� ˳��� ������ PRINT-��� �������, �� �� ����� ���� ����
��������. ������� �������� �������� �� CAR - ������� �������.
� ������ ������������. ³� ������ �������� ������������ �������, �������������� �� ������,
���� ����� �� ������: (���1 ��������1 ���2 ��������2 ... ���N ��������N). ��� ������������
������� ������ ������������ � �������� (������� NIL). ���� ����� ������ �� ���������
������� ������������ �� ���������. ��������� �� CDR - ������� �������.
� ���������� �������. ��� ��������� ������� � muLisp ��� ������� ������� "�������
�����������". ���������� ������� ���������� ��� �� ��������� ������� ����, ��� �� D-���.
�������� ����� �������� ����� �������� � ��������� ��������� ������� ����� (GETD ������).
SYMBOLP � �������, ��� ������� ������. ���� ������� �, ���� �������� � �������� � NIL � ������������ �������.
$ (SYMBOLP �XYZ) $ (SYMBOLP 41)
T NIL
$ (SYMBOLP �(q w)) $ (SYMBOLP �())
NIL T
� ������ ˳�� (���� common.lsp) ��������� ������� SYMBOL-VALUE, ��� ������� ��������
�������, �� ������� SYMBOL-PLIST, ��� ������� ���� ������ ������������ �������.
(DEFUN SYMBOL-VALUE (SYM) (DEFUN SYMBOL-PLIST (SYM)
((SYMBOLP SYM) (CAR SYM) ) ) ((SYMBOLP SYM) (CDR SYM) ) )
������������ �������� ��������� � SETF, ��� ��������� � common.lsp. ���� �������� ����� �
������ ����� �������: (SETF <������ �����> <��������>). ����� ������� SETF �����
����������� ������� ������ ������� SET �� SETQ.
(SETQ x y) �� (SETF x y)
(SET x y) �� (SETF (SYMBOL-VALUE x) y)
�������, �����, ����, �������� �� ������� �����, ������, ������ � ����� ��������
���������� ���� � ˳��. ��������� Escape-�������� � \. ������������� �scape-�������� � |.
���������� ����� ������ ����������������� � PRINT-������ �������, ��� ��� ����� �����
���� ����� ������� \, ��� ���� ����� ����� � |. ������ |q w e| �� |sym(bol| � ���������.
��� ������������ ���� \ �� | � �������� ��������� ������� ����� ���� \. ���� ���������� ��
����� ������, ���� ������ ���������� �����, �� �� ���������� � �������������
escape-��������. ��������� ����� *PRINT-ESCAPE* ����������� ���� ������� �� ���������
escape-�������. ���� ���� ������� NIL, �� escape-������� �� ����� �� ����������. �������
����� " ������ ���� ����� |. ���������� �������� (�������� *PRINT-ESCAPE*=T):
$ (SETQ |sym(bol| 3) $ (SETQ a |q w e|) $ s\a $ s\\a
$ |sym(bol| $ a sa |s\\a||
3 |q w e|
$ (SETQ *PRINT-ESCAPE* NIL) $ (SETQ a |q w e|) $ (SETQ "s\\a" 2)
$ s\\a $ a $ |s\\a|
s\a q w e 2
����� � ����� ���������� �ᒺ����. ���� ���� ���� ����� ��� ��������. ֳ�� ����� ���������
�� ������������ ����, ����� ���� ���� ������ ���� ����. �� ��������� �������� ��� �����
������� �� ��� ��� (�� 65536) �� ����� ���. ������� ��������� ����� ������ � ���� �����,
�� ���� ����������� ����� ��� ������� ��������. ������ �������� �������������� ����� ��
�ᒺ�� �����:
� ������� ���������. �� � �������� �� ���� �����. ³� ��������� �� CAR-������� �����.
� ����. ³� ������ ���� � ��������� �������, �� �������������� ��� �����:
������� �䒺��� $ (CDR 5.6) $ (CAR 5.6)
���� NIL T MACRO 5.6
������ LAMBDA NLAMBDA $ (CDR 1212) $ (CDR -121212)
������� MACRO SPECIAL NIL NLAMBDA
�������� �������� ����� �������� �� CDR-������� �����.
� �������. ���� ����� � ����� �����, �� ��� ������� ������ �������� ������. ���� ����� �
������ ����, �� ������� ��������� ������ ������� ����� ������� �����. ���� ����� ������� �
������� ������ �������� �� ���� ���������, ���� ���������� ������� ���� ����� (��������
��� �䒺����).
� ������. ���� ����� ���� ����, �� �������� �������� � ���������� �� ���� ���� ����
(���-璺������). ���� ����� ������ ����, �� �� ���� ������ �������� �� ��������� ��������
����. ���� ����� ������� � ������� ������ �������� �� ���� ���������, ���� ������� ����
�������� ����� ������.
������� ��������� EQL ���� ����������������� ��� ��������� �����. ��� ���� ���������
�������� ��� ��������� ������� ����� � �������:
$ (EQL -3 4) $ (EQL 4 4) $ (= 2 2 2) $ (= 2 2 3 2)
NIL T T NIL
������ ����� ������ ���������� � ����������� ������ �� � �������� ������. �������� �����
*PRINT-POINT* ������� �� ��� ��������� �������� �����. ���� ���� ������� NIL, �� ��
������ ����� ��������� �� ��������� � �������� ������. ���� *PRINT-POINT* = n, �� ������
����� ���������� � n ������� ���� ��������� ����. ��� �������� ��������� ����� ����
����������� �����������.
$ 3/4 $ 3/9 $ 5/1 $ 12/9
3/4 1/3 5 4/3
�������� ����� *PRINT-BASE* ������� �� ������ ������� ��������, � ��� ������������
�����. ���� �������� ���� ����� � ����� �� �������� � �������� �� 2 �� 32, �� ����� �
���� ������ ������� ��������, ������ muLisp ������ � ��������� ������ ��������.
$ (SETQ ten 10) $ (SETQ *PRINT-BASE* 2) $ 234
$ (SETQ *PRINT-BASE* 16) $ ten 11101010
$ ten 1010
0A
��������, ��� ������� ��� �����, � INTEGERP. ���� ������� �, ���� �� �������� � �����
������ �� NIL ������. ������� NUMBERP ������� �����.
$ (INTEGERP 100) $ (INTEGERP 3.5)
T NIL
$ (NUMBERP 3.5) $ (NUMBERP 4/5)
T T
����� � �������� ������ ������ � ��������:
$ (SYMBOLP "23") $ (NUMBERP "23")
T NIL
������� �� ����� � �������. �������� ������ ���������� ������: (ATOM 3.5), (ATOM "23"),
(ATOM �APPLE).
���� � ���������� �ᒺ����, ���� ����� �� ����-�� ��� ���� �ᒺ��� �����.. ³� �� � ������.
����� ���� ���� �� ������� ������������ CONS. ����� ���� ������- ����� � CAR- �� CDR-
��������. ���� ����� ��������� �������� �����. ���� X � Y �ᒺ��� �����, �� ����� (X . Y) �
������, CAR-������� ����� � X, � CDR-������� � Y.
$ (SETQ A (cons X Y)) $ (CAR A) $ (CDR A) $ (CDR �(R . S))
$ A X Y S
(X . Y)
�� ��������� ��������� ������� ����� �������� ��������� ����-����� �ᒺ���. ������ (x1 x2 x3)
� �������� �����, �� ������� �� ��������� CDR- ��������. ���� CAR- �������� �������� ��
�������� ������. CDR- ������� ���������� ����� ����� �� NIL. �������� ������ ����� ������ �
������ (x1 . (x2 . (x3 . NIL))). ������� READ ������� ������ ������� �� ������� �������
������, ��� � ��������. ������� ��������� PRINT �������� �ᒺ��� � ���������� �������.
$ (SETQ a �(q . (w . nil)) $ a $ (CONSP �(q . w)) $ (CONSP (q w))
(q w) (q w) T T
������� (CONSP obj) ������� �����. ������ �� � ���������� �ᒺ����, � � �������� �����.
����, ����������� ������������ ������� CONSP �� ������ ���� �.
������� ������������
����������, �� ����� ��������� � ������� ������������ �������. ���� ����� �� �����������
����������, ��������� �� ��������. ���������� ������� � �����������, ����� ���������� �
������� ����� ��������, ���� ���� �� ������ ���� ������ �� ��������. ������������ �������
� ����� ����� �� ����� ������� �� ������ �� ������ ������������.
������� ������������ ������� ������������� �������. CDR - ������� ������� ����� �� ������
������������. ����� � ��������� ����� ���� ���������� ������ �������� ��������� ��� �����.
1. (PUT ������ ���� �ᒺ��). � ������ ������������ <�������> ��������� ��������
�ᒺ��� �������� �� ��������� ����.
$ (PUT �capital �usa �washington) $ (SETQ capital �world)
$ (PUT �capital �germany �bonn) $ (PUT �world �ocean �atlantic)
$ (PUT �capital �england �london)
$ (CDR �capital)
((ENGLAND . LONDON) (GERMANY . BONN) (USA . WASHINGTON))
$ (CDR capital)
((ocean . atlantic))
$ (CAR �capital) $ capital
world world
2. (GET ������ ����). ������� �������� ����������, ��� ������� �������
�������� �� ��������� ����. ���� ������ ��������� �� ����, �� ����������� NIL. ����
����� capital �� ����������, �� �� ���� ������ � ������������ �������, ��:
$ (GET �capital �england) $ (GET 'capital 'germany)
london bonn
3. (REMPROP ������ ����). ��������� � ������ ������������ ������� ����������,
��� ������� �����. ����������� ����� �������� ����������, ���� ���� ��������, �� NIL
� ������. ����� ������ capital �� ��� ��������� ����������.
(REMPROP �capital �germany)
bonn
(REMPROP �capital �usa)
washington
(CDR �capital)
((england . london))
������� ����������
������� ���������� � �� ����������, �� ���������������� ��� ���������� ��� �������������
�ᒺ��� ����� muLisp. ֳ ������� ����� ����� ���� ��������, � ���������� ������ ��������.
���� ���������� �ᒺ��, ���� ���� ���� ������� ���������. �� ��� ���������� ���� �������
����������: SYMBOLP, INTEGERP, NUMBERP, ATOM, LISTP, NULL. ���������� ����.
(ZEROP obj). ������� �, ���� obj � ����� 0.
(PLUSP obj). ������� �, ���� obj � ������� ���� �����.
(MINUSP obj). ������� �, ���� obj � �䒺��� ���� �����.
(ODDP obj). ������� �, ���� obj � ������� ���� �����.
(EVENP obj). ������� �, ���� obj � ����� ���� �����.
������� (ASCII sym) ������� ASCII-��� ������� sym. ������� (ASCII num)
������� ������, ASCII ��� ����� ������� ����� num. ��� ����, ��� ���������, �� �
������ sym ������, ����� ����������� �������: (< (ASCII �a) (ASCII sym) (ASCII �z)).
������� muLisp �� �������� ��� �� ����� �����, �� (ASCII �s) = (ASCII �S) ��� ����-�����
������� s. ������� ISCHAR ������� �����. ��� ����������� ASCII ���� �������, ��
���������� �����, ��������� ��������������� ��������� Escape-������.
$ (DEFUN ISCHAR (char) $ (ASCII �f) $ (ASCII 70)
(<= (ASCII �a) (ASCII char) (ASCII �z)) ) 70 F
$ (ASCII �\9) $ (ASCII 57)
57 \9
�������� ������� ����� ��������� ����������� ������� �� �����.
(ALPHA-CHAR-P obj) � ������� T, ���� obj � �����.
(NUMERIC-CHAR-P obj) � ������� T, ���� obj � �����.
(ALPHANUMERICP obj) � ������� T, ���� obj � ����� ��� �����.
$ (ALPHA-CHAR-P W) $ (ALPHA-CHAR-P \3) $ (ALPHA-CHAR-P ~)
T NIL NIL
$ (NUMERIC-CHAR-P W) $ (NUMERIC-CHAR-P \3) $ (NUMERIC-CHAR-P ~)
NIL T NIL
$ (ALPHANUMERICP W) $ (ALPHANUMERICP \3) $ (ALPHANUMERICP ~)
T T NIL
���������, �� ������ ������� (� � ) � ������.
��������
1. ���������, �� ���������� ������ ���� �:
| �) ����� ����� | �) �������� �� �䒺���� ����� �����, �� ����������
|
| �) ������� | ����� ����, ������� ���� ������� �����
|
| �) �䒺���� �������� ����� | �) �䒺���� ������ ����� �����
|
2. �� ��������� ���������� �ᒺ��� ����� ��������:
�) ������������ ������ ������ ������ 3, ������ ����� � ���������.
�) ������ � ���������� ������� ���������� 3, ���������� ����� � �����.
3. �������� �������, ��� �� ������� ������� ���� ��������� ���������:
�) �(q w e r t y) �> (q (w (e (r (t (y))))))
�) �(q w e r t y �> ((((((y) t) r) e) w) q)
�) �(q w e r t y) �> ((q) (w) (e) (r) (t) (y))
�) �(q w e r t y) �> ((q w) (e r) (t y))
4. �������� �������, ��� �� ������� ���� ���� � �������� 3 � ������� ���������, ����
������� ������.