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

Lisp / Filp / LISP3

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

ASSOC [key,alist,test] Function
ASSOC-IF [test,alist] Function

Ђбб®жЁ вЁў­л© бЇЁб®Є (alist) - нв® бЇЁб®Є Ї а ( в.Ґ.
cons-®ў), ®Ўлз­® ЁбЇ®«м§гҐ¬ле ў muLISP ¤«п бўпнЁ Є«оз  Ё ®ЎмҐЄв .
ASSOC Ё ASSOC-IF пў«повбп дг­ЄжЁп¬Ё ®вЎ®а , Ї®§ў®«пойЁ¬Ё Ї®«гзЁвм
¤®бвгЇ Є ®ЎмҐЄвг, бўп§ ­­®¬г б Є«о箬, 㤮ў«Ґвў®апо饬г вҐбвг.
(ASSOC Є«оз  /бЇЁб®Є вҐбв) ўлЇ®«­пҐв «Ё­Ґ©­л© Ї®ЁбЄ ў
< /бЇЁбЄҐ> Ї ал, ¤«п Є®в®а®© ЇаЁ ба ў­Ґ­ЁЁ ҐҐ car-н«Ґ¬Ґ­в  б
<Є«о祬> Ї® <вҐбвг> ЇаЁн­ Є ­Ґ а ўҐ­ NIL. …б«Ё <вҐбв>- аЈг¬Ґ­в
а ўҐ­ NIL Ё«Ё ­Ґ § ¤ ­, ASSOC ЁбЇ®«м§гҐв EQL-вҐбв.
(ASSOC-IF вҐбв  /бЇЁб®Є) ЁйҐв ў < /бЇЁбЄҐ> Ї аг, ¤«п Є®в®а®©
ЇаЁ§­ Є Їа®ўҐаЄЁ ҐҐ car-н«Ґ¬Ґ­в  Ї® <вҐбвг> Ґбвм ­Ґ NIL.
„«п ®ЎҐЁе дг­ЄжЁ©, Ґб«Ё Ї а , 㤮ў«Ґвў®апой п вҐбвг,
­ ©¤Ґ­ , нв  Ї а  ўл¤ Ґвбп; Ё­ зҐ ў®§ўа й Ґвбп NIL.
ЏаЁ¬Ґа:

(DEFUN ASSOC (KEY ALIST TEST)
((ATOM ALIST) NIL)
((ATOM (CAR ALIST))
(ASSOC KEY (CDR ALIST) TEST) )
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST KEY (CAAR ALIST))
(CAR ALIST) )
(ASSOC KEY (CDR ALIST) TEST) )

