����i� 4

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

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

����i������� ��������� �����i��� � ���������, �i��i�����, �������� �� �i�����. � ���i ������������� �i�� ���� � n-������, ����� �i���i��� ���i� ��������i� ����������. ��������� �������� �����i� ���������:

1. (+   ... ).  3. (*   ... )
2. ( -   ... )  4. (/   ... )
�����i� ��������� ������� ���� ���� ��������i�. �����i� �i��i����� ������� �i����� ������� ��������� �� ���� ��i� i���� ��������i�. �����i� �������� ������� ������� ���� ��������i�. �����i� �i����� ������� ������ �i� �i����� ������� ��������� �� ������� i���� ��������i�.
$ (+ 2 4 6 7)	$ (- 20 3 5 6)	$ (* 2 4 6)	$ (/ 24 2 2 3)
19		6		48		2
�����i� ��i������� �� ��������� ����� ��������� ������������ ������:
1. (ADD1 n). ������� ��������, ��� �� ������� �i���� �� ��������.
2. (SUB1 n). ������� ��������, ��� �� ������� ����� �� ��������.
3. (INCQ sym n) ��i���� �������� ������� sym �� ����� n.
4. (DECQ sym n) ������ �������� ������� sym �� ����� n.

���� �����i� ��������� (�i��i�����) ������i ��������� ��� ��������i�, �� ������� ����������� �� ������i: ���������� �i���i��� ��������i�. ���� � �����i� INCQ ��� DECQ �������� ���� �������� - ������, �� ��i������� (���������) �������� ������� �i��������� �� �������. ���i� ����, �� �����i� INCQ �� DECQ ���������� ��������� ����������� �i�, �������� ������i�, ��i ����������� �� ��� �� ���������, ��i�������.
$ (ADD1 6)	$ (SUB1 10)	
7		9                   
$ (SETQ S 10)	$ (INCQ S 14)	$ (DECQ S 4)
10		24		30
�����i� MIN �� MAX ���������� ������ � �i����i��� �i�i������� (������������) ���������.
1. (MIN   ... ).	$ (MIN 12 3  45  67)	$ (MAX 1 2 5 3)
2. (MAX   ... ).	3			5
������i ������ � �i��i ����������� � ����i���i� ����i. ����� 3 * 5 + 5 * 7 ��� ���������� ����� ������ � ������i (+ (* 3 5) (* 5 7)), ����� (3 + 6) * 7 - � ������i (* (+ 3 6) 7).

�����i� ���i������ ����� �� �i���� ����� n ��������i�.
1. ( < n1 n2 ... nM) ������� i�����, ���� n1 < n2 < ... < nM.
2. ( > n1 n2 ... nM) ������� i�����, ���� n1 > n2 > ... > nM.
3. ( /= n1 n2 ... nM) ������� i�����, ���� i������ ���� � ��� �����, ��i �� ���i������ ���� ������.

�� �����i� ���i������ ����� �i��������� <= , = �� >=.
$ (< 2 4 6)	$ (>= 5 3 3 2)	$ ( /= 4 4 5)
T		T		T
$ (< 6 6 8 15)	$ (<= 6 6 8 15)	$ ( /= 4 4 4)
NIL		T		NIL

1. �����i� ����������

(TRUNCATE m n), (ROUND m n), (CEILING m n) (FLOOR m n)
�i �����i� ���������������� ��� ���������� �������� ����� �� �i���. TRUNCATE ������ ���������� �� �������� �i���� � �������� ����. ROUND ������ ���������� �� �������� �i���� �� �������� �� m/n. CEILING ������ ���������� �� ��������� �i���� �� �����i� ���i, FLOOR - �� ����i� ���i. ������ ����-��� �����i� � ����� ����������� (f m n) ���i��������� ������� �����i� � ����� ����������: (f (/ n m)), �� f - ����-��� � ��������� �������� �����i�.
$ (TRUNCATE 6/4)  $ (TRUNCATE -6/4)  $ (CEILING 9 4)	$ (CEILING -9 4)
1		  -1		     3			-2

$ (FLOOR 6 4)	$ (FLOOR -6 4)	$ (FLOOR 6/4)	$ (FLOOR -6/4)
1		-2		1		-2

2. �����i� �����i

