�� ����
������������ �i���i��� �����), ���� ���� ������, ���i� �������� (i���������),
�� ���� ���������. ��� ������ ��������-�������-����������-�����i ����������
���� �i��������� � ����i ����, ���� ���������� �� ����� ������� (SYSTEM), ���
������� ������ � muLisp i ������ ��������� ������i��i� ������i.
��'���� �i���
��'���� ������ ���� ���� ���i�: �����i �� �������i. �����i ��'���� �����������
�������. �� ����i� �i��������� ������� �� �����. ������ �� ���� ���������� �
�����. muLisp �� ����i���� �������i �� �����i �i����, � ���������� ��i ������i
�i���� � �����i. ���� � �����i�����, ����� ���� �� ����� ������� �� ����������.
����, �� i ������, �� i�'�. I������ ����i� � ����� ������i�. DOG, CAT,
qw1232df, -32 � �������� i������ ����i�. ������� T �� NIL ����� � �i��i
����i����� �����������: ���� ���������� �i����i��� ���i��i �������� i����� ��
�������i. �i ������� ������ ������i ���� ���� �i������� ��������. �� �� �����
��������������� � �����i i��� i���� ��'���i� �i���.����� �� ���i��i ��������
T �� NIL � �����������, ��i i��i ������� - ��i�����.
��������� ��'������ ����� � ������. ������ �i����� ���� (���i �������� ���
������i� ������) ��� �i���� ��'���i�, ������ � ���� ���� ���� �� �������, ���
i ���������. (FACE, LOOK, NOSE) � �������, ���� ���������� � ����� ����i�.
������i� ������ ����������� NIL = (), ���� � ������. ������ ����������
�i�i����, ���� ���� �������� � �������. I����� �������� ��� ������ �
�i���������, ���������: (7 (8 9) TR).
��� ���� ��� �������� ����� �� ������������, ����� ��� ��������� �������� (').
���� ����� ��������� ��� ���������, �� ����������� ���� ��������. ��� �������
�������� muLisp ��������� ������� ����� ��������� �i� ���. ��������� �����
������ � ���� �����, ���� ����� ������� �������� �� ���������. ����� �i���
������ ������� ��� ����i Q ����������� ���� ���� �������� - Q, � ��� ����i
'Q - ���� ������ Q. �������� ����� ������� - �� ���������� ����� QUOTE, ���
���������� � �������i� ����i: '����� = (QUOTE �����). QUOTE �����
��������������� �� ����i����� �����i� � ����� ����������, ��� �i���� � ��� ��
������, � ������� �� ��������� ��� ��������.
������ ��������� �����i��� �������i�, ������ � �����, ����� ����� ���������
��������. ���������: '(ice, hen) ��� '((one 1) (two 2) (three 3)).
����i����i �����i� �i���
Lisp �� �'��� ����i������ �����i�. ������ �����i� �� ��������� ������:
(name arg1 arg2 ...), �� name - i�'� �����i�, arg1,arg2,... - �� ���������.
1. (CAR list) - ������ ������.
2. (CDR list) - ��i�� ������.
3. (CONS object list) - ��'������� (����������i�) ��'���� �i �������.
4. (EQL atom1 atom2) - ���i������ ���� ����i�.
5. (ATOM object) - �����i��� �� � object ������.
CAR �� CDR ����������� ������������ �����i���, ���i���� ���� ����� ������i���
�������� ��� ��������� ������� ��'����. ����������� �����i� (CAR list) ������
� ������ ������� ������ list, ���� �i� ��������i� i NIL � i����� �������.
����������� �����i� (CDR list) � ������ list ��� ������� ��������, ���� list
�i����� �i��� ������ �������� i NIL � i����� �������.
$ (CAR '(q w e r t y)) $ (CDR '(q w e r t y)) $ (CAR '((one 1) (two 2)))
q (w e r t y) (one 1)
$ (CAR '()) $ (CDR '(tree)) $ (CDR '((q w)) $ (CDR '())
NIL NIL NIL NIL
�� ��������� �����i� CAR, CDR ����� ��������� �� ����� ������� ����-���� ����
�i������� ��� ����. ������������ ��������������� �����i�, ��i � ����i���i���
CAR �� CDR. I���� ����� �����i� ����������� �� C i ���i�������� �� R, � �i�
���� ����������� ����i����i��� �i��� A �� D (��� �� �i���� 4 �i��� �
����i���i� muLisp), ��� ����� ���� ����������.
$ (CAR (CDR (CDR '(q w e r t y)))) $ (CAR (CDR (CDR '((q 1) (w 2) (e 3)))))
$ (CADDR '(q w e r t y)) $ (CADDR '((q 1) (w 2) (e 3)))
e (e 3)
$ (CDR (CDR '((q 1) (w 2) (e 3)))) $ (CAR (CAR '((q w))))
$ (CDDR '((q 1) (w 2) (e 3))) $ (CAAR '((q w)))
((e 3)) q
�����i� ������������ CONS ��������������� ��� ������� ��'���� �� ��������
������. ��'��� ���� ��������, ��� ������� ������. ���� ������ �������� ��
������, �� �i� ��������� �i���� NIL.
$ (CONS '(q w) '(r (t y))) $ (CONS apple '(q w)) $ (CONS '(q w) '(r t y)) $ (CONS 5)
((q w) r (t y)) (apple q w) ((q w) r t y) (5)
���� ����������� ������ (CONS object list) ���� new, �� �����������
(CAR new) ���� object, � ����������� (CDR new) ���� list.
$ (CAR (CONS '(q w) '(r (t y)))) $ (CAR (CONS apple NIL))
(q w) apple
�����i�� ���i������ � EQL. ���� ���i���� �������� ������� �� ������� ���������,
��i ����'������ ������i ���� �������, �� ������� �������� i����� (�) ���
�������i (NIL).
$ (EQL 'qw 'qw) $ (EQL (CAR '(q w)) q) $ (EQL (CAR '(q,w) NIL)
T T F
��� ��������i ������� �� �i��i ����� ������ ���������: �� � ����� ��'���
������? �� ������� ���i�� �������� ATOM. �i� ������� �, ���� ��'��� �
������ i NIL � i����� �������. ������i� ������ NIL � ������.
$ (ATOM qwerty) $ (ATOM '(q w e)) $ (ATOM '())
T F T
$ (ATOM '(q)) $ (ATOM 3)
F T
�����i� �����������
�����i� ����������� �������������� ��� ������� ������� ���������� ��i����.
�� ��� �i���������:
1. (SET symbol object) - ���i�� ������� ��'�����
2. (SETQ sym1 form1 sym2 form2 ... ) - ����i����� ����� �����i� SET
3. (PSETQ sym1 form1 sym2 form2 ... ) - ����i����� ����� �����i� SET
4. (POP symbol) - ������� ������� ����� (������)
5. (PUSH symbol form) - ����� ������ symbol � ���� (������) form.
������i� ���i�� �������� ������� ��i��������� �� ��������� �����i� SET. ����
�������� ������� symbol �������� object, ��� ��'��� symbol � object.
��� ���������� ���i��� SET ' ������ SETQ (SET Quote). �� ��������� �����i�
��������� ������� ������ ��������.
$ (SET 'fox '(a s d)) $ (SETQ vowels '(a e i o u)))
$ (SETQ fox '(a s d)) $ (SETQ vowels (CONS 'y vowels))
(a s d) (y a e i o u)
�����i� SETQ �������� ��i�������� ���i�� ������� ���i����� �������� � ���i�
������i: (SETQ a 1 b 2 c 3). ��� ����� ��i�� ����������� ����i����� ��i��
�������. �i��� ����� ��������� ������� a ����� 1, b - 2, c - 3.
�����i� PSETQ i�������� �� �����i� SETQ �� �������� ����, �� ��i �����
��i������� �� ����, �� ������ ��i�����i ����-��i ���i��. ���i�������� �� ��
�������i. �������� ������� Sym ������������� ����� Val(Sym).
$ (SETQ w 1 e 2) Val(w)=1, Val(e)=2 $ (SETQ w 1 e 2) Val(w)=1, Val(e)=2
$ (SETQ w e e w) Val(w)=2, Val(e)=2 $ (PSETQ w e e w) Val(w)=2, Val(e)=1
��� ��������i ������i� ���i�� �����i��� ����i����� ������ �� ��������.
��� �����i ������� mulLsp ��������� ������� ������� � �i� ���. ���� �� �������
DOG, �� i ����������� ���� DOG. �������� ��������i DOG �������� CAT:
(SET 'DOG 'CAT). ����������� ������ (SET DOG 'HEN) ���� HEN, ��� �������� HEN
�� ����������� �� ������� DOG, � �������� ������� DOG, ����� ������� CAT.
�������� ������� DOG ���������� ��� ��i��. ���������� ��������� ��������� �i�:
(SET 'car 'road) Val(car) = road Val(road) = road
(SET car flower) Val(car) = road Val(road) = flower Val(flower) = flower
(SET 'car car) Val(car) = road Val(road) = flower Val(flower) = flower
(SET road car) Val(car) = road Val(road) = flower Val(flower) = road
(SET 'road 4) Val(car) = road Val(road) = 4 Val(flower) = road
(SET road 'hen) �������, 4 �� � �������� i �� ���� �������� i��i ��������
POP ������� ������ ������ (������� �����) i ���i��� �������� symbol �� ���� ��i��.
PUSH ����� � ���� �� ��i��� ���� �������� �� ��i������� ����.
$ (SETQ a '(q w e r t)) Val(a) = (q w e r t)
$ (POP a) Val(a) = (w e r t)
$ (PUSH 'n a) Val(a) = (n w e r t)
��������
I ���i��� �������
1. ���������� ������, ���� �����i����� ��������� ������:
�) �i����� ��� �i�������, ������ � ���� �� ��� �����, � ������ - ������ �����;
�) �i����� ��� �����, ��� ���� ��i�� ���i���� NIL;
�) �i����� ��� �������i ��'����, i ���� ���� ������ ������� � ������;
�) ������ ������ �i����� ��� �����, � �i���i��� ����i� � ������ ������ ���i���� 3.
�) �i����� �i���� ������i� ������, � ������ ������ �� � ������.
�) ������ �� ��i�� � �������� � �i���������.
2. �� ���� � ���������i ���������� ��������� �����i�:
a) (CONS NIL NIL) �) (ATOM (CDR '(q NIL)))
�) (CONS (CAR '((q w))) (CDR '((q (w e))))) �) (EQL NIL 'NIL)
�) (EQL (CDR '(q)) NIL) �) (PUSH nil nil) (EQL (ATOM '(q w)) nil)
3. ������� �����, ���� �� �� ��i����� ������ ��������� �� ������� ���������.
a) ����: (A, B, C), (X, Y, Z). ����������: (A, Y, Z).
�) ����: ((one 1) (two 2 3) (three 4 5 6)) ����������: 5.
�) ����: ((q w (r) t) y) ����������: NIL
�) ����: ((q (w (e) r) t) y) ����������: ((q) w (e) r)
�) ����: (q (w e)) ����������: w, e
�) ����: (q w) ����������: (((q w)))
4. ������� �����, ���� ���� �������� ��i���� ����� �� �����, ���� ����
������� ���������, �������������� ���� ���i��i �������.
�) ����: one=1, two=2, three=3 �������: one=2, two=3, three=1.
�) ����: Val(house)=sky, Val(sky)=house �������: Val(sky)=sky, Val(house)=house
�) ����: Val(lst)=(q) �������: Val(lst)=(((q) q) q)
�) ����: Val(q)=w, Val(w)=s �������: Val(q)=(s s)
5. �� �������������� ���������i �����i�:
�) ����: Val(a) = (q w e r t y) �������: Val(a) = q
�) ����: Val(a) = (q w e r t y) �������: Val(a) = (w)
6. ������� �������� ��i� ��i���� �i��� ��������� ��������� �i�:
(SET one 'two)
(SETQ two 'one)
(SET three two four 'one two three)
(PSETQ four one three 'four two three one four)
II ���i��� �������
1. ���������� ������, ���� �����i����� ��������� ������:
�) ������ �� ��i�� ������ ���i���� NIL.
�) ����� �������i� ������ � ��� ������, ��� ������� ��������� ��'����.
�) ����� �������i� ������ ���� ����i�, ��i�� ������ �� � ������i� �������,
��� ��i�� ������ � ������i� �������.
�) ��i �������� ������ - �����, ��� ���� ������ �� ����i� �������� - �������,
������ �� ��������� - �� �������, � �'���� - �� ������ i �� �����.
2. �� ���� � ���������i ���������� ��������� �����i�:
�) (CADR '(nil (nil)))
�) (CONS (ATOM '(ATOM '(q w e))) '(NIL))
�) (CONS '(q w) '(e r) '(t y))
�) (EQL (ATOM (CDR '(nil))) (CADDDR '(w e r t y))
�) (EQL (CONS nil) (CADR '(q (nil) w)))
�) (CDR '(CDR (CONS '(q) '(w))))
3. ������� �������� ��i� ��i���� �i��� ��������� ��������� �i�:
�) (SETQ one two two three three one)
(SET one three)
(PSETQ one two two three three one)
�) (SETQ a '(a b) b '(b c) c '(c a))
(SET (CADR b) (CONS a))
(SETQ a (CADR a) b (CADR b) c (CADR c))
����������: ���� a = (a b), b = (b c), c = ((a b)),
�� �i��� (SETQ a (CADR a)) ���� a = b, b = (b c), c = ((a b)),
� �i��� (SETQ a (EVAL (CADR a))) ���� a = (b c), b = (b c), c = ((a b)).
(EVAL a) - ��������� �������� ������� �, ��� ��������� ���� ��������.