������ 1

���� ������������� �i��

�� ���i�� � ������i���i� ���� ������������� (��) �i������ �� ���������i, ��i ����� ����������� ������������ ��� i������������ �� �����������i ����. �i���i��� ��� �� �������i ���������������� - ����i�, �������, �������, �i, �i��������� �� ����������� ���. �� ����� ������������� ��� �i��������� �����i������i ��� ����i������i - �i��, ���� �� ���i��i ����, �i����� ������������� ����� � ������. �� �������i �� �� � ����� ������������, �����i��������� �� ���i�����. �� ���������i� ���i ����� �������� �����i������� �������� i �������.

���������� �������� ���������� � ����i�������i ��������i� �� �����i�, ��i ������� �� ����������. ��������� ����������� � ��������� ���������, �����-������, ��������� �� �����.

�����i������� �������� ���������� � ���������i ���������� �����i�. �����i�, � ���� �����, ������ ��������� i��i �����i�. ���������� ���������� � ������� ����� �����i�. ����� �����i������� ������������� �� �� �������� �� �����i� �������i ���������. �������i ���������� ��i��������� �� ��������� ������i�, ��� � �������� ������� �����i��������� �������������.

muLisp ������ �� ����'����i � ������i���� �������� MS-DOS ��� PC-DOS. �������� mulisp.com � i�������������� �� muLisp. muLisp � �������� ��, �� �����i �����i������i ������ ��� ������� �������� �����, ��������� ������������. muLisp � ���������� ��, ��� ���������� ��� ������� �����i�.

(Lisp - List Processing). ����-��� ��������� ����� � ��'�����.

������ � �i���� ������ ������ � ��������� �������������: ���������� ������� ����� (�i� ����'������ ������� ���i��������� �������� �� ���� ������������ �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, ��� ��'��� symbolobject. ��� ���������� ���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) - ��������� �������� ������� �, ��� ��������� ���� ��������.