(REM m n), (MOD m n), (DIVIDE m n)
����i����� �����i� REM ������� ������ �i� �i����� ����� m �� n. �����i� MOD ������ �� REM, ��� ������� ������ �����i. ���� (TRUNCATE m n) ������� q, � (REM m n) ������� r, �� m=q*n+r. �����i� (DIVIDE m n) ������� ����, CAR ����� ���i���� �����i, � CDR - �����i �i� �i����� m �� n.
$ (REM 6 4)	$ (DIVIDE 7 2)	$ (REM -6 4)	$ (MOD 6 4)
2		(3 . 1)		-2		2

3. ���� �����

(SIGNUM n)
������� �������� -1, 0 ��� 1 ���� n �i����i��� �i�'����, 0, ��� �������.

4. ������ �����

(ABS n) - ������ ����� n.

5. ��������� �� ���������

(NUMERATOR n), (DENOMINATOR n) - ��������� �� ��������� ����� n.
$ (signum -5/3)	$ (abs -5/3)	$ (numerator 10/8)	$ (denominator 10/8 )
-1		5/3		5			4

6. ���i���i ���i��i �����i�

(LOGAND n1 n2 ... nM), (LOGIOR n1 n2 ... nM), (LOGXOR n1 n2 ... nM), (LOGNOT n).
$ (LOGAND 5 7 3)	$ (LOGIOR 4 2 1)	$ (LOGXOR 5 2 3)   $ (LOGNOT 6)
1			7			4		    -7

7. �����i �����i�

