Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lisp / Filp / LISP5

.TXT
Скачиваний:
19
Добавлен:
15.06.2014
Размер:
15.68 Кб
Скачать

NULL [object] Function

…б«Ё <®ЎмҐЄв> Ґбвм Їгбв®© бЇЁб®Є, дг­ЄжЁп ў®§ўа й Ґв ’,
Ё­ зҐ - NIL. Џгбв®© (Ё«Ё ­г«Ґў®©) бЇЁб®Є § ¬Ґ­пҐвбп бЁ¬ў®«®¬ NIL.
ЏаЁ¬Ґа:
(DEFUN NULL (OBJ)
(EQ OBJ NIL) )

(NULL NIL) --> T
(NULL ()) --> T
(NULL '(NIL)) --> NIL





ZEROP [object] Function

…б«Ё <®ЎмҐЄв> Ґбвм жЁда  0, дг­ЄжЁп ў®§ўа й Ґв ’, Ё­ зҐ 0-
NIL.
ЏаЁ¬Ґа:
(DEFUN ZEROP (OBJ)
(AND (NUMBER OBJ) (-OBJ 0)) )

(ZEROP 12) --> NIL
(ZEROP 0) --> T
(ZEROP -41) --> NIL
(ZEROP 3.1416) --> NIL
(ZEROP -7/3) --> NIL
(ZEROP 'DOG) --> NIL





PLUSP [object] Function

…б«Ё <®ЎмҐЄв> Ґбвм Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, дг­ЄжЁп ў®§ўа й Ґв
’, Ё­ зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN PLUSP (OBJ)
(AND (NUMBER OBJ) (> OBJ 0)) )

(PLUSP 12) --> T
(PLUSP 0) --> NIL
(PLUSP -41) --> NIL
(PLUSP 3.1415) --> T
(PLUSP -7/3) --> NIL
(PLUSP 'DOG) --> NIL





MINUSP [object] Function


…б«Ё <®ЎмҐЄв> - ®ваЁж вҐ«м­®Ґ 楫®Ґ, дг­ЄжЁп ў®§ўа й Ґв
’, Ё­ зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN MINUSP (OBJ)
(AND (NUMBER OBJ) (< OBJ 0)) )

(MINUSP 12) --> NIL
(MINUSP 0) --> NIL
(MINUSP -41) --> T
(MINUSP 3.1415) --> NIL
(MINUSP -7/3) --> T
(MINUSP 'DOG) --> NIL




ODDP [object] Function

…б«Ё <®ЎмҐЄв> Ґбвм ­ҐзҐв­®Ґ 楫®Ґ, дг­ЄжЁп ў®§ўа й Ґв ’,
Ё­ зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN ODDP (OBJ)
(AND (INTEGERP OBJ) (NOT (ZEROP (LOGAND OBJ 1)))) )

(ODDP 12) --> NIL
(ODDP 0) --> NIL
(ODDP -41) --> T
(ODDP 3.1315) --> NIL
(ODDP -7/3) --> NIL
(ODDP 'DOG) --> NIL
















EVENP [object] Function

…б«Ё <®ЎмҐЄв> Ґбвм зҐв­®Ґ 楫®Ґ, дг­ЄжЁп ў®§ўа й Ґв ’, Ё­ зҐ
- NIL.
ЏаЁ¬Ґа:
(DEFUN EVENP (OBJ)
(AND (INTEGERP OBJ) (ZEROP (LOGAND OBJ 1))) )

(EVENP 12) --> T
(EVENP 0) --> T
(EVENP -41) --> NIL
(EVENP 3.1416) --> NIL
(EVENP -7/3) --> NIL
(EVENP 'DOG) --> NIL




5.5 ”г­ЄжЁЁ Є®¬Ї а в®а 


”г­ЄжЁЁ Є®¬Ї а в®а  - нв® г⢥তҐ­Ёп, ЁбЇ®«м§гҐ¬лҐ ¤«п
ба ў­Ґ­Ёп ®ЎмҐЄв®ў ¤ ­­ле muLISP. ‚ᥠ®­Ё вॡгов 2-е Ё«Ё Ў®«ҐҐ
 аЈг¬Ґ­в®ў Ё, §  ЁбЄ«о祭ЁҐ¬ дг­ЄжЁЁ MEMBER, ў®§ўа й ов §­ зҐ­ЁҐ
’ Ё«Ё NIL.



EQ [object1,object2] Function
NEQ [object1,object2] Function


…б«Ё <®ЎмҐЄв1> Ё¤Ґ­вЁзҐ­ <®ЎмҐЄвг2>, (EQ ®ЎмҐЄв1 ®ЎмҐЄв2)
ў®§ўа й Ґв ’, Ё­ зҐ - NIL. ”г­ЄжЁп (NEQ ®ЎмҐЄв1 ®ЎмҐЄв2)
нЄўЁў «Ґ­в­  дг­ЄжЁЁ (NOT (EQ ®ЎмҐЄв1 ®ЎмҐЄв2)).
EQ Їа®ўҐапҐв ­  Ё¤Ґ­вЁз­®бвм 2 бў®Ёе  аЈг¬Ґ­в  (в.Ґ. ®­Ё
гЄ §лў ов ­  ®¤Ё­ Є®ўлҐ ®ЎмҐЄвл ¤ ­­ле ў Ї ¬пвЁ). ’.Є. бЁ¬ў®«л Ё
¬ «лҐ жҐ«лҐ зЁб«  (в.Ґ. жҐ«лҐ зЁб« , ¬Ґ­миҐ 65536 Ї®  Ўб®«ов­®©
ўҐ«ЁзЁ­Ґ) ®ЇаҐ¤Ґ«повбп г­ЁЄ «м­®, EQ пў«пҐвбп е®а®иЁ¬ бЇ®б®Ў®¬
®ЇаҐ¤Ґ«Ґ­Ёп, пў«повбп «Ё 2 бЁ¬ў®«  Ё«Ё 2 ¬ «ле 楫ле зЁб« 
а ў­л¬Ё ¤агЈ ¤агЈг.
ЏаЁ¬Ґа:
(DEFUN EQ (OBJ1 OBJ2)
(= (LOCATION OBJ1) (LOCATION OBJ2)) )

(EQ 'Alice 'Alice) --> T
(SETQ FOO '(A B C)) --> (A B C)
(EQ FOO '(A B C)) --> NIL
(SETQ BAR FOO) --> (A B C)
(EQ FOO BAR) --> T
(EQ 7 (+ 3 4)) --> T
(EQ 100000 100000) --> NIL



EQL [object1,object2] Function
NEQL [object1,object2] Function


…б«Ё <®ЎмҐЄв1> Ё¤Ґ­вЁзҐ­ <®ЎмҐЄвг2> Ё«Ё Ґб«Ё ®Ў   аЈг¬Ґ­в 
пў«повбп зЁб« ¬Ё б ®¤Ё­ Є®ў¬Ё §­ зҐ­Ёп¬Ё, в® (EQL ®ЎмҐЄв1
®ЎмҐЄв2) ў®§ўа й Ґв ’, Ё­ зҐ - NIL. (NEQL ®ЎмҐЄв1 ®ЎмҐЄв2)
нЄўЁў «Ґ­вҐ­ дг­ЄжЁЁ (NOT (EQL ®ЎмҐЄв1 ®ЎмҐЄв2)).
’.Є. Ў®«миЁҐ жҐ«лҐ зЁб«  (в.Ґ. жҐ«лҐ зЁб« , Ў®«миҐ 65536 Ї®
 Ўб®«ов­®© ўҐ«ЁзЁ­Ґ) Ё ¤а®Ў­лҐ зЁб«  ­Ґ ®ЇаҐ¤Ґ«повбп г­ЁЄ «м­®,
EQL Ї® ба ў­Ґ­Ёо б EQ ¬®¦Ґв Ўлвм Ј®а §¤® нд䥪⨢­ҐҐ ЇаЁ
®ЇаҐ¤Ґ«Ґ­ЁЁ нЄўЁў «Ґ­в­®бвЁ 2-е зЁбҐ«. ЂаЈг¬Ґ­вл-­Ґ в®¬л пў«повбп
нЄўЁў «Ґ­в­л¬Ё в®Ј¤  Ё в®«мЄ® в®Ј¤ , Є®Ј¤  ®­Ё гЄ §лў ов ­ 
®¤Ё­ Є®ўлҐ cons-л ў Ї ¬пвЁ.
ЏаЁ¬Ґа:
(DEFUN EQL (OBJ1 OBJ2)
((AND (NUMBERP OBJ1) (NUMBERP OBJ2))
(= OBJ1 OBJ2) )
(= (LOCATION OBJ1) (LOCATION OBJ2)) )

(EQL 'Alice 'Alice) --> T
(EQL 7 (+ 3 4)) --> T
(EQL 100000 100000) --> T
(EQL '(A B) '(A B)) --> NIL




EQUAL [object1,object2] Function


…б«Ё <®ЎмҐЄв1> нЄўЁў «Ґ­вҐ­ <®ЎмҐЄвг2>, дг­ЄжЁп ў®§ўа й Ґв
’, Ё­ зҐ - NIL.
EQUAL Їа®ўҐапҐв ­  нЄўЁў «Ґ­в­®бвм 2 бў®Ёе  аЈг¬Ґ­в . …б«Ё
®¤Ё­ Ё«Ё ®Ў   аЈг¬Ґ­в  пў«повбп  в®¬ ¬Ё, EQUAL а Ў®в Ґв
 ­ «®ЈЁз­® дг­ЄжЁЁ EQL. „ў   аЈг¬Ґ­в - в®¬  ­ е®¤пвбп ў ®в­®иҐ­ЁЁ
EQUAL, Ґб«Ё ®­Ё пў«повбп Ё§®¬®ад­л¬Ё бвагЄвга ¬Ё ¤ ­­ле: Ё
car-ўҐвўЁ, Ё cdr-ўҐвўЁ Ґбвм EQUAL. „ўҐ EQUAL-бвагЄвгал ¤ ­­ле ЇаЁ
ЇҐз вЁ Ё§®Ўа ¦ овбп ®¤Ё­ Є®ў®. ’.Є. EQL а Ў®в Ґв Ўлбв॥, нвг
дг­ЄжЁо «гзиҐ ЁбЇ®«м§®ў вм ў¬Ґбв® EQUAL в ¬, Ј¤Ґ Ё§ўҐбв­®, зв® Ї®
Єа ©­Ґ© ¬ҐаҐ ®¤Ё­ Ё§  аЈг¬Ґ­в®ў пў«пҐвбп  в®¬®¬.
ЏаЁ¬Ґа:
(DEFUN EQUAL (OBJ1 OBJ2)
((ATOM OBJ1)
(EQL OBJ1 OBJ2) )
((ATOM OBJ2) NIL)
((EQUAL (CAR OBJ1) (CDR OBJ2))
(EQUAL )CDR OBJ1) (CDR OBJ2)) ) )

(EQUAL 'A 'A) --> T
(EQUAL '(A B C) '(A B C)) --> T
(EQUAL '(A B C) '(C B A)) --> NIL





MEMBER [object, list,test] Function
MEMBER-IF [test,list] Function


(MEMBER ®ЎмҐЄв бЇЁб®Є вҐбв) ўлЇ®«­пҐв «Ё­Ґ©­л© Ї®ЁбЄ ў
<бЇЁбЄҐ> н«Ґ¬Ґ­в , ¤«п Є®в®а®Ј® ЇаЁ§­ Є ба ў­Ґ­Ёп б <®ЎмҐЄв®¬> Ї®
<вҐбвг> ­Ґ а ўҐ­ NIL. …б«Ё <вҐбв>- аЈг¬Ґ­в Ґбвм NIL Ё«Ё ­Ґ § ¤ ­,
MEMBER ЁбЇ®«м§гҐв EQL-вҐбв.
(MEMBER-IF вҐбв бЇЁб®Є) ўлЇ®«­пҐв Ї®ЁбЄ ў <бЇЁбЄҐ> н«Ґ¬Ґ­в ,
¤«п Є®в®а®Ј® ЇаЁ§­ Є Їа®ўҐаЄЁ Ї® <вҐбвг> Ґбвм ­Ґ NIL. „«п ®ЎҐЁе
дг­ЄжЁ©, Ґб«Ё н«Ґ¬Ґ­в, 㤮ў«Ґвў®апойЁ© <вҐбвг>, ­ ©¤Ґ­, ўл¤ Ґвбп
еў®бв <бЇЁбЄ >, ­ зЁ­ п б ¤ ­­®Ј® н«Ґ¬Ґ­в . €­ зҐ ў®§ўа й Ґвбп
NIL.
ЏаЁ¬Ґа:
(DEFUN MEMBER (OBJ LST TEST)
((ATOM LST) NIL)
( ((NULL TEST)
(SETQ TEST 'EQL) )
((FUNCALL TEST OBJ (CAR LST)) LST)
(MEMBER OBJ (CDR LST) TEST) )

(MEMBER 'A '(B C D)) --> NIL
(MEMBER 'A '(B A D)) --> (A D)
(MEMBER-IF 'NUMBERP '(A B 3 C (-7))) --> (3 C (-7))
(MEMBER-IF 'MINUSP '(A B 3 C (-7))) --> NIL




=[n1,n2,...,nM] Function

…б«Ё n1 а ўҐ­ nM,   n2 а ўҐ­ n3,...,   nM-1 а ўҐ­ nM, в® (=
n1 n2... nM) ў®§ўа й Ґв ’, Ё­ зҐ - NIL. ”г­ЄжЁп ўл§лў Ґв
ЇаҐалў ­ЁҐ "ЌҐзЁб«®ў®©  аЈг¬Ґ­в", Ґб«Ё Є Є®©-«ЁЎ®  аЈг¬Ґ­в ­Ґ
пў«пҐвбп зЁб«®¬.
ЏаЁ¬Ґа:
(DEFUN = LST
((NULL LST))
((NULL (CDR LST)))
((AND (NUMBER (CAR LST)) (NUMBER CADR LST)))
((numerically equal (CAR LST) (CADR LST))
(APPLY '=(CDR LST)) ) )
((BREAK (LIST '=(CAR LST) ((CADR LST))
'"Nonnumeric argument")
(APPLY '= (CDR LST)) ) )

(= 5 9) --> NIL
(= 4 4 -7) --> NIL
(= 3 3.0) --> T
(= 0.75 6/8) --> T




/= [n1,n2,...,nM] Function


…б«Ё n1 ­Ґ а ў­® n2, n2 ­Ґ а ў­® n3,...,nM-1 ­Ґ а ў­® nM, в®
дг­ЄжЁп ў®§ўа й Ґв ’, Ё­ зҐ - NIL. …б«Ё Є Є®©-«ЁЎ®  аЈг¬Ґ­в
­Ґ пў«пҐвбп зЁб«®¬, ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ
"ЌҐзЁб«®ў®©  аЈг¬Ґ­в".
Ћв¬ҐвЁ¬, зв® Ґб«Ё /= ў®§ўа й Ґв ’, нв® §­ зЁв, зв® ­Ґв ­Ё
®¤­®© Ї ал ᬥ¦­ле а ў­ле  аЈг¬Ґ­в®ў. Ћ¤­ Є® нв® ¬®¦Ґв Ўлвм Ё ў
⮬ б«гз Ґ, Є®Ј¤  ¤ў   аЈг¬Ґ­в  а ў­л, ­® ­Ґ пў«повбп ᬥ¦­л¬Ё.
ЏаЁ¬Ґа:
(DEFUN /= LST
((NULL LST))
((NULL (CDR LST)))
((AND (NUMBER (CAR LST)) (NUMBER (CADR LST)))
((= (CAR LST) (CADR LST)) NIL)
(APPLY '/= (CDR LST)) )
((BREAK (LIST '/= (CAR LST) (CADR LST))
'Nonnumeric Argument") NIL)
(APPLY '/= (CDR LST)) )

(/= 5 9) --> T
(/= 4 4 -7) --> NIL
(/= 3 3.0) --> NIL
(/= 0.75 6/8) --> NIL
(/= 6 -2 6) --> T






< [n1,n2,...,nM] Function


…б«Ё n1<n2, n2<n3, ... , nM-1<nM, в® дг­ЄжЁп ў®§ўа й Ґв ’,
Ё­ зҐ - NIL. …б«Ё Є Є®©-«ЁЎ®  аЈг¬Ґ­в ­Ґ пў«пҐвбп зЁб«®¬,
в® ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ "ЌҐзЁб«®ў®©  аЈг¬Ґ­в".
“⢥তҐ­ЁҐ < 㤮Ў­® ЁбЇ®«м§®ў вм ў ⮬ б«гз Ґ, Є®Ј¤  ­г¦­®
®ЇаҐ¤Ґ«Ёвм, «Ґ¦Ёв «Ё зЁб«® ў­гваЁ ¤ ­­®Ј® Ё­вҐаў « ; ЇаЁ н⮬ <
ўл§лў Ґвбп б 3-¬п  аЈг¬Ґ­в ¬Ё: зЁб«®¬ Ё Ја ­Ёж ¬Ё Ё­вҐаў « .
Ќ ЇаЁ¬Ґа, ­Ё¦Ґ Ї®Є § ­®, Є Є ®ЇаҐ¤Ґ«Ёвм, пў«пҐвбп «Ё §­ зҐ­ЁҐ
CHAR зЁб«®¬, § Ј« ў­®© Ё«Ё Їа®ЇЁб­®© ЎгЄў®©:

(< 47 (ASCII CHAR) 58)
(< 64 (ASCII CHAR) 91)
(< 96 (ASCII CHAR) 123)

ЏаЁ¬Ґа:
(DEFUN < LST
((NULL LST))
((NULL (CDR LST)))
((AND (NUMBER (CAR LST)) (NUMBER (CADR LST)))
((less than (CAR LST) (CADR LST))
(APPLY '< )CDR LST)) ) )
((BREAK (LIST '< (CAR LST) (CADR LST))
'"Nonnumeric Argument")
(APPLY '< (CDR LST)) ) )

(< 5 9) --> T
(< 4 -7) --> NIL
(< 3 3.0) --> NIL
(< 3/5 2/3) --> T





> [n1,n2,...,nM] Function

…б«Ё n1>n2, n2>n3, ... , nM-1>nM, в® дг­ЄжЁп ў®§ўа й Ґв ’,
Ё­ зҐ - NIL. …б«Ё Є Є®©-«ЁЎ®  аЈг¬Ґ­в ­Ґ пў«пҐвбп зЁб«®¬, в®
ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ "ЌҐзЁб«®ў®©  аЈг¬Ґ­в".
ЏаЁ¬Ґа:
(DEFUN > LST
((NULL LST))
((NULL (CDR LST)))
((AND (NUMBER (CAR LST)) (NUMBER (CADR LST)))
((greater than (CAR LST) (CADR LST))
(APPLY '> (CDR LST)) ) )
((BREAK (LIST '> (CAR LST) (CADR LST))
'"Noninteger Argument")
(APPLY '> (CDR LST)) ) )

(> 5 9) --> NIL
(> 4 -7) --> T
(> 3 3.0) --> NIL
(> 3/5 2/3) --> NIL




<= [n1,n2,...,nM] Function


…б«Ё n1<=n2, n2<=n3, ..., nM-1<=nM, в® дг­ЄжЁп ў®§ўа й Ґв
’, Ё­ зҐ - NIL. …б«Ё Є Є®©-¤ЁЎ®  аЈг¬Ґ­в ­Ґ пў«пҐвбп зЁб«®¬,
в® ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ "ЌҐзЁб«®ў®©  аЈг¬Ґ­в".
ЏаЁ¬Ґа:
(DEFUN <= LST
((NULL LST))
((NULL (CDR LST)))
((AND (NUMBERP (CAR LST)) (NUMBERP (CADR LST)))
((> (CAR LST) (CADR LST)) NIL)
(APPLY '<= (CDR LST)) )
((BREAK (LIST '<= (CAR LST) (CADR LST))
'"Nonnumeric Argument")
(APPLY '<= (CDR LST)) ) )

(<= 5 9) --> T
(<= 4 -7) --> NIL
(<= 3 3.0) --> T
(<= 3/5 2/3) --> T




>= [n1,n2,...,nM] Function


…б«Ё n1>=n2, n2>=n3, ..., nM-1>=nM, в® дг­ЄжЁп ў®§ўа й Ґв ’,
Ё­ зҐ - NIL. „ ­­ п дг­ЄжЁп ЈҐ­ҐаЁагҐв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ
"ЌҐзЁб«®ў®©  аЈг¬Ґ­в", Ґб«Ё Є Є®©-«ЁЎ®  аЈг¬Ґ­в ­Ґ пў«пҐвбп
зЁб«®¬.
ЏаЁ¬Ґа:
(DEFUN >= LST ... )

(>= 5 9) --> NIL
(>= 4 -7) --> T
(>= 3 3.0) --> T
(>= 3/5 2/3) --> NIL











Соседние файлы в папке Filp