
Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
NSUBSTITUTE [new,old,list,test] Function
NSUBSTITUTE-IF [new,test,list] Function
Њ®¤ЁдЁжЁагп cons-л ўлб®Є®Ј® га®ўп <бЇЁбЄ >, (NSUBSTITUTE
®ўл© бв ал© бЇЁб®Є вҐбв) § ¬Ґй Ґв <®ўлҐ> н«Ґ¬Ґвл вҐ
<бв алҐ> н«Ґ¬Ґвл <бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї®
<вҐбвг> ®в«ЁзҐ ®в NIL.…б«Ё <вҐбв>- аЈг¬Ґв Ґбвм NIL Ё«Ё Ґ
§ ¤ , NSUBSTITUTE ЁбЇ®«м§гҐв EQL-вҐбв.
(NSUBSTITUTE-IF ®ўл© вҐбв бЇЁб®Є) § ¬Ґй Ґв <®ўлҐ>
н«Ґ¬Ґвл <бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг>
®в«ЁзҐ ®в NIL.
ЏаЁ¬Ґа:
(DEFUN NSUBSTITUTE (NEW OLD LST TEST)
((ATOM LST) LST)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OLD (CAR LST))
(RPLACA LST NEW)
(NSUBSTITUTE NEW OLD (CDR LST) TEST) )
(NSUBSTITUTE NEW OLD (CDR LST) TEST) )
(NSUBSTITUTE 5 2 '(4 2 (3 . 2) 4)) --> (4 5 (3 . 2) 4)
(NSUBSTITUTE 'CANNIBALS 'NOUN '(NOUN LIKE TO EAT NOUN))
--> (CANNIBALS LIKE TO EAT CANNIBALS)
NSUBST [new,old,object,test] Function
NSUBST-IF [new,test,object] Function
Њ®¤ЁдЁжЁагп cons-л <®ЎмҐЄв >, (NSUBST ®ўл© бв ал© ®ЎмҐЄв
вҐбв) § ¬Ґй Ґв <®ўлҐ> ўбҐ Ї®¤ўла ¦ҐЁп <®ЎмҐЄв >, ¤«п Є®в®але
ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг> ®в«ЁзҐ ®в NIL. …б«Ё вҐбв- аЈг¬Ґв
Ґбвм NIL Ё«Ё Ґ § ¤ , NSUDST ЁбЇ®«м§гҐв EQL-вҐбв.
(NSUBST ®ўл© вҐбв ®ЎмҐЄв) § ¬Ґй Ґв <®ўлҐ> ўбҐ
Ї®¤ўла ¦ҐЁп <®ЎмҐЄв >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг>
®в«ЁзҐ ®в NIL.
ЏаЁ¬Ґа:
(DEFUN NSUBST (NEW OLD OBJ TEST)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OLD OBJ) NEW)
((ATOM OBJ) OBJ)
(RPLACA OBJ (NSUBST NEW OLD (CAR OBJ) TEST))
(RPLACA OBJ (NSUBST NEW OLD (CDR OBJ) TEST)) )
(NSUBST 5 2 '(4 2 (3 . 5 ) 4)
DELETE [item,list,test] Function
DELETE-IF [test,list] Function
(DELETE ўла ¦ҐЁҐ бЇЁб®Є вҐбв) гЁз⮦ Ґв ўбҐ н«Ґ¬Ґвл
<бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг> Ґбвм Ґ NIL.
…б«Ё вҐбв- аЈг¬Ґв Ґбвм NIL Ё«Ё Ґ § ¤ , DELETE ЁбЇ®«м§гҐв
EQL-вҐбв.
(DELETE-IF ⥪бв бЇЁб®Є) гЁз⮦ Ґв ўбҐ н«Ґ¬Ґвл <бЇЁбЄ >,
¤«п Є®в®але ЇаЁ Їа®ўҐаЄҐ Ї® <вҐбвг> ЇаЁ§ Є ®в«ЁзҐ ®в NIL.
ЏаЁ¬Ґа:
(DEFUN DELETE (ITEM LST TEST
RLST )
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
(LOOP
((ATOM LST))
((FUNCALL TEST ITEM (CAR LST)))
(POP LST) )
((ATOM LST) LST)
(SETQ RSLT LST)
(LOOP
((ATOM (CDR LST)) RSLT)
( ((FUNCALL TEST ITEM (CADR LST))
(RPLACD LST (CDDR LST)) )
(POP LST) ) ) )
(DELETE '(2 5) '((5 2) (2 5) (2 3)) 'EQUAL) --> ((5 2) (2 5)
(2 3)) 'EQUAL) --> ((5 2) (2 3))
(DELETE-IF '(-2 0 7 -0.1 3)) --> (0 7 3)
NREVERSE [list,object] Function
(NREVERSE бЇЁб®Є) ЇҐаҐбв ў«пҐв ¬Ґбв ¬Ё н«Ґ¬Ґвл <бЇЁбЄ >.
(NREVERSE cЇЁб®Є ®ЎмҐЄв) ўл¤ Ґв ЇҐаҐбв ў«Ґл© <бЇЁб®Є>,
б楯«Ґл© б <®ЎмҐЄв®¬>. ђҐ§г«мв в а Ў®вл «®ЈЁзҐ १г«мв вг
а Ў®вл (NCONC (NREVERSE list) object), ® ўл§®ў NREVERSE б ¤ўг¬п
аЈг¬Ґв ¬Ё Ў®«ҐҐ нд䥪⨢Ґ. ‚ «оЎ®¬ б«гз Ґ NREVERSE
¬®¤ЁдЁжЁагҐв cons-л ўҐа奣® га®ўп <бЇЁбЄ > Ё Ґ ЁбЇ®«м§гҐв
¤®Ї®«ЁвҐ«мле cons-®ў.
ЏаЁ¬Ґа:
(DEFUN NREVERSE (LST OBJ)
((ATOM LST) OBJ)
(NREVERSE (CDR LST) (RPLACD LST OBJ)) )
(NREVERSE '(A B C D E)) --> (E D C B A)
(NREVERSE '(A B C) '(D E F)) --> (C B A D E F)
(NREVERSE '(A B C) 'D) --> (C B A . D)
(SETQ FOO '(A B C)) --> (A B C)
(NREVERSE FOO) --> (C B A)
FOO --> A
NBUTLAST [list,n] Function
…б«Ё <n> - ®«м Ё«Ё Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ, в® (NBUTLAST бЇЁб®Є
n) ў®§ўа й Ґв бЇЁб®Є, б®бв®пйЁ© Ё§ ўбҐе, Єа®¬Ґ Ї®б«Ґ¤Ёе <n>
н«Ґ¬Ґв®ў <бЇЁбЄ >, Їг⥬ § ¬ҐйҐЁп cdr-н«Ґ¬Ґв n-в®Ј® cons- ,
ў§пв®Ј® Ё§ Є®ж <бЇЁбЄ >, NIL. ЋвбгвбвўЁҐ n ®в®¦¤Ґбвў«пҐвбп б
1.
ЏаЁ¬Ґа:
(DEFUN NBUTLAST (LST N)
((AND (INTEGERP N) (>=N 0))
(NREVERSE (NTHCDR N (NREVERSE LST))) )
(NBUTLAST LST 1) )
(NBUTLAST '(A B C D)) --> (A B C)
(NBUTLAST '(A B C D) 2) --> (A B)
(SETQ FOO '(A B C)) --> (A B C)
(NBUTLAST FOO) --> (A B)
FOO --> (A B)
(NBUTLAST FOO 2) --> NIL
FOO --> (A B)
NCONC [list1,list2,...,listN] Function
(NCONC бЇЁб®Є1,...,бЇЁб®ЄN) ўл¤ Ґв бЇЁб®Є, б®бв®пйЁ© Ё§
н«Ґ¬Ґв®ў бЇЁбЄ®ў <бЇЁб®Є1>,...,<бЇЁб®ЄN> ў ⮬ ¦Ґ Ї®ап¤ЄҐ, Їг⥬
¬®¤ЁдЁЄ жЁЁ Ї®б«Ґ¤Ёе cdr-н«Ґ¬Ґв®ў <бЇЁбЄ 1>,...,<бЇЁбЄ N>.
Ћв¬ҐвЁ¬, зв® NCONC Ё APPEND,§ ¤ лҐ б ®¤Ё Є®ўл¬Ё
аЈг¬Ґв ¬Ё, ўл¤ ¤гв нЄўЁў «ҐвлҐ бЇЁбЄЁ.
…б«Ё § 票Ґ¬ FOO пў«пҐвбп бЇЁб®Є, в® (NCONC FOO FOO)
б®§¤ бв жЁаЄг«пал© бЇЁб®Є, Ё Ґб«Ё Ўг¤Ґв ᤥ« Ї®ЇлвЄ ўл¤ вм
нЄа ¤ЁбЇ«Ґп § 票Ґ FOO, в® нв®в Їа®жҐбб Ўг¤Ґв ¤«Ёвмбп
ЎҐбЄ®Ґз®.
ЏаЁ¬Ґа:
(DEFUN NCONC (LST1 LST2)
((ATOM LST1) LST2)
(RPLACD (LAST LST1) LST2)
LST1 )
(SETQ FOO '(D E F)) --> (D E F)
(NCONC '(A B C) FOO '(G H I)) --> (A B C D E F G H I)
FOO --> (D E F G H I)
TCONC [dotted-pair,object] Function
(TCONC в®зҐз п-Ї а ®ЎмҐЄв) ¤®Ў ў«пҐв <®ЎмҐЄв> ў Є®Ґж
бЇЁбЄ , car-н«Ґ¬Ґв гЄ §лў Ґв <в®зҐзго-Ї аг>, бЇЁб®Є
¬®¤ЁдЁжЁагҐвбп. TCONC ў®§ўа й Ґв <в®зҐзго-Ї аг> Ё
¬®¤ЁдЁжЁа®ў л© cdr-н«Ґ¬Ґв, гЄ §лў ойЁ© ®ўл© Є®Ґж бЇЁбЄ .
TCONC ¤®Ў ў«пҐв н«Ґ¬Ґвл ў Є®Ґж бЇЁбЄ , ЁбЇ®«м§гп RPLACD
¤«п ¬®¤ЁдЁЄ жЁЁ бЇЁбЄ . …Ј® ЇҐаўл¬ аЈг¬Ґв®¬ п «пҐвбп в®зҐз п
Ї а , car-н«Ґ¬Ґв Є®в®а®© гЄ §лў Ґв з «® бЇЁбЄ ,
cdr-н«Ґ¬Ґв - Є®Ґж (в.Ґ. Ї®б«Ґ¤Ё© cons ) бЇЁбЄ . ‚в®ал¬
аЈг¬Ґв®¬ пў«пҐвбп н«Ґ¬Ґв, Є®в®ал© Ўл« ¤®Ў ў«Ґ ў Є®Ґж бЇЁбЄ .
Љ Є Ї®Є § ® ЇаЁ¬ҐаҐ, Є®Ј¤ TCONC ўл§лў Ґвбп ў 1-© а §, ҐҐ 1-¬
аЈг¬Ґв®¬ Ўг¤Ґв ⮬ NIL Ё«Ё бЇЁб®Є (NIL).
ЏаЁ¬Ґа:
(DEFUN TCONC (PAIR OBJ)
(SETQ OBJ (LIST OBJ))
((ATOM PAIR)
((CONS OBJ OBJ) )
((ATOM (CDR PAIR))
(RPLACA PAIR OBJ)
(RPLACD PAIR OBJ) )
(RPLACD (CDR PAIR) OBJ)
(RPLACD PAIR OBJ) )
(SETQ FOO NIL) --> NIL ;set FOO to NIL
(SETQ FOO (TCONC FOO 'A)) --> ((A) A)
(TCONC FOO 'B) --> ((A B) B)
(TCONC FOO 'C) --> ((A B C) C)
(CAR FOO) --> (A B C)
(SETQ FOO (CONS NIL)) --> (NIL)
(TCONC FOO 'A) --> ((A) A)
(TCONC FOO 'B) --> ((A B) B)
(TCONC FOO 'C) --> ((A B C) C)
(CAR FOO) --> (A B C)
LCONC [dotted-paip] Function
(LCONC в®зҐз п-Ї а бЇЁб®Є) ¤®Ў ў«пҐв <бЇЁб®Є> ў Є®Ґж
бЇЁбЄ , Є®в®ал© гЄ §лў Ґв car-н«Ґ¬Ґв <в®зҐз®© Ї ал>, Їг⥬
¬®¤ЁдЁЄ жЁЁ бЇЁбЄ . LCONC ў®§ўа й Ґв в®зҐзго Ї аг, 祩
cdr-н«Ґ¬Ґв ¬®¤ЁдЁжЁагҐвбп Ё гЄ §лў Ґв ®ўл© Є®Ґж бЇЁбЄ .
LCONC ¤®Ў ў«пҐв ®ўлҐ бЇЁбЄЁ ў еў®бв®ў®© Є®Ґж бЇЁбЄ , ЁбЇ®«м§гп
RPLACD ¤«п ¬®¤ЁдЁЄ жЁЁ бЇЁбЄ . …Ј® 1-¬ аЈг¬Ґв®¬ пў«пҐвбп cons,
car-н«Ґ¬Ґв Є®в®а®Ј® гЄ §лў Ґв з «® бЇЁбЄ , cdr-н«Ґ¬Ґв -
Є®Ґж (в.Ґ. Ї®б«Ґ¤Ё© cons) бЇЁбЄ . ‚в®ал¬ аЈг¬Ґв®¬ LCONC
пў«пҐвбп н«Ґ¬Ґв, Є®в®ал© Ўл« ¤®Ў ў«Ґ ў Є®Ґж бЇЁбЄ . Љ Є
Ї®Є § ® ЇаЁ¬Ґа е, ЇаЁ ЇҐаў® з «м®¬ ўл§®ўҐ LCONC ЇҐаўл¬ ҐҐ
аЈг¬Ґв®¬ Ўг¤Ґв ⮬ NIL Ё«Ё бЇЁб®Є (NIL).
ЏаЁ¬Ґа:
(DEFUN LCONC (PAIR LST)
((ATOM LST) PAIR)
((ATOM PAIR)
(CONS LST (LAST LST)) )
((ATOM (CDR PAIR))
(RPLACA PAIR LST)
(RPLACD PAIR (LAST LST)) )
(RPLACD (CDR PAIR) LST)
(RPLACD PAIR (LAST LST)) )
(SETQ FOO NIL) --> NIL ;set FOO to NIL
(SETQ FOO (LCONC FOO '(A B))) --> ((A B) B)
(LCONC FOO '(C D)) --> ((A B C D) D)
(LCONC FOO '(E F)) --> ((A B C D E F) F)
(CAR FOO) --> (A B C D E F )
(SETQ FOO (CONS NIL)) --> (NIL) ; set FOO to (NIL)
(LCONC FOO '(A B)) --> ((A B) B)
(LCONC FOO '(C D)) --> ((A B C D) D)
(LCONC FOO '(E F)) --> ((A B C D E F) F)
(CAR FOO) --> (A B C D E F)
SPLIT [list] Function
(SPLIT бЇЁб®Є) а §ЎЁў Ґв <бЇЁб®Є> ¤ў бЇЁбЄ Їг⥬ § ¬Ґл
cdr-н«Ґ¬Ґв cons- ўҐа奣® га®ўп, бв®п饣® Ї®бҐаҐ¤ЁҐ
<бЇЁбЄ >, NIL. SPLIT ў®§ўа й Ґв еў®бв <бЇЁбЄ >, зЁ п б
¬Ґбв а §ЎЁҐЁп.
…б«Ё <бЇЁб®Є> Ё¬ҐҐв зҐв®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў, ҐЈ® Ј®«®ў Ё
еў®бв ЇаЁ а §ЎЁҐЁЁ Ўг¤гв Ё¬Ґвм ®¤Ё Є®ў®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў.
…б«Ё <бЇЁб®Є> Ё¬ҐҐв ҐзҐв®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў, Ј®«®ў Ўг¤Ґв
Ё¬Ґвм ®¤Ё н«Ґ¬Ґв Ў®«миҐ, 祬 еў®бв.
ЏаЁ¬Ґа:
(DEFUN SPLIT (LST)
((ATOM LST) LST)
(split-aux LST (CDR LST)) )
(DEFUN split-aux (HEAD TAIL)
((ATOM TAIL)
(PROG1 (CDR HEAD) (RPLACD HEAD NIL)) )
(POP TAIL)
((ATOM TAIL)
(PROG1 (CDR HEAD) (RPLACD HEAD NIL)) )
(split-aux (CDR HEAD) (CDR TAIL)) )
(SETQ NAMES '(TJM SUE JOE PAT SAM)) --> (TOM SUE JOE PAT
SAM)
(SPLIT NAMES) --> (PAT SAM)
NAMES --> (TOM SUE JOE)
SORT [list,test] Function
…б«Ё <вҐбв> пў«пҐвбп ў ਠ⮬ ЇҐаҐбв ®ўЄЁ ¤ўге аЈг¬Ґв®ў,
(SORT бЇЁб®Є вҐбв) б®авЁагҐв н«Ґ¬Ґвл <бЇЁбЄ > ®б®ўҐ <вҐбв >
Ё ў®§ўа й Ґв १г«мв в. (FUNCALL вҐбв ®ЎмҐЄв1 ®ЎмҐЄв2) ў®§ўа й Ґв
NIL в®Ј¤ Ё в®«мЄ® в®Ј¤ , Є®Ј¤ <®ЎмҐЄв1> а бЇ®« Ј Ґвбп Ї®б«Ґ
<®ЎмҐЄв 2> Ё«Ё а ўҐ Ґ¬г.
SORT ўлЇ®«пҐв б®авЁа®ўЄг Ё ®ЎмҐ¤ЁҐЁҐ, ЇаЁ н⮬ Є®«ЁзҐбвў®
вॡ㥬®Ј® ўаҐ¬ҐЁ Їа®Ї®ажЁ® «м® n logn, Ј¤Ґ n - нв® ¤«Ё
<бЇЁбЄ >. Ља®¬Ґ в®Ј®, б®авЁа®ўЄ пў«пҐвбп ўҐа®© ў ⮬ б«гз Ґ,
Є®Ј¤ н«Ґ¬Ґвл <бЇЁбЄ >, Є®в®алҐ <вҐбв> 室Ёв а ўл¬Ё ¤агЈ
¤агЈг, Ўг¤гв бв®пвм ў ⮬ ¦Ґ Ї®ап¤ЄҐ ў १г«мв вҐ.
ЏаЁ¬Ґа:
(DEGUN SORT (LST TST)
((NULL LST) NIL)
((NULL (CDR LST)) LST)
((SETQ LST (CONS (SORT (SPLIT LST) TST) (SORT LST TST)))
(MERGE (CDR LST) (CAR LST) TST) )
(SORT '(5 2 7 3 -4) '<) --> (-4 2 3 5 7)
(SORT '(DOG COW CAT) 'STRING<) --> (CAT COW DOG)
MERGE [list1,list2,test] Function
…б«Ё <вҐбв> пў«пҐвбп ў ਠ⮬ ЇҐаҐбв ®ўЄЁ ¤ўге аЈг¬Ґв®ў,
в® (MERGE бЇЁб®Є1 бЇЁб®Є2 вҐбв) ®ЎмҐ¤ЁпҐв н«Ґ¬Ґвл <бЇЁбЄ 1> Ё
<бЇЁбЄ 2> ®б®ўҐ <вҐбв > Ё ў®§ўа й Ґв १г«мв в. (FUNCALL вҐбв
®ЎмҐЄв1 ®ЎмҐЄв2) ў®§ўа й Ґв NIL в®Ј¤ Ё в®«мЄ® в®Ј¤ , Є®Ј¤
<®ЎмҐЄв1> а бЇ®« Ј Ґвбп Ї®б«Ґ <®ЎмҐЄв 2> Ё«Ё а ўҐ Ґ¬г.
ЋЎмҐ¤ЁҐЁҐ пў«пҐвбп ўҐал¬ ў ⮬ б«гз Ґ, Є®Ј¤ Ґб«Ё н«Ґ¬Ґв
<бЇЁбЄ 1> а ўҐ н«Ґ¬Ґвг <бЇЁбЄ 2>, в® н«Ґ¬Ґв <бЇЁбЄ 1> Ўг¤Ґв
бв®пвм ЇҐаҐ¤ н«Ґ¬Ґв®¬ <бЇЁбЄ 2> ў १г«мв вҐ.
ЏаЁ¬Ґа:
(DEFUN NERGE (LST1 LST2 TST)
((ATON LST1) LST2)
((ATOM LST2) LST1)
((FUNCALL TST (CAR LST2) (CAR LST1))
(RPLACD LST2 (MERGE LST1 (CDR LST2) TST)) )
(RPLACD LST1 (MERGE (CDR LST1) LST2 TST)) )
(MERGE '(2 4 6 8 10) '(3 5 7 11) '<) --> (2 3 4 5 6 7 8 10
11)
5.4. ”гЄжЁЁ а бЇ®§ ў ⥫п
”гЄжЁЁ а бЇ®§ ў ⥫п - нв® г⢥তҐЁп, ЁбЇ®«м§гҐ¬лҐ ¤«п
а бЇ®§ ў Ёп Ё«Ё Ё¤ҐвЁдЁЄ жЁЁ ®ЎмҐЄв®ў ¤ ле muLISP. ќв®
дгЄжЁЁ а Ў®в ов б ®¤Ё¬ аЈг¬Ґв®¬, ў®§ўа й ов ЇҐаҐ¬Ґго ’
Ё«Ё NIL. ’.Є. дгЄжЁЁ ЁбЇ®«м§говбп ¤«п Ё¤ҐвЁдЁЄ жЁЁ ®ЎмҐЄв®ў, в®
®Ё Ґ Їа®ў®¤пв Є ®иЁЎЄ ¬ Ї® Ґ¤Ґ©б⢨⥫мл¬ аЈг¬Ґв ¬.
Ќ ЇаЁ¬Ґа, зЁб«®ўлҐ дгЄжЁЁ а бЇ®§ ў ⥫п ZEROP, PLUSP, MINUSP,
ODDP Ё EVENP Ґ ўл§лў ов ®иЁЎЄЁ "ЌҐзЁб«®ў®© аЈг¬Ґв", ¤ ¦Ґ Ґб«Ё
ў Є зҐб⢥ аЈг¬Ґв § ¤ бЁ¬ў®« Ё«Ё cons; ў н⮬ б«гз Ґ ®Ё
Їа®бв® ў®§ўа й ов NIL.
SYMBOLP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм бЁ¬ў®«, ”гЄжЁп ў®§ўа й Ґв ’, ў Їа®вЁў®¬
б«гз Ґ - NIL.
ЏаЁ¬Ґа:
(DEFUN SYMBOLP (OBJ)
((if OBJ is a symbol) T)
NIL )
(SYMBOL 'DOG) --> T
(SYMBOL 100) --> NIL
(SYMBOL 2/3) --> NIL
(SYMBOL 4.25) --> NIL
(SYMBOL '(A B C)) --> NIL
INTEGERP [object] Function
…б«Ё <®ЎмҐЄв> - 楫®Ґ зЁб«®, дгЄжЁп ў®§ўа й Ґв ’, Ё зҐ -
NIL.
ЏаЁ¬Ґа:
(DEFUN INTEGERP (OBJ)
((if OBJ is a integer) T)
NIL )
(INTEGERP 'DOG) --> NIL
(INTEGERP 1000) --> T
(INTEGERP 2/3) --> NIL
(INTEGERP 4.23) --> NIL
(INTEGERP '(A D C)) --> NIL
NUMBERP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм зЁб«® - 楫®Ґ Ё«Ё ¤а®Ў®Ґ, дгЄжЁп
ў®§ўа й Ґв ’, Ё зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN NUMBERP (OBJ)
((INTEGERP OBJ))
((if OBJ is a rational number) T)
NIL)
(NUMBER 'DOG) --> NIL
(NUMBER 100) --> T
(NUMBER 2/3) --> T
(NUMBER 4.235) --> T
(NUMBER '(A B C)) --> NIL
ATOM [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм ⮬ - бЁ¬ў®« Ё«Ё зЁб«®, дгЄжЁп
ў®§ўа й Ґв ’, Ё зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN ATOM (OBJ)
(OR (SYMBOLP OBJ) (NUMBERP OBJ)) )
(ATOM 'DOG) --> T
(ATOM 100) --> T
(ATOM 2/3) --> T
(ATOM 4.253) --> T
(ATOM '(A B C)) --> NIL
(ATOM NIL) --> T
CONSP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм cons, дгЄжЁп ў®§ўа й Ґв ’, Ё зҐ - NIL.
Џа®¬Ґа:
(DEFUN CONSP (OBJ)
(NOT (ATOM OBJ)) )
(CONSP 'DOG) --> NIL
(CONSP 100) --> NIL
(CONSP 2/3) --> NIL
(CONSP 4.253) --> NIL
(CONSP '(A B C)) --> T
(CONSP NIL) --> NIL
LISTP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм бЇЁб®Є - cons Ё«Ё ⮬ NIL, дгЄжЁп
ў®§ўа й Ґв ’, Ё зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN LISTP (OBJ)
(OR (CONSP OBJ) (NULL OBJ)) )
(LISTP 'DOG) --> NIL
(LISTP 100) --> NIL
(LISTP 2/3) --> NIL
(LISTP 4.253) --> NIL
(LISTP '(A B C)) --> T
(LISTP NIL) --> T
NSUBSTITUTE-IF [new,test,list] Function
Њ®¤ЁдЁжЁагп cons-л ўлб®Є®Ј® га®ўп <бЇЁбЄ >, (NSUBSTITUTE
®ўл© бв ал© бЇЁб®Є вҐбв) § ¬Ґй Ґв <®ўлҐ> н«Ґ¬Ґвл вҐ
<бв алҐ> н«Ґ¬Ґвл <бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї®
<вҐбвг> ®в«ЁзҐ ®в NIL.…б«Ё <вҐбв>- аЈг¬Ґв Ґбвм NIL Ё«Ё Ґ
§ ¤ , NSUBSTITUTE ЁбЇ®«м§гҐв EQL-вҐбв.
(NSUBSTITUTE-IF ®ўл© вҐбв бЇЁб®Є) § ¬Ґй Ґв <®ўлҐ>
н«Ґ¬Ґвл <бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг>
®в«ЁзҐ ®в NIL.
ЏаЁ¬Ґа:
(DEFUN NSUBSTITUTE (NEW OLD LST TEST)
((ATOM LST) LST)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OLD (CAR LST))
(RPLACA LST NEW)
(NSUBSTITUTE NEW OLD (CDR LST) TEST) )
(NSUBSTITUTE NEW OLD (CDR LST) TEST) )
(NSUBSTITUTE 5 2 '(4 2 (3 . 2) 4)) --> (4 5 (3 . 2) 4)
(NSUBSTITUTE 'CANNIBALS 'NOUN '(NOUN LIKE TO EAT NOUN))
--> (CANNIBALS LIKE TO EAT CANNIBALS)
NSUBST [new,old,object,test] Function
NSUBST-IF [new,test,object] Function
Њ®¤ЁдЁжЁагп cons-л <®ЎмҐЄв >, (NSUBST ®ўл© бв ал© ®ЎмҐЄв
вҐбв) § ¬Ґй Ґв <®ўлҐ> ўбҐ Ї®¤ўла ¦ҐЁп <®ЎмҐЄв >, ¤«п Є®в®але
ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг> ®в«ЁзҐ ®в NIL. …б«Ё вҐбв- аЈг¬Ґв
Ґбвм NIL Ё«Ё Ґ § ¤ , NSUDST ЁбЇ®«м§гҐв EQL-вҐбв.
(NSUBST ®ўл© вҐбв ®ЎмҐЄв) § ¬Ґй Ґв <®ўлҐ> ўбҐ
Ї®¤ўла ¦ҐЁп <®ЎмҐЄв >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг>
®в«ЁзҐ ®в NIL.
ЏаЁ¬Ґа:
(DEFUN NSUBST (NEW OLD OBJ TEST)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OLD OBJ) NEW)
((ATOM OBJ) OBJ)
(RPLACA OBJ (NSUBST NEW OLD (CAR OBJ) TEST))
(RPLACA OBJ (NSUBST NEW OLD (CDR OBJ) TEST)) )
(NSUBST 5 2 '(4 2 (3 . 5 ) 4)
DELETE [item,list,test] Function
DELETE-IF [test,list] Function
(DELETE ўла ¦ҐЁҐ бЇЁб®Є вҐбв) гЁз⮦ Ґв ўбҐ н«Ґ¬Ґвл
<бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§ Є Їа®ўҐаЄЁ Ї® <вҐбвг> Ґбвм Ґ NIL.
…б«Ё вҐбв- аЈг¬Ґв Ґбвм NIL Ё«Ё Ґ § ¤ , DELETE ЁбЇ®«м§гҐв
EQL-вҐбв.
(DELETE-IF ⥪бв бЇЁб®Є) гЁз⮦ Ґв ўбҐ н«Ґ¬Ґвл <бЇЁбЄ >,
¤«п Є®в®але ЇаЁ Їа®ўҐаЄҐ Ї® <вҐбвг> ЇаЁ§ Є ®в«ЁзҐ ®в NIL.
ЏаЁ¬Ґа:
(DEFUN DELETE (ITEM LST TEST
RLST )
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
(LOOP
((ATOM LST))
((FUNCALL TEST ITEM (CAR LST)))
(POP LST) )
((ATOM LST) LST)
(SETQ RSLT LST)
(LOOP
((ATOM (CDR LST)) RSLT)
( ((FUNCALL TEST ITEM (CADR LST))
(RPLACD LST (CDDR LST)) )
(POP LST) ) ) )
(DELETE '(2 5) '((5 2) (2 5) (2 3)) 'EQUAL) --> ((5 2) (2 5)
(2 3)) 'EQUAL) --> ((5 2) (2 3))
(DELETE-IF '(-2 0 7 -0.1 3)) --> (0 7 3)
NREVERSE [list,object] Function
(NREVERSE бЇЁб®Є) ЇҐаҐбв ў«пҐв ¬Ґбв ¬Ё н«Ґ¬Ґвл <бЇЁбЄ >.
(NREVERSE cЇЁб®Є ®ЎмҐЄв) ўл¤ Ґв ЇҐаҐбв ў«Ґл© <бЇЁб®Є>,
б楯«Ґл© б <®ЎмҐЄв®¬>. ђҐ§г«мв в а Ў®вл «®ЈЁзҐ १г«мв вг
а Ў®вл (NCONC (NREVERSE list) object), ® ўл§®ў NREVERSE б ¤ўг¬п
аЈг¬Ґв ¬Ё Ў®«ҐҐ нд䥪⨢Ґ. ‚ «оЎ®¬ б«гз Ґ NREVERSE
¬®¤ЁдЁжЁагҐв cons-л ўҐа奣® га®ўп <бЇЁбЄ > Ё Ґ ЁбЇ®«м§гҐв
¤®Ї®«ЁвҐ«мле cons-®ў.
ЏаЁ¬Ґа:
(DEFUN NREVERSE (LST OBJ)
((ATOM LST) OBJ)
(NREVERSE (CDR LST) (RPLACD LST OBJ)) )
(NREVERSE '(A B C D E)) --> (E D C B A)
(NREVERSE '(A B C) '(D E F)) --> (C B A D E F)
(NREVERSE '(A B C) 'D) --> (C B A . D)
(SETQ FOO '(A B C)) --> (A B C)
(NREVERSE FOO) --> (C B A)
FOO --> A
NBUTLAST [list,n] Function
…б«Ё <n> - ®«м Ё«Ё Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ, в® (NBUTLAST бЇЁб®Є
n) ў®§ўа й Ґв бЇЁб®Є, б®бв®пйЁ© Ё§ ўбҐе, Єа®¬Ґ Ї®б«Ґ¤Ёе <n>
н«Ґ¬Ґв®ў <бЇЁбЄ >, Їг⥬ § ¬ҐйҐЁп cdr-н«Ґ¬Ґв n-в®Ј® cons- ,
ў§пв®Ј® Ё§ Є®ж <бЇЁбЄ >, NIL. ЋвбгвбвўЁҐ n ®в®¦¤Ґбвў«пҐвбп б
1.
ЏаЁ¬Ґа:
(DEFUN NBUTLAST (LST N)
((AND (INTEGERP N) (>=N 0))
(NREVERSE (NTHCDR N (NREVERSE LST))) )
(NBUTLAST LST 1) )
(NBUTLAST '(A B C D)) --> (A B C)
(NBUTLAST '(A B C D) 2) --> (A B)
(SETQ FOO '(A B C)) --> (A B C)
(NBUTLAST FOO) --> (A B)
FOO --> (A B)
(NBUTLAST FOO 2) --> NIL
FOO --> (A B)
NCONC [list1,list2,...,listN] Function
(NCONC бЇЁб®Є1,...,бЇЁб®ЄN) ўл¤ Ґв бЇЁб®Є, б®бв®пйЁ© Ё§
н«Ґ¬Ґв®ў бЇЁбЄ®ў <бЇЁб®Є1>,...,<бЇЁб®ЄN> ў ⮬ ¦Ґ Ї®ап¤ЄҐ, Їг⥬
¬®¤ЁдЁЄ жЁЁ Ї®б«Ґ¤Ёе cdr-н«Ґ¬Ґв®ў <бЇЁбЄ 1>,...,<бЇЁбЄ N>.
Ћв¬ҐвЁ¬, зв® NCONC Ё APPEND,§ ¤ лҐ б ®¤Ё Є®ўл¬Ё
аЈг¬Ґв ¬Ё, ўл¤ ¤гв нЄўЁў «ҐвлҐ бЇЁбЄЁ.
…б«Ё § 票Ґ¬ FOO пў«пҐвбп бЇЁб®Є, в® (NCONC FOO FOO)
б®§¤ бв жЁаЄг«пал© бЇЁб®Є, Ё Ґб«Ё Ўг¤Ґв ᤥ« Ї®ЇлвЄ ўл¤ вм
нЄа ¤ЁбЇ«Ґп § 票Ґ FOO, в® нв®в Їа®жҐбб Ўг¤Ґв ¤«Ёвмбп
ЎҐбЄ®Ґз®.
ЏаЁ¬Ґа:
(DEFUN NCONC (LST1 LST2)
((ATOM LST1) LST2)
(RPLACD (LAST LST1) LST2)
LST1 )
(SETQ FOO '(D E F)) --> (D E F)
(NCONC '(A B C) FOO '(G H I)) --> (A B C D E F G H I)
FOO --> (D E F G H I)
TCONC [dotted-pair,object] Function
(TCONC в®зҐз п-Ї а ®ЎмҐЄв) ¤®Ў ў«пҐв <®ЎмҐЄв> ў Є®Ґж
бЇЁбЄ , car-н«Ґ¬Ґв гЄ §лў Ґв <в®зҐзго-Ї аг>, бЇЁб®Є
¬®¤ЁдЁжЁагҐвбп. TCONC ў®§ўа й Ґв <в®зҐзго-Ї аг> Ё
¬®¤ЁдЁжЁа®ў л© cdr-н«Ґ¬Ґв, гЄ §лў ойЁ© ®ўл© Є®Ґж бЇЁбЄ .
TCONC ¤®Ў ў«пҐв н«Ґ¬Ґвл ў Є®Ґж бЇЁбЄ , ЁбЇ®«м§гп RPLACD
¤«п ¬®¤ЁдЁЄ жЁЁ бЇЁбЄ . …Ј® ЇҐаўл¬ аЈг¬Ґв®¬ п «пҐвбп в®зҐз п
Ї а , car-н«Ґ¬Ґв Є®в®а®© гЄ §лў Ґв з «® бЇЁбЄ ,
cdr-н«Ґ¬Ґв - Є®Ґж (в.Ґ. Ї®б«Ґ¤Ё© cons ) бЇЁбЄ . ‚в®ал¬
аЈг¬Ґв®¬ пў«пҐвбп н«Ґ¬Ґв, Є®в®ал© Ўл« ¤®Ў ў«Ґ ў Є®Ґж бЇЁбЄ .
Љ Є Ї®Є § ® ЇаЁ¬ҐаҐ, Є®Ј¤ TCONC ўл§лў Ґвбп ў 1-© а §, ҐҐ 1-¬
аЈг¬Ґв®¬ Ўг¤Ґв ⮬ NIL Ё«Ё бЇЁб®Є (NIL).
ЏаЁ¬Ґа:
(DEFUN TCONC (PAIR OBJ)
(SETQ OBJ (LIST OBJ))
((ATOM PAIR)
((CONS OBJ OBJ) )
((ATOM (CDR PAIR))
(RPLACA PAIR OBJ)
(RPLACD PAIR OBJ) )
(RPLACD (CDR PAIR) OBJ)
(RPLACD PAIR OBJ) )
(SETQ FOO NIL) --> NIL ;set FOO to NIL
(SETQ FOO (TCONC FOO 'A)) --> ((A) A)
(TCONC FOO 'B) --> ((A B) B)
(TCONC FOO 'C) --> ((A B C) C)
(CAR FOO) --> (A B C)
(SETQ FOO (CONS NIL)) --> (NIL)
(TCONC FOO 'A) --> ((A) A)
(TCONC FOO 'B) --> ((A B) B)
(TCONC FOO 'C) --> ((A B C) C)
(CAR FOO) --> (A B C)
LCONC [dotted-paip] Function
(LCONC в®зҐз п-Ї а бЇЁб®Є) ¤®Ў ў«пҐв <бЇЁб®Є> ў Є®Ґж
бЇЁбЄ , Є®в®ал© гЄ §лў Ґв car-н«Ґ¬Ґв <в®зҐз®© Ї ал>, Їг⥬
¬®¤ЁдЁЄ жЁЁ бЇЁбЄ . LCONC ў®§ўа й Ґв в®зҐзго Ї аг, 祩
cdr-н«Ґ¬Ґв ¬®¤ЁдЁжЁагҐвбп Ё гЄ §лў Ґв ®ўл© Є®Ґж бЇЁбЄ .
LCONC ¤®Ў ў«пҐв ®ўлҐ бЇЁбЄЁ ў еў®бв®ў®© Є®Ґж бЇЁбЄ , ЁбЇ®«м§гп
RPLACD ¤«п ¬®¤ЁдЁЄ жЁЁ бЇЁбЄ . …Ј® 1-¬ аЈг¬Ґв®¬ пў«пҐвбп cons,
car-н«Ґ¬Ґв Є®в®а®Ј® гЄ §лў Ґв з «® бЇЁбЄ , cdr-н«Ґ¬Ґв -
Є®Ґж (в.Ґ. Ї®б«Ґ¤Ё© cons) бЇЁбЄ . ‚в®ал¬ аЈг¬Ґв®¬ LCONC
пў«пҐвбп н«Ґ¬Ґв, Є®в®ал© Ўл« ¤®Ў ў«Ґ ў Є®Ґж бЇЁбЄ . Љ Є
Ї®Є § ® ЇаЁ¬Ґа е, ЇаЁ ЇҐаў® з «м®¬ ўл§®ўҐ LCONC ЇҐаўл¬ ҐҐ
аЈг¬Ґв®¬ Ўг¤Ґв ⮬ NIL Ё«Ё бЇЁб®Є (NIL).
ЏаЁ¬Ґа:
(DEFUN LCONC (PAIR LST)
((ATOM LST) PAIR)
((ATOM PAIR)
(CONS LST (LAST LST)) )
((ATOM (CDR PAIR))
(RPLACA PAIR LST)
(RPLACD PAIR (LAST LST)) )
(RPLACD (CDR PAIR) LST)
(RPLACD PAIR (LAST LST)) )
(SETQ FOO NIL) --> NIL ;set FOO to NIL
(SETQ FOO (LCONC FOO '(A B))) --> ((A B) B)
(LCONC FOO '(C D)) --> ((A B C D) D)
(LCONC FOO '(E F)) --> ((A B C D E F) F)
(CAR FOO) --> (A B C D E F )
(SETQ FOO (CONS NIL)) --> (NIL) ; set FOO to (NIL)
(LCONC FOO '(A B)) --> ((A B) B)
(LCONC FOO '(C D)) --> ((A B C D) D)
(LCONC FOO '(E F)) --> ((A B C D E F) F)
(CAR FOO) --> (A B C D E F)
SPLIT [list] Function
(SPLIT бЇЁб®Є) а §ЎЁў Ґв <бЇЁб®Є> ¤ў бЇЁбЄ Їг⥬ § ¬Ґл
cdr-н«Ґ¬Ґв cons- ўҐа奣® га®ўп, бв®п饣® Ї®бҐаҐ¤ЁҐ
<бЇЁбЄ >, NIL. SPLIT ў®§ўа й Ґв еў®бв <бЇЁбЄ >, зЁ п б
¬Ґбв а §ЎЁҐЁп.
…б«Ё <бЇЁб®Є> Ё¬ҐҐв зҐв®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў, ҐЈ® Ј®«®ў Ё
еў®бв ЇаЁ а §ЎЁҐЁЁ Ўг¤гв Ё¬Ґвм ®¤Ё Є®ў®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў.
…б«Ё <бЇЁб®Є> Ё¬ҐҐв ҐзҐв®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў, Ј®«®ў Ўг¤Ґв
Ё¬Ґвм ®¤Ё н«Ґ¬Ґв Ў®«миҐ, 祬 еў®бв.
ЏаЁ¬Ґа:
(DEFUN SPLIT (LST)
((ATOM LST) LST)
(split-aux LST (CDR LST)) )
(DEFUN split-aux (HEAD TAIL)
((ATOM TAIL)
(PROG1 (CDR HEAD) (RPLACD HEAD NIL)) )
(POP TAIL)
((ATOM TAIL)
(PROG1 (CDR HEAD) (RPLACD HEAD NIL)) )
(split-aux (CDR HEAD) (CDR TAIL)) )
(SETQ NAMES '(TJM SUE JOE PAT SAM)) --> (TOM SUE JOE PAT
SAM)
(SPLIT NAMES) --> (PAT SAM)
NAMES --> (TOM SUE JOE)
SORT [list,test] Function
…б«Ё <вҐбв> пў«пҐвбп ў ਠ⮬ ЇҐаҐбв ®ўЄЁ ¤ўге аЈг¬Ґв®ў,
(SORT бЇЁб®Є вҐбв) б®авЁагҐв н«Ґ¬Ґвл <бЇЁбЄ > ®б®ўҐ <вҐбв >
Ё ў®§ўа й Ґв १г«мв в. (FUNCALL вҐбв ®ЎмҐЄв1 ®ЎмҐЄв2) ў®§ўа й Ґв
NIL в®Ј¤ Ё в®«мЄ® в®Ј¤ , Є®Ј¤ <®ЎмҐЄв1> а бЇ®« Ј Ґвбп Ї®б«Ґ
<®ЎмҐЄв 2> Ё«Ё а ўҐ Ґ¬г.
SORT ўлЇ®«пҐв б®авЁа®ўЄг Ё ®ЎмҐ¤ЁҐЁҐ, ЇаЁ н⮬ Є®«ЁзҐбвў®
вॡ㥬®Ј® ўаҐ¬ҐЁ Їа®Ї®ажЁ® «м® n logn, Ј¤Ґ n - нв® ¤«Ё
<бЇЁбЄ >. Ља®¬Ґ в®Ј®, б®авЁа®ўЄ пў«пҐвбп ўҐа®© ў ⮬ б«гз Ґ,
Є®Ј¤ н«Ґ¬Ґвл <бЇЁбЄ >, Є®в®алҐ <вҐбв> 室Ёв а ўл¬Ё ¤агЈ
¤агЈг, Ўг¤гв бв®пвм ў ⮬ ¦Ґ Ї®ап¤ЄҐ ў १г«мв вҐ.
ЏаЁ¬Ґа:
(DEGUN SORT (LST TST)
((NULL LST) NIL)
((NULL (CDR LST)) LST)
((SETQ LST (CONS (SORT (SPLIT LST) TST) (SORT LST TST)))
(MERGE (CDR LST) (CAR LST) TST) )
(SORT '(5 2 7 3 -4) '<) --> (-4 2 3 5 7)
(SORT '(DOG COW CAT) 'STRING<) --> (CAT COW DOG)
MERGE [list1,list2,test] Function
…б«Ё <вҐбв> пў«пҐвбп ў ਠ⮬ ЇҐаҐбв ®ўЄЁ ¤ўге аЈг¬Ґв®ў,
в® (MERGE бЇЁб®Є1 бЇЁб®Є2 вҐбв) ®ЎмҐ¤ЁпҐв н«Ґ¬Ґвл <бЇЁбЄ 1> Ё
<бЇЁбЄ 2> ®б®ўҐ <вҐбв > Ё ў®§ўа й Ґв १г«мв в. (FUNCALL вҐбв
®ЎмҐЄв1 ®ЎмҐЄв2) ў®§ўа й Ґв NIL в®Ј¤ Ё в®«мЄ® в®Ј¤ , Є®Ј¤
<®ЎмҐЄв1> а бЇ®« Ј Ґвбп Ї®б«Ґ <®ЎмҐЄв 2> Ё«Ё а ўҐ Ґ¬г.
ЋЎмҐ¤ЁҐЁҐ пў«пҐвбп ўҐал¬ ў ⮬ б«гз Ґ, Є®Ј¤ Ґб«Ё н«Ґ¬Ґв
<бЇЁбЄ 1> а ўҐ н«Ґ¬Ґвг <бЇЁбЄ 2>, в® н«Ґ¬Ґв <бЇЁбЄ 1> Ўг¤Ґв
бв®пвм ЇҐаҐ¤ н«Ґ¬Ґв®¬ <бЇЁбЄ 2> ў १г«мв вҐ.
ЏаЁ¬Ґа:
(DEFUN NERGE (LST1 LST2 TST)
((ATON LST1) LST2)
((ATOM LST2) LST1)
((FUNCALL TST (CAR LST2) (CAR LST1))
(RPLACD LST2 (MERGE LST1 (CDR LST2) TST)) )
(RPLACD LST1 (MERGE (CDR LST1) LST2 TST)) )
(MERGE '(2 4 6 8 10) '(3 5 7 11) '<) --> (2 3 4 5 6 7 8 10
11)
5.4. ”гЄжЁЁ а бЇ®§ ў ⥫п
”гЄжЁЁ а бЇ®§ ў ⥫п - нв® г⢥তҐЁп, ЁбЇ®«м§гҐ¬лҐ ¤«п
а бЇ®§ ў Ёп Ё«Ё Ё¤ҐвЁдЁЄ жЁЁ ®ЎмҐЄв®ў ¤ ле muLISP. ќв®
дгЄжЁЁ а Ў®в ов б ®¤Ё¬ аЈг¬Ґв®¬, ў®§ўа й ов ЇҐаҐ¬Ґго ’
Ё«Ё NIL. ’.Є. дгЄжЁЁ ЁбЇ®«м§говбп ¤«п Ё¤ҐвЁдЁЄ жЁЁ ®ЎмҐЄв®ў, в®
®Ё Ґ Їа®ў®¤пв Є ®иЁЎЄ ¬ Ї® Ґ¤Ґ©б⢨⥫мл¬ аЈг¬Ґв ¬.
Ќ ЇаЁ¬Ґа, зЁб«®ўлҐ дгЄжЁЁ а бЇ®§ ў ⥫п ZEROP, PLUSP, MINUSP,
ODDP Ё EVENP Ґ ўл§лў ов ®иЁЎЄЁ "ЌҐзЁб«®ў®© аЈг¬Ґв", ¤ ¦Ґ Ґб«Ё
ў Є зҐб⢥ аЈг¬Ґв § ¤ бЁ¬ў®« Ё«Ё cons; ў н⮬ б«гз Ґ ®Ё
Їа®бв® ў®§ўа й ов NIL.
SYMBOLP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм бЁ¬ў®«, ”гЄжЁп ў®§ўа й Ґв ’, ў Їа®вЁў®¬
б«гз Ґ - NIL.
ЏаЁ¬Ґа:
(DEFUN SYMBOLP (OBJ)
((if OBJ is a symbol) T)
NIL )
(SYMBOL 'DOG) --> T
(SYMBOL 100) --> NIL
(SYMBOL 2/3) --> NIL
(SYMBOL 4.25) --> NIL
(SYMBOL '(A B C)) --> NIL
INTEGERP [object] Function
…б«Ё <®ЎмҐЄв> - 楫®Ґ зЁб«®, дгЄжЁп ў®§ўа й Ґв ’, Ё зҐ -
NIL.
ЏаЁ¬Ґа:
(DEFUN INTEGERP (OBJ)
((if OBJ is a integer) T)
NIL )
(INTEGERP 'DOG) --> NIL
(INTEGERP 1000) --> T
(INTEGERP 2/3) --> NIL
(INTEGERP 4.23) --> NIL
(INTEGERP '(A D C)) --> NIL
NUMBERP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм зЁб«® - 楫®Ґ Ё«Ё ¤а®Ў®Ґ, дгЄжЁп
ў®§ўа й Ґв ’, Ё зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN NUMBERP (OBJ)
((INTEGERP OBJ))
((if OBJ is a rational number) T)
NIL)
(NUMBER 'DOG) --> NIL
(NUMBER 100) --> T
(NUMBER 2/3) --> T
(NUMBER 4.235) --> T
(NUMBER '(A B C)) --> NIL
ATOM [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм ⮬ - бЁ¬ў®« Ё«Ё зЁб«®, дгЄжЁп
ў®§ўа й Ґв ’, Ё зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN ATOM (OBJ)
(OR (SYMBOLP OBJ) (NUMBERP OBJ)) )
(ATOM 'DOG) --> T
(ATOM 100) --> T
(ATOM 2/3) --> T
(ATOM 4.253) --> T
(ATOM '(A B C)) --> NIL
(ATOM NIL) --> T
CONSP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм cons, дгЄжЁп ў®§ўа й Ґв ’, Ё зҐ - NIL.
Џа®¬Ґа:
(DEFUN CONSP (OBJ)
(NOT (ATOM OBJ)) )
(CONSP 'DOG) --> NIL
(CONSP 100) --> NIL
(CONSP 2/3) --> NIL
(CONSP 4.253) --> NIL
(CONSP '(A B C)) --> T
(CONSP NIL) --> NIL
LISTP [object] Function
…б«Ё <®ЎмҐЄв> Ґбвм бЇЁб®Є - cons Ё«Ё ⮬ NIL, дгЄжЁп
ў®§ўа й Ґв ’, Ё зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN LISTP (OBJ)
(OR (CONSP OBJ) (NULL OBJ)) )
(LISTP 'DOG) --> NIL
(LISTP 100) --> NIL
(LISTP 2/3) --> NIL
(LISTP 4.253) --> NIL
(LISTP '(A B C)) --> T
(LISTP NIL) --> T
Соседние файлы в папке Filp