(NOT ��'���), (AND �����1 �����2 ... �����N), (OR �����1 �����2 ... �����N).
$ (AND (EQL 'as 'as) (< 2 4))	$ (OR NIL (< 4 56))	$ (NOT (EQL 'd 'g))
T				T			T

8. ����.

(SHIFT m n) - ���� ����� m �� n �i�i�.
$ (SHIFT 3 1)	$ (SHIFT 3 -1)	$ (GCD 24 66 600)	$ (LCM 24 66 600)
6		1		6			6600

9. ���, ���.

(GCD n1 n2 ... nM), (LCM n1 n2 ... nM).
�i �����i� ��������� �i����i��� ����i����� ��i����� �i����� M ����� �� �������� ��i���� ������.

�p��������i �����i

������ 1. ������ lst �� 100 �������i�, ��i ���i������ 0 ��� 1. �������� �����i� (CHANGE01 lst), ��� ������� ������, � ����� ��i �������� 0 ���i���i �� 1, � 1 - �� 0. �����i��� ���i��� ������������ �������� ��������� ����������� �i� X := 1 - X.
(DEFUN CHANGE01 (lst)
        ((NULL lst) NIL)
        (CONS (- 1 (CAR lst)) (CHANGE01 (CDR lst)))  )
������ 2. ��i���� a �� b �������i �����. �������� �����i� � ������ ����� (�� ��������� �� �����i�), � ���������i ��� ��i��i ���i������� ����� ����������. ��������������� �����i��i ��i��i �������������.
$ (SETQ a 2 b 3)				// a = 2, b = 3
$ (SETQ a (+ a b) b (- a b) a (- a b))		// a = 3, b = 2
������ 3. �i����, �� lst - ������, ���� �i����� �������� ����i����i��� �����. �����i� (NUM lst) ������� ����������� �i���i��� �i���� ����� � �����.
(DEFUN NUM (lst)
        ((NULL (CDR lst)) 1)
        ((/= (CAR lst) (CADR lst)) (+ 1 (NUM (CDR lst))))
        (NUM (CDR lst))  )
������ 4. ������ lst1 �� lst2 �i����� ������ ��������i ����i�������i �����. ������ �i���i��� ��i����� �������i� � ��� �������. ������ ��i��� ��������� ������� ���i������� O(K+L), �� K �� L - ������� �����i� lst1 �� lst2 �i����i���.
(DEFUN COMELEMENT (lst1 lst2)
        ((OR (NULL lst1) (NULL lst2)) 0)
        ((< (CAR lst1) (CAR lst2)) (COMELEMENT (CDR lst1) lst2))
        ((> (CAR lst1) (CAR lst2)) (COMELEMENT lst1 (CDR lst2)))
        (+ 1 (COMELEMENT (CDR lst1) (CDR lst2)))  )
� ����i irratnal.lsp �i������� ������� ���i� i����i�������� �� ��������������� �����i�. ��������� ���������������� �����i� ��������� � ���i����.

1. (EXP x) ���������� e^x
2. (EXPT x y) ����i�� x^y
3. (LOG x y) �������� logyx. ���� y �� ������, ������ ��������� �i���� e.
4. (LN x) ����������� ��������
5. (SQRT x) ���������� ���i��
6. (ISQRT x) �i�� ������� � ����������� ������
7. (SIN x) �� (ASIN x) �i��� �� ����i���
8. (COS x) �� (ACOS x) ������� �� ����������
9. (TAN x) �� (ATAN x) ������� �� ����������
10.(RANDOM n) ���������� ���������� �����, ����� �� n.

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

MuLisp ����������� ������ ����� PROGN ��� ���������� ����, ��i ��������� �i�� �����i�. ���i� ����, i������������ muLisp ����i��� � �i�i �����i� �����i COND ���������i�. �����i COND-� ������� ���������� �����i� ������������, ��������� �� �����������. ����i����i ����� ������������ �������� �� ����������� ���� � ������i ��������� �������. ���������� ����i ���������i i�������i�.

1. QUOTE ��'���. ������� ��'��� obj ��� ���� ����������. QUOTE ���� ����������������� ��� �����i����� ���������� ������� ��������, ��i ����������� �� �������� �����i�, �� ������������.
$ (SETQ a 125)
$ a		$ (QUOTE a)	$ (CAR (CONS 4 7))	$ (CAR '(CONS 4 7))
125		a		4			CONS
2. LOOP �����1 �����2 ... �����N. �������� �������� ����� � ����i������� ������� ����, ���� �� �����i������ ������� COND � ����������, �� �i���� NIL. ���������� �����i� LENGTH ���������� ������� ������. � ������� ��������� ������������� �����������, � �i���� - ������������� ���i��� ��������.
(DEFUN LENGTHr (lst)		(DEFUN LENGTH (lst)
	((NULL lst) 0)			(SETQ ct 0)
	(+ 1 (LENGTHr (CDR lst)))  	(LOOP
)					((NULL lst) ct)
					(SETQ lst (CDR lst) ct (+ 1 ct))  
					)  )
3. IF �������� [THEN] �����1 [ELSE] �����2. ���� �������� ��������� �� ���i���� NIL, �� �������� [THEN] �����, i����� �������� [ELSE] �����.
$ (IF (EQL 'r 'r)	(CAR '(q w e r t y)) (CDR '(q w e r t y)))  -  q
$ (IF (EQL 'r 'w)	(CAR '(q w e r t y)) (CDR '(q w e r t y)))  -  (w e r t y)
4. IDENTITY ��'���. ������� ��'��� ��� ������ ��i�. �� �����i� ������������� ��� ������������ ��i���� �� ��������i� � ������� �������.

5. PROGN �����1 �����2 ... �����N. ����i����� �������� ����� �� ������� ��������� ���������� �����N.

6. PROG1 �����1 �����2 ... �����N. ����i����� �������� ����� �� ������� ��������� ���������� �����1. �����i� �������������� ��� ����, ��� ������� �����i��i ��i��i ��� ���������� ���������i� � ������i ���������� i���� �����i�.
$ (SETQ a '(q w e r t y))		$ a
$ (PROG1 (CAR a) (SETQ a (CDR a)))	(w e r t y)
q
7. COND cond1 cond2 ... condN. �������� CAR ����� COND ����� ����, ���� �� �����i������ ����� ��������, �i��i��� �i� NIL, ��� ���� ��i ��������� �� ������ ��������i. � ������� ������� COND �������� CDR ������� cons - ����� � ����������, ���� �� ���i���� NIL, �� �i�� �����i�, �������������� ������ �����i� PROGN. ���� CDR - ������� COND �����, ��� �� ���i���� NIL, � ������i�, �� ����������� �������� ���������. ���� ��������i ��i ��������� �� ��i ���� ��������� NIL, �� COND ������� NIL.

8. COMMENT ��������. I����� ��� ��������� �� ������� NIL. ������� ���i� ��������� ��������i� ������������� � ��������i �����i�.

9. RETURN ��'���. ������� ��������� �����i�, ��� �i����� RETURN, ��i����� ���� �� ������� ��'��� � ���i ����� ��������.

10. RESTART ������� ��i �i�����i �����, �i����������� �i� ��������� ���������� �� i�i�i�� ���� ������� muLisp. ��i ��'���� �i� ��i�����, �����i� ����������� �� �������� ������������ ��������� ���������� ����������.

11. SYSTEM ������� ��i �i�����i �����, ������� ��������� muLisp �� ������� ��������� ������i��i� ������i.

12. EXECUTE �������� ��������� �����. ����������� ������ ������� muLisp, ���������� ��������� �������i � ��������� ������. EXECUTE ������� ��� ������ � �������� ��� NIL, ���� <��������> �� ��������.
$ (EXECUTE "command.com" "/c dir c:")
���������� ����������� �����i� 1. ������i���� ����� n ���������� ����� (����������� n!), ��� ���������� ����������� ��������� �����:
0! = 1			$ (DEFUN FACTORIAL (n)		$ (FACTORIAL 10)
N! = N*(N-1)! ���� N>0.	((ZEROP n) 1)			3628800
			(* n (FACTORIAL (- n 1)))  )
���� � ���������i� �������i ���������� ���� ������ �����, �� ���� ��������� ������������ �����. �������������� ������� ����� LOOP ����� �������� ����������� �������. �������� �����i� ���� �i��� ����������:
$ (DEFUN FACTORIAL1 (n rslt)		$ (FACTORIAL1 10)
(SETQ rslt 1)				3628800
(LOOP
         ((ZEROP n) rslt )		$ (FACTORIAL 0 a)
         (SETQ rslt (* n rslt))		1
         (SETQ n (- n 1))  )  )
2. ����i����i��� �����, ����� ������� ��� ���i���� ���i ���� ��������i�, � ����i ��� �������� ���i������ 1, ���������� ����i����i��� �i������i. N-�� ����� ����i�������i �i������i F(N) ���� ���� �������� �� ����������� ��������:
F(0)=1, F(1)=1, F(N) = F(N-1) + F(N-2).

$ (DEFUN FIBON (n)				$ (FIBON 20)
((<= n 1) 1)					10946
(+ (FIBON (- n 1)) (FIBON (- n 2)))  )
��������� ����� ����� �����i� �� � ����������, ���i���� ��� ���������� N-��� ����� �i������i �����i��� ��������� (N-2) ����� �i������i ��i�i, (N-3) - ����i i ��� ���i. ��������� �����i� FIB � ������ �����������, ������i ��� � ���� ��� ������� �����i� ������i ���i������� �i����i��� F(0) �� 0).
$ (DEFUN FIB (n f1 f2)			$ (FIB 20 1 0)
((ZEROP n) f1)				10946
(FIB (- n 1) (+ f1 f2) f1)  )

��������

1. ��������� �����i� MIN, MAX, INCR, DECR ��� �����i�.
�����i� INCR (DECR) ������� i�����, ���� �������� ��������i� ����������� � ����������� (��������) �������.

2. �������� �����i�, ��� �� ������� � �i��������� ���������:
a) ���� �������i� �) �i���i��� �i������i�
�) �i���i��� �������i� �) �i������ ������

3. �������� �����i�:
a) (DIVIS x y) - ������� ������ �� ������ �i� �i����� x �� y. ��������� ��������� � ������i �����. �� ��������������� �����i� �i����� �� �����i.
�) (POW x y) - x � ������i y. ������������� ��������� � ������� ��i���� O(y) �� O(log y).
�) (SLIST n) - ������� ����� n �� �����i ��������. �� ��������� ��������� �����i� ��������� ������ ������� �����, ������� ���� ���i���� n.
�) (PERLEN n) - �� ����������� ������ n ��������� ������� ���i��� ����� 1/n.
�) (SUMFACT n) - ���� 1/0! + 1/1! + ... + 1/n!.

4. (UNITE lst1 lst2). ����� ��� �������i ������ lst1 �� lst2 � ���� ��������� ������.

5. �������� �����i�:
�) (BINARY n) - �i���i��� ����i� � ��i������� ������������i ����� n.
�) ��� �� ��� ���� ����� �� ���������� ����i��.
���(a, b) = ���(a - b, b), ���� a > b,
	    ���(a, b - a), ���� a < b,
	                a, ���� a = b.
�) ��� ���� ����� �� �����i������� ���������� ����i��.
   ���(a, b) =	���(a mod b, b), ���� a > b,
                ���(a, b mod a), ���� a < b,
	         	      a, ���� b = 0.
			      b, ���� a = 0.
�) (INVERTBIT a n) - �������� n-�� �i� ����� a.
�) (EQ2 a b c) - ����'����� ��������� �i������.
�) (SQTR a b c) - ������ ����� ���������� �� ������ ��������� (����������� ������� ������).