(SETQ CAPITALS
'((USA . WASHINGTON) (FRANCE . PARIS) (JAPAN . TOKYO)))
(ASSOC 'FRANCE CAPITALS) --> (FRANCE . PARIS)
(ASSOC 'AUSTRALIA CAPITALS) --> NIL



RASSOC [key,alist,test] Function
RASSOC-IF [test,alist] Function

(RASSOC Є«оз  /бЇЁб®Є вҐбв) ўлЇ®«­пҐв «Ё­Ґ©­л© Ї®ЁбЄ ў
< /бЇЁбЄҐ> Ї ал, ¤«п Є®в®а®© ЇаЁ ба ў­Ґ­ЁЁ ҐҐ cdr-н«Ґ¬Ґ­в  б
<Є«о祬> Ї® <вҐбвг> ЇаЁ§­ Є ­Ґ а ўҐ­ NIL. …б«Ё <вҐбв>- аЈг¬Ґ­в
Ґбвм NIL Ё«Ё ­Ґ § ¤ ­, RASSOC ЁбЇ®«м§гҐв EQL-вҐбв.
(RASSOC-IF вҐбв  /бЇЁб®Є) ўлЇ®«­пҐв ў  /бЇЁбЄҐ Ї®ЁбЄ Ї ал,
¤«п Є®в®а®© ЇаЁ§­ Є Їа®ўҐаЄЁ ҐҐ cdr-н«Ґ¬Ґ­в  Ї® <вҐбвг> ­Ґ а ўҐ­
NIL. „«п ®ЎҐЁе дг­ЄжЁ©, Ґб«Ё Ї а , 㤮ў«Ґвў®апой п вҐбвг,
­ ©¤Ґ­ , нв  Ї а  ўл¤ Ґвбп; ў Їа®вЁў­®¬ б«гз Ґ ўл¤ Ґвбп NIL.
RASSOC - нв® б®Єа йҐ­ЁҐ ®в Reverse Ё ASSOCiate.
ЏаЁ¬Ґа:

(DEFUN RASSOC (KEY ALIST TEST)
((ATOM ALIST) NIL)
((ATOM (CAR ALIST))
(RASSOC KEY (CDR ALIST) TEST) )
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST KEY (CDAR ALIST))
(CAR ALIST) )
(RASSOC KEY (CDR ALIST) YEST) )

(RASSOC 'PARIS CAPITALS) --> (FRANCE . PARIS)
(RASSOC 'CANBERRA CAPITALS) --> NIL



5.2. ”г­ЄжЁЁ Є®­бвагЄв®а 

muLISP-Їа®Ја ¬¬л ¬®Јгв  ўв®¬ вЁзҐбЄЁ ЈҐ­ҐаЁа®ў вм ­®ўлҐ
бвагЄвгал ¤ ­­ле, ЁбЇ®«м§гп дг­ЄжЁЁ Є®­бвагЄв®а . ќвЁ дг­ЄжЁЁ
¬®Јгв б®§¤ ў вм ЎЁ­ а­лҐ ¤ҐаҐўмп Ё«Ё бўп§ ­­лҐ бЇЁбЄЁ, Є®в®алҐ
¬®¤Ґ«Ёагов бвагЄвгал ¤ ­­ле Їа ЄвЁзҐбЄЁ ¤«п «оЎ®© § ¤ зЁ.

CONS [object1, object2] Function

(CONS ®ЎмҐЄв1 ®ЎмҐЄв2) ў®§ўа й Ґв cons, г Є®в®а®Ј®
car-н«Ґ¬Ґ­в гЄ §лў Ґв ­  <®ЎмҐЄв1>,   cdr-н«Ґ¬Ґ­в - ­  <®ЎмҐЄв2>.
…б«Ё §­ зҐ­ЁҐ *FREE-LIST* Ґбвм cons, CONS ¬®¤ЁдЁжЁагҐв Ё
ў®§ўа й Ґв нв®в cons Ё ЇаЁў®¤Ёв *FREE-LIST* Є cdr *FREE-LIST*.
Љ®ааҐЄв­ п Ё­вҐаЇаҐв жЁп (‘ONS ®ЎмҐЄв1 ®ЎмҐЄв2) § ўЁбЁв ®в
в®Ј®, Є Є а бб¬ ваЁў Ґвбп <®ЎмҐЄв2>. …б«Ё <®ЎмҐЄв2> - бЇЁб®Є,
CONS б®§¤ Ґв бЇЁб®Є, ЇҐаўл¬ н«Ґ¬Ґ­в®¬ Є®в®а®Ј® пў«пҐвбп
<®ЎмҐЄв1>,   ®бв вЄ®¬ - <®ЎмҐЄв2>. …б«Ё <®ЎмҐЄв2> -  в®¬ Ё«Ё
ЎЁ­ а­®Ґ ¤ҐаҐў®, CONS б®§¤ Ґв ¤ҐаҐў®, г Є®в®а®Ј® «Ґў п ўҐвўм, Ё«Ё
car-ўҐвўм Ґбвм <®ЎмҐЄв1>,   Їа ў п ўҐвўм, Ё«Ё cdr-ўҐвўм -
<®ЎмҐЄв2>.
ЏаЁ¬Ґа:
(DEFUN CONS (OBJ1 OBJ2)
((ATOM *FREE-LIST*)
(return a new cons pointing to OBJ1 and OBJ2) )
(RPLACA *FREE-LIST* OBJ1)
(RPLACD (PROG1 *FREE-LIST* (POP *FREE-LIST*)) OBJ2) )

(CONS 'A '(B C D)) --> (A B C D)
(CONS 'A 'B) --> (A . B)



ACONS [key,object,alist] Function

(ACONS Є«оз ®ЎмҐЄв  /бЇЁб®Є) б®§¤ Ґв Ї аг (Є«оз . ®ЎмҐЄв),
а бЇ®« Ј Ґв ҐҐ ў ­ з «Ґ < /бЇЁбЄ > Ё ў®§ўа й Ґв १г«мвЁагойЁ©
 бб®жЁ вЁў­л© бЇЁб®Є. ACON гЇа®й Ґв Їа®жҐбб б®§¤ ­Ёп
 бб®жЁ вЁў­ле бЇЁбЄ®ў.
ЏаЁ¬Ґа:
(DEFUN ACONS (KEY OBJ ALIST)
(CONS (CONS KEY OBJ) ALIST) )

(ALIST 'EYES 'BLUE '((WEIGTH . 170) (HEIGTH . 72))) -->
((EYES . BLUE) (WEIGTH . 170) (HEIGTH . 72))



LIST [object1,object2,...,objectn] Function

(LIST ®ЎмҐЄв1 ... ®ЎмҐЄвn) б®§¤ Ґв Ё ўл¤ Ґв бЇЁб®Є,
б®бв® йЁ© Ё§ н«Ґ¬Ґ­в®ў б <®ЎмҐЄв 1> Ї® <®ЎмҐЄвn>. …б«Ё дг­ЄжЁп
ўл§ў ­  ЎҐ§  аЈг¬Ґ­в®ў, в® LIST ў®§ўа й Ґв ЇаЁ§­ Є NIL. LIST
¬®¦Ґв а Ў®в вм б «оЎл¬ Є®«ЁзҐбвў®¬  аЈг¬Ґ­в®ў.
ЏаЁ¬Ґа:
(DEFUN LIST LST
((NULL LST) NIL)
(CONS (CAR LST) (APPLY 'LIST (CDR LST))) )

(LIST 'A 'B 'C 'D) ---> (A B C D)
(LIST 'A '(B C) 'D) ---> (A (B C) D)
(LIST) ---> NIL



LIST* [object1,object2,...,objectn] Function

(LIST* ®ЎмҐЄв1 ... ®ЎмҐЄвn) бўп§лў Ґв ў Ї аг ®ЎмҐЄвл
<®ЎмҐЄв1>,...,<®ЎмҐЄвn-1> Ё <®ЎмҐЄвn> Ё ўл¤ Ґв १г«мвЁагойЁ©
®ЎмҐЄв. …б«Ё дг­ЄжЁп ўл§лў Ґвбп б Ґ¤Ё­б⢥­­л¬  аЈг¬Ґ­в®¬, LIST*
ў®§ўа й Ґв нв®в  аЈг¬Ґ­в.
ЏаЁ¬Ґа:
(DEFUN LIST* LST
((NULL LST) NIL)
((NULL (CDR LST))
(CAR LST) )
(CONS (CAR LST) (APPLY 'LIST* (CDR LST))) )

(LIST* 'A 'B 'C 'D) --> (A B C . D)
(LIST* 'A 'B '(C D)) --> (A B C D)
(LIST* 'DOG) --> DOG




APPEND [list1,list2,...,listn] Function

(APPEND бЇЁб®Є1 бЇЁб®Є2 ... бЇЁб®Єn) б®§¤ Ґв Ё ў®§ўа й Ґв
бЇЁб®Є, б®бв®пйЁ© Ё§ н«Ґ¬Ґ­в®ў бЇЁбЄ®ў, ­ зЁ­ п б® <бЇЁбЄ 1> Ё Ї®
<бЇЁб®Єn>. APPEND Є®ЇЁагҐв cons-л ўлб襣® га®ў­п Є ¦¤®Ј® Ё§
бў®Ёе  аЈг¬Ґ­в®ў, Єа®¬Ґ Ї®б«Ґ¤­ҐЈ®. …б«Ё дг­ЄжЁп ўл§лў Ґвбп б
Ґ¤Ё­б⢥­­л¬  аЈг¬Ґ­в®¬, APPEND Їа®бв® ў®§ўа й Ґв нв®в  аЈг¬Ґ­в
ЎҐ§ ҐЈ® Є®ЇЁа®ў ­Ёп. ‘«Ґ¤®ў вҐ«м­®, ¤«п Є®ЇЁа®ў ­Ёп бЇЁбЄ  «гзиҐ
ЁбЇ®«м§®ў вм COPY-LIST, 祬 APPEND.
Ћв¬ҐвЁ¬, зв® Ґб«Ё APPEND Ё NCONC, ® Є®в®а®© Ўг¤Ґв бЄ § ­®
¤ «ҐҐ, Ё¬Ґов ®¤Ё­ Є®ўлҐ  аЈг¬Ґ­вл, ®­Ё ў®§ўа й ов, Є Є Їа ўЁ«®,
®¤Ё­ Є®ўлҐ бЇЁбЄЁ. Ћ¤­ Є®, APPEND ЁбЇ®«м§гҐв cons-л ¤«п
Є®ЇЁа®ў ­Ёп ўбҐе, Єа®¬Ґ Ї®б«Ґ¤­ҐЈ®,  аЈг¬Ґ­в®ў, в®Ј¤  Є Є NCONC
д ЄвЁзҐбЄЁ ¬®¤ЁдЁжЁагҐв ўбҐ  аЈг¬Ґ­вл, Єа®¬Ґ Ї®б«Ґ¤­ҐЈ®.
ЏаЁ¬Ґа:
(DEFUN APPEND (LST1 LST2)
((ATOM LST1) LST2)
(CONS (CAR LST1) (APPEND (CDR LST1) LST2)) )

(SETQ FOO '(D E F)) --> (D E F)
(APPEND '(A B C) FOO '(G H I)) --> (A B C D E F G H I)
FOO --> (D E F)
(APPRND '(A B C D) 'E 'F 'G) --> (A B C D . G)



COPY-LIST [list] Function

(COPY-LIST бЇЁб®Є) Є®ЇЁагҐв cons-л ўҐае­ҐЈ® га®ў­п <бЇЁбЄ >
Ё ў®§ўа й Ґв бЇЁб®Є, нЄўЁў «Ґ­в­л© (в.Ґ. EQUAL) <бЇЁбЄг>.
ЏаЁ¬Ґа:
(DEFUN COPY-LIST (LST)
((ATOM LST) LST)
(CONS (CAR LST) (COPY-LIST (CDR LST))) )

(COPY-LIST '(A B (C . D) E)) --> (A B (C . D) E)
(COPY-LIST '(A B C . D)) --> (A B C . D)




COPY-TREE [object]

(COPY-TREE ®ЎмҐЄв) Є®ЇЁагҐв ўбҐ cons-л <®ЎмҐЄв > Ё
ў®§ўа й Ґв ®ЎмҐЄв, нЄўЁў «Ґ­в­л© <®ЎмҐЄвг>.
ЏаЁ¬Ґа:
(DEFUN COPY-TREE (OBJ)
((ATOM OBJ) OBJ)
(CONS (COPY-TREE (CAR OBJ)) (COPY-TREE (CDR OBJ))) )

(COPY-TREE '(A B (C . D) E)) --> (A B (C . D) E)
(COPY-TREE '(A B C . D)) --> (A B C . D)



FIRSTN [n,list] Function


…б«Ё <n> - Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, (FIRST n бЇЁб®Є) Є®ЇЁагҐв Ё
ў®§ўа й Ґв ЇҐаўлҐ n н«Ґ¬Ґ­в®ў бЇЁбЄ . FIRSTN ў®§ўа й Ґв NIL, Ґб«Ё
n -­ҐЇ®«®¦ЁвҐ«м­®Ґ 楫®Ґ. …б«Ё <бЇЁб®Є> Ё¬ҐҐв n Ё«Ё Ў®«ҐҐ
н«Ґ¬Ґ­в®ў, FIRSTN Є®ЇЁагҐв Ё ў®§ўа й Ґв н«Ґ¬Ґ­вл <бЇЁбЄ >.
ЏаЁ¬Ґа:
(DEFUN FIRSTN (N LST)
((AND (INTEGERP N) (PLUSP N))
((ATOM LST) NIL)
(CONS (CAR LST) (FIRSTN (SUB1 N) (CDR LST))) ) )

(FIRSTN 0 '(SUE JOE ANN BOB)) --> NIL
(FIRSTN 2 '(SUE JOE ANN BOB)) --> (SUE JOE)
(FIRSTN 4 '(SUE JOE ANN BOB)) --> (SUE JOE ANN BOB)
(FIRSTN 5 '(SUE JOE ANN BOB)) --> (SUE JOE ANN BOB)
(FIRSTN 2 '(A B . C) --> (A B)
(FIRSTN 3 '(A B . C) --> (A B)


BUTLAST [list,n] Function

…б«Ё <n> -­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, (BUTLAST бЇЁб®Є n)
Є®ЇЁагҐв Ё ў®§ўа й Ґв ўбҐ, Єа®¬Ґ n Ї®б«Ґ¤­Ёе н«Ґ¬Ґ­в®ў <бЇЁбЄ >.
…б«Ё n Їа®Їг饭® Ё«Ё «ЁЎ® а ў­® ­г«о, «ЁЎ® ­Ґ пў«пҐвбп
Ї®«®¦ЁвҐ«м­л¬ 楫л¬, BUTLAST Є®ЇЁагҐв Ё ў®§ўа й Ґв ўбҐ, Єа®¬Ґ
Ї®б«Ґ¤­ҐЈ®, н«Ґ¬Ґ­вл <бЇЁбЄ >.
ЏаЁ¬Ґа:
(DEFUN BUTLAST (LST N)
((AND (INTEGERP N) (>=N 0))
(FIRST (-(LENGTH LST) N) LST) )
(BUTLAST LST 1) )

(BUTLAST '(A B C D)) --> (A B C)
(BUTLAST '(A B C D) 2) --> (A B)


REMOVE [item,list,test] Function
REMOVE-IF [test,list] Function

(REMOVE н«Ґ¬Ґ­ бЇЁб®Є вҐбв) ў®§ўа й Ґв Є®ЇЁо <бЇЁбЄ > б®
ўбҐ¬Ё н«Ґ¬Ґ­в ¬Ё, Єа®¬Ґ вҐе, Є®в®алҐ ЇаЁ Їа®ўҐаЄҐ Ї® <вҐбвг>
Ё¬Ґов ЇаЁ§­ Є - ­Ґ NIL Ё г¤ «повбп (в.Ґ. (test item element) ­Ґ
а ўҐ­ NIL).
…б«Ё <вҐбв>- аЈг¬Ґ­в Ґбвм NIL Ё«Ё ­Ґ § ¤ ­, REMOVE
ЁбЇ®«м§гҐв EQL-вҐбв. (REMOVE-IF вҐбв бЇЁб®Є) ў®§ўа й Ґв Є®ЇЁо
<бЇЁбЄ > б® ўбҐ¬Ё н«Ґ¬Ґ­в ¬Ё, Єа®¬Ґ вҐе, Є®в®алҐ Ё¬Ґов
ЇаЁ Їа®ўҐаЄҐ Ї® вҐбвг ЇаЁ§­ Є ­Ґ NIL (test element - ­Ґ NIL) Ё
г¤ «повбп.
ЏаЁ¬Ґа:
(DTFUN REMOVE (ITEM LST TEST)
((ATOM LST) LST)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
(LET ( (COPY (REMOVE ITEM (CDR LST) TEST)) )
((FUNCALL TEST ITEM (CAR LST)) COPY)
((EQ COPY LST) LST)
(CONS (CAR LST) COPY) ) )

(REMOVE '(2 5) '((5 2) (2 5) (2 3))'EQUAL) --> ((5 2) (2 3))
(REMOVE-IF 'MINUSP '(-2 0 7 -0.1 3)) --> (0 7 3)



REVERSE [list,object] Function

(REVERSE бЇЁб®Є ®ЎмҐЄв) б®§¤ Ґв Ё ўл¤ Ґв бЇЁб®Є, б®бв®пйЁ©
Ё§ н«Ґ¬Ґ­в®ў <бЇЁбЄ >, ­® ў ®Ўа в­®¬ Ї®ап¤ЄҐ.
(REVERSE бЇЁб®Є ®ЎмҐЄв) ўл¤ Ґв н«Ґ¬Ґ­вл <бЇЁбЄ > ў ®Ўа в­®¬
Ї®ап¤ЄҐ, ЇаЁб®Ґ¤Ё­Ґ­­лҐ Є <®ЎмҐЄвг>. ђҐ§г«мв в пў«пҐвбп в ЄЁ¬ ¦Ґ,
Є Є Ё ЇаЁ а Ў®вҐ дг­ЄжЁЁ (APPEND (REVERSE list) object), ­® ўл§®ў
REVERSE ў Є зҐб⢥ ўв®а®Ј®  аЈг¬Ґ­в  Ў®«ҐҐ нд䥪⨢Ґ­.
ЏаЁ¬Ґа:
(DEFUN REVERSE (LST OBJ)
((ATOM LST) OBJ)
(REVERSE (CDR LST) (CONS (CAR LST) OBJ))) )

(REVERSE '(A B C D E)) --> (F D C B A)
(REVERSE '(A B C) '(D E F)) --> (C B A D E F)
(REVERSE '(A B C) 'D) --> (C B A . D)



SUBSTITUTE [new,old,list,test] Function
SUBSTITUTE-IF [new,test,list] Function

(SUBSTITUTE ­®ўл© бв ал© бЇЁб®Є вҐбв) ў®§ўа й Ґв Є®ЇЁо
ўлб®Є®Ј® га®ў­п <бЇЁбЄ >, § ¬Ґй п ­  <­®ўлҐ> н«Ґ¬Ґ­вл ⥠<бв алҐ>
н«Ґ¬Ґ­вл <бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§­ Є Їа®ўҐаЄЁ Ї® <вҐбвг> Ґбвм
­Ґ NIL. …б«Ё вҐбв- аЈг¬Ґ­в Ґбвм NIL Ё«Ё ­Ґ § ¤ ­, SUBSTITUTE
ЁбЇ®«м§гҐв EQL-вҐбв.
(SUBSTITUTE-IF ­®л© вҐбв бЇЁб®Є) ў®§ўа й Ґв Є®ЇЁо ўлб®Є®Ј®
га®ў­п <бЇЁбЄ >, § ¬Ґй п ­  <­®ўлҐ> н«Ґ¬Ґ­вл ўбҐ н«Ґ¬Ґ­вл
<бЇЁбЄ >, ¤«п Є®в®але ЇаЁ§­ Є Їа®ўҐаЄЁ Ї® <вҐбвг> Ґбвм ­Ґ NIL.
ЏаЁ¬Ґа:
(DEFUN SUBSTITUTE (NEW OLD LST TEST)
((ATOM LST) LST)
( (NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OLD (CAR LST))
(CONS NEW (SUBSTITUTE NEW OLD (CDR LST) TEST)) )
((SETQ NEW (SUBSTITUTE NEW OLD (CDR LST) TEST))
((EQ NEW (CDR LST)) LST)
(CONS (CAR LST) NEW) )

(SUBSTITUTE 5 2 '(4 2 (3 . 2) 4)) --> (4 5 (3 . 2) 4)
(SUBSTITUTE 'CANNIBALS 'NOUN '(NOUN LIKE TO EAT NOUN) )
--> (CANNIBALS LIKE TO EAT CANNIBALS)



SUBST [new,old,object,test] Function
SUBST-IF [new,test,object] Function

(SUBST ­®ўл© бв ал© ®ЎмҐЄв вҐбв) ў®§ўа й Ґв Є®ЇЁо <®ЎмҐЄв >,
§ ¬Ґй п ­  <­®ўлҐ> ўбҐ <бв алҐ> Ї®¤ўла ¦Ґ­Ёп <®ЎмҐЄв >, ¤«п
Є®в®але ЇаЁ§­ Є Їа®ўҐаЄЁ Ї® <вҐбвг> Ґбвм ­Ґ NIL. …б«Ё
вҐбв- аЈг¬Ґ­в Ґбвм NIL Ё«Ё ­Ґ § ¤ ­, SUBST ЁбЇ®«м§гҐв EQL-вҐбв.
ЏаЁ¬Ґа:

(DEFUN SUBST (NEW OLD OBJ TEST)
( (NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OLD OBJ) NEW)
((ATOM OBJ) OBJ)
(LET ( (LEFT (SUBST NEW OLD (CAR OBJ) TEST))
(RIGHT (SUBST NEW OLD (CDR OBJ) TEST)) )
((AND (EQ LEFT (CAR OBJ)) (EQ RIGHT (CDR OBJ)))
OBJ )
(CONS LEFT RIGHT) ) )

(SUBST 5 2 '(4 2 (3 . 2) 4)) --> (4 5 (3 . 5) 4)



MAKE-LIST [n,object,list] Function

(MAKE-LIST n ®ЎмҐЄв бЇЁб®Є) б®§¤ Ґв Ё ўл¤ Ґв бЇЁб®Є Ё§ <n>
н«Ґ¬Ґ­в®ў, Є ¦¤л© Ё§ Є®в®але ЇаЁ­Ё¬ Ґв §­ зҐ­ЁҐ
<®ЎмҐЄв >, ЇаЁб®Ґ¤Ё­Ґ­­®Ј® Є <бЇЁбЄг>. ЋвбгвбвўЁҐ <n>
®в®¦¤Ґбвў«пҐвбп б 0, ®вгвбвўЁҐ <®ЎмҐЄв > Ё <бЇЁбЄ > - б NIL.
ЏаЁ¬Ґа:
(DEFUN MAKE-LIST (N OBJ LST)
((AND (INTEGERP N) (PLUS N))
(CONS OBJ (MAKE-LIST (SUB1 N) OBJ LST)) )
LST )

(MAKE-LIST 4) --> (NIL NIL NIL NIL)
(MAKE-LIST 3 '(A B C)) --> ((A B C) (A B C) (A B C))
(MAKE-LIST 3 5 '(2 3)) --> (5 5 5 2 3)




OBLIST [] Function

(OBLIST) б®§¤ Ґв Ё ўл¤ Ґв бЇЁб®Є ®ЎмҐЄв®ў - в.Ґ. бЇЁб®Є
 ЄвЁў­ле ­  ⥪гйЁ© ¬®¬Ґ­в бЁ¬ў®«®ў ў бЁб⥬Ґ. ‘Ё¬ў®«л
а бЇ®« Ј овбп ў ⮬ Ї®ап¤ЄҐ, ў Є®в®а®¬ ®­Ё Ўл«Ё бзЁв ­л Ё (Ё«Ё)
бЈҐ­ҐаЁа®ў ­л бва®Є®ўл¬Ё дг­ЄжЁп¬Ё: Ў®«ҐҐ ­®ўлҐ бЁ¬ў®«л
а бЇ®« Ј овбп б«Ґў  ®в Ў®«ҐҐ бв але. Ћв¬ҐвЁ¬, зв® ­Ґ­г¦­лҐ
бЁ¬ў®«л  ўв®¬ вЁзҐбЄЁ ®вЎа блў овбп бЎ®айЁЄ®¬ ¬гб®а  (б¬. а §¤Ґ«
"“Їа ў«Ґ­ЁҐ Ї ¬пвмо" ў Ј«.4 ).
ЏаЁ¬Ґа:
(DEFUN OBLIST ()
(construct a list of the symbols in the oblist) )



LENGTH [object] Function


(LENGTH ®ЎмҐЄв) ў®§ўа й Ґв ¤«Ё­г <®ЎмҐЄв >, ᮮ⢥вбвўгойго
ҐЈ® вЁЇг ¤ ­­ле. …б«Ё <®ЎмҐЄв> Ґбвм NIL Ё«Ё cons, в® LENGTH
ўл¤ Ґв Є®«ЁзҐбвў® cons-®ў ўлб®Є®Ј® га®ў­п (в.Ґ. н«Ґ¬Ґ­в®ў) ў
®ЎмҐЄвҐ. …б«Ё <®ЎмҐЄв> - бЁ¬ў®«, в® LENGTH ўл¤ Ґв Є®«ЁзҐбвў® ЎгЄў
ў ђ-Ё¬Ґ­Ё <®ЎмҐЄв >. …б«Ё <®ЎмҐЄв> - зЁб«®, LENGTH ўл¤ Ґв
Є®«ЁзҐбвў® б«®ў (б«®ў® а ў­® 2-¬ Ў ©в ¬), вॡ㥬ле ¤«п
а §¬ҐйҐ­Ёп зЁб«®ў®Ј® ўҐЄв®а  <®ЎмҐЄв >.
ЏаЁ¬Ґа:
(DEFUN LENGTH (OBJ)
((NULL OBJ) 0)
((SYMBOL OBJ)
(the number of characters in OBJ's print name
string)
((NUMBER OBJ)
(CEILING (ABS OBJ) 65536) )
(ADD1 (LENGTH (CDR OBJ))) )

(LENGTH '(A B C D)) --> 4
(LENGTH NIL) --> 0
(LENGTH 'MULISP) --> 6
(LENGTH -13) --> 1



5.3. ”г­ЄжЁЁ ¬®¤ЁдЁЄ в®а .

”г­ЄжЁЁ ¬®¤ЁдЁЄ в®а  ўлЇ®«­пов ЇҐаҐ ¤аҐб жЁо гЄ § вҐ«Ґ© ў
бвагЄвга е ¤ ­­ле LISP. ‘«Ґ¤®ў вҐ«м­®, ЇаЁ ЁбЇ®«м§®ў ­ЁЁ дг­ЄжЁ©
¬®¤ЁдЁЄ в®а  ў ¦Ґ­ ЇаҐ¦¤Ґ ўбҐЈ® १г«мв в Ёе а Ў®вл, ­Ґ¦Ґ«Ё
ЇҐаҐ¬Ґ­­ п, Є®в®аго ®­Ё ў®§ўа й ов. Џг⥬ ¬®¤ЁдЁЄ жЁЁ
бгйҐбвўго饩 бвагЄвгал ¤ ­­ле гбва ­пҐвбп ­Ґ®Ўе®¤Ё¬®бвм
а бᬮв७Ёп ўбҐ© ­®ў®© бвагЄвгал, Ґб«Ё вॡгҐвбп Ё§¬Ґ­Ёвм «Ёим
в®«мЄ® ¬ «го ҐҐ з бвм.


RPLACA [object1,object2] Function

…б«Ё <®ЎмҐЄв> - ­Ё ЇаЁ§­ Є NIL, ­Ё зЁб«®, (RPLACA ®ЎмҐЄв1
®ЎмҐЄв2) § ¬Ґй Ґв car-н«Ґ¬Ґ­в <®ЎмҐЄв 1> гЄ § вҐ«Ґ¬ ­  <®ЎмҐЄв2>
Ё ўл¤ Ґв ¬®¤ЁдЁжЁа®ў ­­л© <®ЎмҐЄв1>.
ђҐ§г«мв в в Є®Ј® § ¬ҐйҐ­Ёп § ўЁбЁв ®в вЁЇ  <®ЎмҐЄв 1>. …б«Ё
<®ЎмҐЄв1> - бЇЁб®Є, в® 1-© н«Ґ¬Ґ­в бЇЁбЄ  § ¬Ґй Ґвбп ­ 
<®ЎмҐЄв2>. …б«Ё <®ЎмҐЄв1> - ЎЁ­ а­®Ґ ¤ҐаҐў®, в® «Ґў п ўҐвўм
¤ҐаҐў  § ¬Ґй Ґвбп ­  <®ЎмҐЄв2>. …б«Ё <®ЎмҐЄв1> - бЁ¬ў®«, ­® ­Ґ
NIL,н«Ґ¬Ґ­в §­ зҐ­Ёп бЁ¬ў®«  ЇаЁ­Ё¬ Ґвбп §  <®ЎмҐЄв2>. ‚® ўбҐе
б«гз пе ў®§ўа й Ґвбп ¬®¤ЁдЁжЁа®ў ­­л© <®ЎмҐЄв1>.
ЏаЁ¬Ґа:
(DEFUN RPLACA (OBJ1 OBJ2)
((OR (NUMBER OBJ1) (NULL OBJ1)) OBJ1)
(replace the car cell of OBJ1 with a pointer to OBJ2)
OBJ1 )

(SETQ FOO '9A B C)) --> (A B C)
(RPLACA FOO 'D) --> (D B C)
FOO --> (D B C)



RPLACD [object1,object2] Function

…б«Ё <®ЎмҐЄв1> - ­Ё бЁ¬ў®« NIL, ­Ё зЁб«®, (RPLACD ®ЎмҐЄв1
®ЎмҐЄв2) § ¬Ґй Ґв cdr-н«Ґ¬Ґ­ <®ЎмҐЄв 1> гЄ § вҐ«Ґ¬ ­  <®ЎмҐЄв2>
Ё ўл¤ Ґв ¬®¤ЁдЁжЁа®ў ­­л© <®ЎмҐЄв1>.
ђҐ§г«мв в в Є®Ј® § ¬ҐйҐ­Ёп § ўЁбЁв ®в вЁЇ  <®ЎмҐЄв 1>. …б«Ё
<®ЎмҐЄв1> - бЇЁб®Є, ®бв в®Є бЇЁбЄ  ( в.Ґ. ўбҐ, Єа®¬Ґ ЇҐаў®Ј®,
н«Ґ¬Ґ­вл) § ¬Ґй Ґвбп ­  <®ЎмҐЄв2>. …б«Ё <®ЎмҐЄв1> - ЎЁ­ а­®Ґ
¤ҐаҐў®, в® Їа ў п ўҐвўм ¤ҐаҐў  § ¬Ґй Ґвбп ­  <®ЎмҐЄв2>. …б«Ё
<®ЎмҐЄв1> - бЁ¬ў®«, ­® ­Ґ NIL, в® бЇЁб®Є бў®©бвў бЁ¬ў®« 
§ ¬Ґй Ґвбп ­  <®ЎмҐЄв2>. ‚® ўбҐе б«гз пе ў®§ўа й Ґвбп
¬®¤ЁдЁжЁа®ў ­­л© <®ЎмҐЄв1>.
ЏаЁ¬Ґа:
(DEFUN RPLACD (OBJ1 OBJ2)
((OR (NUMBERP OBJ1) (NULL OBJ1)) OBJ1)
(replace the cdr cell of OBJ1 with a pointer to OBJ2)
OBJ1 )

(SETQ FOO '(A B C)) --> (A B C)
(RPLACD FOO '(D E)) --> (A D E)
FOO --> (A D E)








Соседние файлы в папке Filp
  • #
    15.06.201426.71 Кб20LISP2.TXT
  • #
    15.06.2014421 б22LISP20.LSP
  • #
    15.06.2014538 б20LISP21.LSP
  • #
    15.06.2014457 б19LISP22.LSP
  • #
    15.06.2014911 б19LISP3.LSP
  • #
    15.06.201421.88 Кб20LISP3.TXT
  • #
    15.06.20141.26 Кб21LISP4.LSP
  • #
    15.06.201419.19 Кб19LISP4.TXT
  • #
    15.06.20141.67 Кб21LISP5.LSP
  • #
    15.06.201415.68 Кб19LISP5.TXT
  • #
    15.06.20141.02 Кб20LISP6.LSP