������ 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 � ������� ���������, ���� ������� ������.