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

Lisp / Filp / LISP2

.TXT
Скачиваний:
20
Добавлен:
15.06.2014
Размер:
26.71 Кб
Скачать
4.3. Џ ЄҐвл ЇаҐалў ­Ё©

Џ ЄҐвл ЇаҐалў ­Ё© muLISP ўл§лў овбп ॣ㫨஢騪®¬
ЇаҐалў ­Ё© ( б¬. а §¤Ґ« 4.4 ) Ё ॣ㫨஢騪®¬ § ¤Ґа¦ЄЁ ®иЁЎ®Є
(б¬. а §¤Ґ« 4.5 ). Љ®Ј¤  ЇаҐалў ­ЁҐ ў®§­ЁЄ Ґв, в® Ї®б«Ґ б®®ЎйҐ­Ёп
® ЇаҐалў ­ЁЁ Ё«Ё ®Ў ®иЁЎЄҐ ­  нЄа ­ ¤ЁбЇ«Ґп ўлᢥ稢 Ґвбп
Ї®¤бЄ §Є  ў ўЁ¤Ґ ®ЇжЁ©:
Continue,Break,Abort,Top-level,Restart,System?
‡ вҐ¬ бЁб⥬  ¦¤Ґв, Ї®Є  Ї®«м§®ў вҐ«м ўлЎҐаҐв ®¤­г Ё§ ®ЇжЁ©
Їг⥬ гЄ § ­Ёп ҐҐ Ё¬Ґ­Ё ( ‘,‚,Ђ,’,R Ё«Ё S ᮮ⢥вб⢥­­® ).
Ћв¬ҐвЁ¬, зв® ®ЇжЁЁ ЇҐаҐзЁб«Ґ­л ў Ї®ап¤ЄҐ гбЁ«Ґ­Ёп Ёе ¤Ґ©бвўЁп.
- Continue ( Їа®¤®«¦Ёвм ): ў®§ўа й Ґв гЇа ў«Ґ­ЁҐ Їа®Ја ¬¬Ґ,
Є®в®а п ўл§ў «  ЇаҐалў ­ЁҐ ( ®бв ­®ў ). …б«Ё ЇаЁзЁ­®© ЇаҐалў ­Ёп
Ўл«  Є®¬ ­¤  ЇаҐалў ­Ёп, Ї®б« ­­ п б Є« ўЁ вгал, в® ўлЇ®«­Ґ­ЁҐ
Їа®¤®«¦ Ґвбп, Є Є Ґб«Ё Ўл ЇаҐалў ­Ёп ( ®бв ­®ў  ) ­Ґ Їа®Ё§®и«®.
…б«Ё ЇаҐалў ­ЁҐ Їа®Ё§®и«® ў १г«мв вҐ § ¤Ґа¦ЄЁ ®иЁЎЄЁ, ўҐ«ЁзЁ­ ,
ЇҐаҐ¤ ­­ п ЇаЁ ЇаҐалў ­ЁЁ ॣ㫨஢騪®¬ ®иЁЎ®Є, ў®§ўа й Ґвбп
Є Є §­ зҐ­ЁҐ ®иЁЎ®з­®© дг­ЄжЁЁ;
- Break ( ®бв ­®ў ): ўаҐ¬Ґ­­® ЇаЁ®бв ­ ў«Ёў Ґв ўлЇ®«­Ґ­ЁҐ
Їа®Ја ¬¬л Ё ўл室Ёв ­  б«Ґ¤гойЁ© ­Ё¦­Ё© га®ўҐ­м жЁЄ« 
"read-eval-print" ( "з⥭ЁҐ-ўлзЁб«Ґ­ЁҐ-ЇҐз вм" ). ќв® Ї®§ў®«пҐв
Ї®«м§®ў вҐ«о Їа®ўҐаЁвм Ё«Ё ( Ё ) Ё§¬Ґ­Ёвм ⥪гйго б।г muLISP
ЇҐаҐ¤ Їа®¤®«¦Ґ­ЁҐ¬ ўлЇ®«­Ґ­Ёп Їа®Ја ¬¬л. „«п ўл室  Ё§ ®бв ­®ў  Ё
ў®§®Ў­®ў«Ґ­Ёп а Ў®вл Їа®Ја ¬¬л ­ ЎҐаЁвҐ

( RETURN )

ўб«Ґ¤ §  §­ Є®¬ ¤®«« а  ( б¬. а §¤Ґ« "€­вҐадҐ©б Ї®«м§®ў вҐ«п" ў
Ј«. 5 ¤«п Ў®«ҐҐ ¤Ґв «м­®Ј® Ё§г祭Ёп ЇаЁ­жЁЇ  "read-eval-print" );
- Abort ( ЇаҐалў ­ЁҐ ): ЇаҐалў Ґв ўлЇ®«­Ґ­ЁҐ Їа®Ја ¬¬л,
ЇаЁбў Ёў Ґв д®а¬ «м­л¬ Ї а ¬Ґва ¬, а §¬ҐйҐ­­л¬ ў б⥪Ґ
ЇҐаҐ¬Ґ­­ле, ЇҐаў®­ з «м­лҐ §­ зҐ­Ёп Ё ў®§ўа й Ґв гЇа ў«Ґ­ЁҐ ­ 
⥪гйЁ© га®ўҐ­м жЁЄ«  "read-eval-print". ЋЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁ©,
§­ зҐ­Ёп бў®©бвў Ё Ј«®Ў «м­ле ЇҐаҐ¬Ґ­­ле ®бв овбп ­ҐЁ§¬Ґ­­л¬Ё;
- Top-level ( ўҐае­Ё© га®ўҐ­м ): ЇаҐалў Ґв ўлЇ®«­Ґ­ЁҐ
Їа®Ја ¬¬л, ЇаЁбў Ёў Ґв ЇҐаў®­ з «м­лҐ §­ зҐ­Ёп д®а¬ «м­л¬
Ї а ¬Ґва ¬, Є®в®алҐ а §¬Ґй овбп ў б⥪Ґ ЇҐаҐ¬Ґ­­ле, ўлᢥ稢 Ґв
­  Є®­б®«м ⥪гйЁҐ ўе®¤­лҐ Ё ўл室­лҐ ¤ ­­лҐ (CIS Ё COS) Ё
ў®§ўа й Ґв гЇа ў«Ґ­ЁҐ ўҐае­Ґ¬г га®ў­о жЁЄ«  "read-eval-print".
®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁ©, §­ зҐ­Ёп бў®©бвў Ё Ј«®Ў «м­ле ЇҐаҐ¬Ґ­­ле
®бв овбп ­ҐЁ§¬Ґ­­л¬Ё;
- Restart ( Ї®ўв®а­л© бв ав ): § Єалў Ґв ўбҐ ®вЄалвлҐ д ©«л,
®вЄ §лў Ґвбп ®в ⥪г饩 б।л muLISP Ё Ё­ЁжЁЁагҐв ­®ўго бЁб⥬г
muLISP. ‚ᥠбўп§Ё ¬Ґ¦¤г ЇҐаҐ¬Ґ­­л¬Ё, дг­ЄжЁЁ Ё §­ зҐ­Ёп бў®©бвў ў
⥪г饩 б।Ґ muLISP а §аги овбп;
- Svstem ( бЁб⥬  ): § Єалў Ґв ўбҐ ®вЄалвлҐ д ©«л, § ўҐаи Ґв
ўлЇ®«­Ґ­ЁҐ muLISP Ё ў®§ўа й Ґв гЇа ў«Ґ­ЁЇҐ агЄ®ў®¤п饩 Ћ‘.

4.4. ‘Ёб⥬  ЇаҐалў ­Ё© б Є®­б®«Ё

‚ «оЎ®Ґ ўаҐ¬п ў 室Ґ ўлЇ®«­Ґ­Ёп Їа®Ја ¬¬л Ё­ЁжЁЁа®ў ­­ п
Ї®«м§®ў вҐ«Ґ¬ бЁб⥬  ЇаҐалў ­Ё© б Є®­б®«Ё ¬®¦Ґв ®бв ­®ўЁвм
ўлЇ®«­Ґ­ЁҐ Їа®Ја ¬¬л Ё ў®§ўа вЁв гЇа ў«Ґ­ЁҐ ­  Є®­б®«м.
ЏаҐалў ­ЁҐ б Є®­б®«Ё Ё­ЁжЁЁагҐвбп Їг⥬ ­ ¦ вЁп Є« ўЁиЁ
<ESC> ­  Є« ўЁ вгॠЄ®­б®«Ё. …б«Ё ­  Є« ўЁ вгॠ­Ґв Є« ўЁиЁ
<ESC>, в® бЁ¬ў®« ЇаҐалў ­Ёп ¬®¦Ґв Ўлвм бЈҐ­ҐаЁа®ў ­ Їг⥬ ­ ¦ вЁп
Є« ўЁиЁ «Ґў®© бЄ®ЎЄЁ ([) б ®¤­®ўаҐ¬Ґ­­л¬ ­ ¦ вЁҐ¬ Є« ўЁиЁ <CTRL>.
…б«Ё ¦Ґ Ё в Є ­Ґ Ї®«гз Ґвбп, в® бЁ¬ў®« ¤«п ЈҐ­Ґа жЁЁ ЇаҐалў ­Ё© б
Є®­б®«Ё ¬®¦Ґв Ўлвм Ё§¬Ґ­Ґ­ Їг⥬ ¬®¤ЁдЁЄ жЁЁ Default Readtable
®б­®ў­®© бва ­Ёжл muLISP ( б¬. Ј« ўг 9 ).
ЏаЁ ў®§­ЁЄ­®ўҐ­ЁЁ ЇаҐалў ­Ёп б Є®­б®«Ё ­  нЄа ­Ґ Є®­б®«Ё
ўлᢥ稢 Ґвбп б®®ЎйҐ­ЁҐ:

Console Interrupt Break: NIL

‡  ­Ё¬ ­  б«Ґ¤го饩 бва®ЄҐ Ї®пў«пҐвбп Ї®¤бЄ §Є  ў ўЁ¤Ґ ®ЇжЁ©
ЇаҐалў ­Ёп ( б¬. а §¤Ґ« 4.3 ). Џ®«м§®ў вҐ«м ¬®¦Ґв § вҐ¬ аҐиЁвм,
Є Є Їа®¤®«¦Ёвм а Ў®вг.
…б«Ё Ї® ­ҐЄ®в®ал¬ ЇаЁзЁ­ ¬ ­Ґв ®вўҐв  ­  ЇаҐалў ­ЁҐ б
Є« ўЁ вгал, ў®§¬®¦­® ®бгиҐбвўЁвм ЇаҐалў ­ЁҐ ў бЁб⥬Ґ
Їг⥬ ЇҐаҐЄ«о祭Ёп ќ‚Њ ( е®вп нв® ўбҐЈ¤  ­Ґ¦Ґ« вҐ«м­® ).

4.5. ‘®®ЎйҐ­Ёп ®Ў ®иЁЎЄ е

‚ ¤ ­­®¬ а §¤Ґ«Ґ ЇаЁў®¤пвбп б®®ЎйҐ­Ёп ®Ў ®иЁЎЄ е ў бЁб⥬Ґ
muLISP,   в Є¦Ґ ®ЇжЁЁ, Ё¬ҐойЁҐбп ў а бЇ®а殮­ЁЁ Ї®«м§®ў вҐ«п ЇаЁ
Ї®пў«Ґ­ЁЁ ®иЁЎ®Є.
Љ®Ј¤  muLISP ®Ў­ аг¦Ёў Ґв ®иЁЎ®з­®Ґ б®бв®п­ЁҐ, ўл§лў Ґвбп
дг­ЄжЁп BREAK. BREAK ўл¤ Ґв ᮮ⢥вбвўго饥 б®®ЎйҐ­ЁҐ ®Ў ®иЁЎЄҐ,
ЇаЁ®бв ­ ў«Ёў Ґв ўлЇ®«­Ґ­ЁҐ Їа®Ја ¬¬л Ё ®ЎҐбЇҐзЁў Ґв Ї®«м§®ў вҐ«п
®ЇжЁп¬Ё Їа®¤®«¦Ґ­Ёп а Ў®вл ­  ўлЎ®а ( б¬. а §¤Ґ« 4.3 ).
ЌЁ¦Ґ ў  «д ўЁв­®¬ Ї®ап¤ЄҐ ЇаЁўҐ¤Ґ­л б®®ЎйҐ­Ёп ®Ў ®иЁЎЄ е
muLISP:
- DISK FULL ( ¤ЁбЄ Ї®«­л© ): ®§­ з Ґв, зв® Ї ¬пвЁ ¤«п
а §¬ҐйҐ­Ёп ¤ ­­ле, § ЇЁб ­­ле ­  ¤ЁбЄ®ў®¬ д ©«Ґ, ­Ґ еў в Ґв.
‚лЇ®«­Ґ­ЁҐ Їа®Ја ¬¬л ЇаҐЄа й Ґвбп, Ё ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї®
®иЁЎЄҐ. ’.Є. д ©« ®бв Ґвбп ®вЄалвл¬, Ё¬ҐҐвбп ў®§¬®¦­®бвм бвҐаҐвм
Ё ¤агЈЁҐ д ©«л ­  ўбҐ© ¤ЁбЄҐвҐ ( б Ї®¬®ймо дг­ЄжЁЁ EXETUTE ) Ё
Їа®¤®«¦Ёвм § ЇЁбм ў д ©«;
- END-OF-FILE ( Є®­Ґж д ©«  ): ®§­ з Ґв, зв® Ўл«  ᤥ« ­ 
Ї®ЇлвЄ  бзЁв вм ¤ ­­лҐ §  ЇаҐ¤Ґ« ¬Ё Є®­ж  ўе®¤­®Ј® д ©«  ( CIF )
Ё«Ё Ё§ ҐЈ® Їгбвле ¬Ґбв ( б¬. дг­ЄжЁо WRITEPTR ў Ј«. 5, Ј¤Ґ
а бб¬ ваЁў Ґвбп Ї®­пвЁҐ "Їгбвле ¬Ґбв" ў § ЇЁб ­­®¬ д ©«Ґ ).
‘«Ґ¤®¬ §  б®®ЎйҐ­ЁҐ¬ "end-of-file" ўлᢥ稢 Ґвбп Ё¬п CIF ў ўЁ¤Ґ
бЇЁбЄ  вЁЇ : "drive:name.type";
- FILE NOT FOUND ( д ©« ­Ґ ­ ©¤Ґ­ ): ®§­ з Ґв, зв® Ёб室­л©
Ё ( Ё«Ё ) SYS-д ©«, гЄ § ­­л© ў Є®¬ ­¤ е Ћ‘, Ё­ЁжЁЁагойЁе muLISP,
­Ґ ­ ©¤Ґ­, Ё«Ё SYS-д ©« ­ҐЇа ўЁ«м­®© ўҐабЁЁ. SYS-д ©« ¬®¦Ґв Ўлвм
§ Ја㦥­ в®«мЄ® Ї®¤ гЇа ў«Ґ­ЁҐ¬ в®© ўҐабЁЁ muLISP, Є®в®а п
ЁбЇ®«м§гҐвбп ¤«п б®еа ­Ґ­Ёп д ©« . ‚ Ј«. 2 ®ЇЁб ­®, Є Є § Јаг¦ вм
д ©«л б ЁбЇ®«м§®ў ­ЁҐ¬ Є®¬ ­¤ Ћ‘.
€б室­лҐ Ё SYS-д ©«л, Єа®¬Ґ в®Ј®, ¬®Јгв Ўлвм § Ја㦥­л ў
muLISP б ЁбЇ®«м§®ў ­ЁҐ¬ Є®¬ ­¤ RDS Ё LOAD ᮮ⢥вб⢥­­®. Љ®Ј¤ 
®¤­  Ё§ нвЁе Є®¬ ­¤ § ўҐаи Ґвбп,   д ©« ­Ґ ­ ©¤Ґ­, ў¬Ґбв®
б®®ЎйҐ­Ёп "file not found" Є®¬ ­¤  ў®§ўа й Ґв ЇаЁ§­ Є NIL;
- INSUFFICIENT ARGUMENTS ( ­Ґ¤®бв в®з­®Ґ Є®«ЁзҐбвў®
 аЈг¬Ґ­в®ў ): ®§­ з Ґв, зв® дг­ЄжЁп, вॡгой п Ї® Єа ©­Ґ© ¬ҐаҐ
®¤­®Ј®  аЈг¬Ґ­в , ўл§лў Ґвбп ЎҐ§  аЈг¬Ґ­в®ў. ”г­ЄжЁп¬Ё, Є®в®алҐ
¬®Јгв ўл§ў вм нв®в вЁЇ ®иЁЎЄЁ, пў«повбп:
MAX,MIN,-,/,ADD1,SUB1,LCM,ABS,SIGNUM,NUMERATOR,DENOMINATOR,FLOOR,
CEILING,TRUNCATE,ROUND,MJD,REM,DIVIDE,LOGNOT,BITLENGTH Ё SHIFT;
- INSUFFICIENT MEMORY, ABORTING ( ­Ґ¤®бв в®з­®Ґ Є®«ЁзҐбвў®
Ї ¬пвЁ, ЇаҐалў ­ЁҐ ): ®§­ з Ґв, зв® Ё¬ҐҐв ¬Ґбв® ­Ґеў вЄ  Ї ¬пвЁ
¤«п § Јаг§ЄЁ Ё дг­ЄжЁ®­Ёа®ў ­Ёп б।л muLISP. ђ Ў®в  muLISP
ЇаЁ®бв ­ ў«Ёў Ґвбп, Ё гЇа ў«Ґ­ЁҐ ў®§ўа й Ґвбп Є гЇа ў«по饩 Ћ‘.
Ћв¬ҐвЁ¬, зв® б।  muLISP, б®е࠭塞 п ў SYS-д ©«Ґ, ¬®¦Ґв
Ўлвм § Ја㦥­  ў ќ‚Њ, Ё¬Ґойго ¬Ґ­миЁ© ®ЎмҐ¬ Ї ¬пвЁ, 祬 ќ‚Њ, ­ 
Є®в®а®© нв  б।  Ўл«  б®§¤ ­ . ЋиЁЎЄ  Ї® ­Ґеў вЄҐ Ї ¬пвЁ
ў®§­ЁЄ Ґв в®«мЄ® в®Ј¤ , Є®Ј¤  ќ‚Њ, ­  Є®в®а®© SYS-д ©« Ўл«
§ Ја㦥­, ­Ґ ®Ў« ¤ Ґв ¤®бв в®з­л¬ ®ЎмҐ¬®¬ Ї ¬пвЁ ¤«п а §¬ҐйҐ­Ёп
б।л muLISP. …¤Ё­б⢥­­л© Їгвм § Јаг§ЄЁ SYS-д ©«®ў - нв®
Ї®«г祭ЁҐ Ў®«м襣® ®ЎмҐ¬  Ї ¬пвЁ ¤«п ќ‚Њ.
- MEMORY FULL ( Ї ¬пвм ўбп ): ®§­ з Ґв, зв® Ї ¬пвЁ ¤«п
Їа®¤®«¦Ґ­Ёп ўлЇ®«­Ґ­Ёп Їа®Ја ¬¬ muLISP ­Ґ еў в Ґв. ‚лЇ®«­Ґ­ЁҐ
Їа®Ја ¬¬ ЇаЁ®бв ­ ў«Ёў Ґвбп, Ё ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ.
„Ґ©б⢨⥫쭮, бЁб⥬  гЇа ў«Ґ­Ёп Ї ¬пвмо ®ЎҐбЇҐзЁў Ґв
¤®бв в®з­л¬ Є®«ЁзҐбвў®¬ Ї ¬пвЁ Є ¦¤го ®Ў« бвм ¤ ­­ле ¤«п Ї®«­®Ј®
㤮ў«Ґвў®аҐ­Ёп Ї®вॡ­®б⥩ Їа®Ја ¬¬ muLISP. …б«Ё вॡ®ў ­Ёп ­ 
®ЎмҐ¬ Ї ¬пвЁ ¤«п а §¬ҐйҐ­Ёп ®ЎмҐЄв®ў ¤ ­­ле ЇаҐўли ов ўбҐ
¤®бвгЇ­лҐ аҐбгабл, ў®§­ЁЄ Ґв нв  ®иЁЎЄ . ‚¬Ґб⥠б б®®ЎйҐ­ЁҐ¬ ®Ў
®иЁЎЄҐ ўлᢥ稢 Ґвбп бв вЁбвЁЄ  ў б«Ґ¤го饩 д®а¬Ґ:

GC: nnnn aaaa/aaaa vvvv/vvvv pppp/pppp ssss/ssss tttt/tttt

Ґбв­ ¤ж вҐаЁз­лҐ жЁдал, б«Ґ¤гойЁҐ §  "GC:", Ї®Є §лў ов
а §¬Ґа Ї ¬пвЁ, ®б⠢襩бп ў Є ¦¤®© Ё§ ®б­®ў­ле 4-е ®Ў« б⥩
¤ ­­ле. ‘«Ґ¤®ў вҐ«м­®, ¬®¦Ґв Ўлвм ®ЇаҐ¤Ґ«Ґ­  ®Ў« бвм ¤ ­­ле,
бўп§ ­­ п б ®иЁЎЄ®© ( б¬. а §¤Ґ« "”г­ЄжЁЁ гЇа ў¤Ґ­Ёп Ї ¬пвмо" ў
Ј«. 5 ¤«п Ї®¤а®Ў­®Ј® Ё§г祭Ёп §­ зҐ­Ёп нв®© бв вЁбвЁЄЁ );
- NONINTEGER ARGUMENT ( ­ҐжҐ«л©  аЈг¬Ґ­в ): ®§­ з Ґв, зв®
дг­ЄжЁп, вॡгой п 楫ле  аЈг¬Ґ­в®ў, ўл§ў ­  б ­ҐжҐ«л¬
 аЈг¬Ґ­в®¬. ”г­ЄжЁЁ, ¤«п Є®в®але нв  ®иЁЎЄ  ¬®¦Ґв ўбваҐвЁвмбп,
нв®: LOGAND, LOGIOR, LOGXOR, LOGNOT, SHIFT Ё BITLENGTH;
- NONINTEGER ARGUMENT ( ­ҐзЁб«®ў®©  аЈг¬Ґ­в ): ®§­ з Ґв, зв®
дг­ЄжЁп, вॡгой п зЁб«®ўле  аЈг¬Ґ­в®ў, ўл§ў ­  б ­ҐзЁб«®ўл¬
 аЈг¬Ґ­в®¬. ’ Є п ®иЁЎЄ  ¬®¦Ґв ў®§­ЁЄ­гвм ¤«п б«Ґ¤гойЁе
дг­ЄжЁ©:=, /=, <, >, <=, >=, MAX, MIN, +, -, *, /, ADD1, SUB1,
INCQ, DECQ, GCD, LCM, ABC, SIGNUM, NUMERATOR, DENOMINATOR, FLOOR,
CEILING, TRUNCATE, ROUND, MOD, REM Ё DIVIDE;
- NONSYMBOLIC ARGUMTNT ( ­ҐбЁ¬ў®«м­л©  аЈг¬Ґ­в ): ®§­ з Ґв,
зв® дг­ЄжЁп, вॡгой п бЁ¬ў®«м­ле  аЈг¬Ґ­в®ў, ўл§ў ­  б
­ҐбЁ¬ў®«м­л¬  аЈг¬Ґ­в®¬. Љ в ЄЁ¬ дг­ЄжЁп¬ ®в­®бпвбп: SET, SETQ,
PSETQ, POP, PUSH, INCQ Ё DECQ;
- SYNTAX ERROR ( бЁ­в ЄбЁзҐбЄ п ®иЁЎЄ  ): ®§­ з Ґв, зв®
дг­ЄжЁп READ ўбваҐвЁ«  ¤ЁЎ® «Ёи­ЁҐ Їа ўлҐ бЄ®ЎЄЁ, «ЁЎ® ­Ґв®з­®бвм
ў в®зҐз­®¬ Ё§®Ўа ¦Ґ­ЁЁ, ­ ЇаЁ¬Ґа, (A.) Ё«Ё (AB.CD). ’.Є.
ЇаҐалў ­ЁҐ Ї® ¤ ­­®© ®иЁЎЄҐ ЈҐ­ҐаЁагҐвбп ¬ Єа®б®¬ Їа ўле бЄ®Ў®Є
Ё«Ё § Їпвле, ®­® ¬®¦Ґв Ўлвм ¬®¤ЁдЁжЁа®ў ­®
Ї®«м§®ў вҐ«Ґ¬-Їа®ҐЄвЁа®ўйЁЄ®¬;
- UNDIFINED FUNCTION ( ­Ґ®ЇаҐ¤Ґ«Ґ­­ п дг­ЄжЁп ): ®§­ з Ґв,
зв® Ўл«  ᤥ« ­  Ї®ЇлвЄ  ЁбЇ®«м§®ў ­Ёп бЁ¬ў®« , ­Ґ Ё¬Ґо饣®
®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁЁ. ЋЎйЁ¬Ё ¤Ґ©бвўЁп¬Ё ЇаЁ Ї®пў«Ґ­ЁЁ нв®© ®иЁЎЄЁ
пў«повбп: ўлЎ®а ®ЇжЁЁ BREAK, ®ЇаҐ¤Ґ«Ґ­ЁҐ ­Ґ®ЇаҐ¤Ґ«Ґ­­®Ј® бЁ¬ў®« 
Ё Їа®¤®«¦Ґ­ЁҐ Ёб室­®© Їа®Ја ¬¬л б Ї®¬®ймо Є®¬ ­¤л:
( RETURN ( EVAL BREAK ))
- ZERO DIVIDE ( ¤Ґ«Ґ­ЁҐ ­  0 ): ®§­ з Ґв, зв® Ўл«  ўл§ў ­ 
дг­ЄжЁп ¤Ґ«Ґ­Ёп б ­г«Ґўл¬ ¤Ґ«ЁвҐ«Ґ¬. ’ ЄЁ¬Ё дг­ЄжЁп¬Ё ¬®Јгв
Ўлвм: /, FLOOR, CEILING, TRUNCATE, ROUND, MOD, REM Ё DIVIDE.

5. ЏаЁ¬ЁвЁўл muLISP

‚ ¤ ­­®© Ј« ўҐ ¤ Ґвбп ®ЇЁб ­ЁҐ дг­ЄжЁ© muLISP, бЇҐжЁ «м­ле
д®а¬ Ё ЇҐаҐ¬Ґ­­ле гЇа ў«Ґ­Ёп, Є®в®алҐ ЇҐаў®­ з «м­® ®ЇаҐ¤Ґ«Ґ­л ­ 
¬ иЁ­­®¬ п§лЄҐ. ”г­ЄжЁЁ, ЇҐаҐ¬Ґ­­лҐ гЇа ў«Ґ­Ёп Ё (Ё«Ё) ¬ Єа®бл,
ўе®¤пйЁҐ ў ЇаЁЄ« ¤­лҐ Їа®Ја ¬¬л muLISP, ¤®«¦­л Ўлвм ®ЇаҐ¤Ґ«Ґ­л ­ 
®б­®ўҐ ¤ ­­ле ЇаЁ¬ЁвЁў®ў. „ ­­ п Ј« ў  ¤Ґ«Ёвбп ­  а §¤Ґ«л,
е а ЄвҐаЁ§гойЁҐ ®в¤Ґ«м­лҐ ЇаЁ¬ЁвЁўл muLISP.
‡ Ј« ў­л¬Ё ЎгЄў ¬Ё ў Є ¦¤®¬ ЇаЁ¬ЁвЁўҐ (ўла ¦Ґ­ЁЁ)
®Ў®§­ з овбп ҐЈ® Ё¬п,  аЈг¬Ґ­вл Ё«Ё ­ з «м­®Ґ §­ зҐ­ЁҐ, Ё вЁЇ.
€¬п ўла ¦Ґ­Ёп § ЇЁблў Ґвбп б«Ґў  ў б®Єа йҐ­­®¬ ўЁ¤Ґ. …б«Ё
ўла ¦Ґ­ЁҐ Ґбвм дг­ЄжЁп, §  ҐҐ Ё¬Ґ­Ґ¬ б«Ґ¤гҐв бЇЁб®Є Ё¬Ґ­ ҐҐ
 аЈг¬Ґ­в®ў ( ®в 0 Ё Ў®«миҐ ), § Є«о祭­л© ў ЄагЈ«лҐ бЄ®ЎЄЁ. ‘«®ў®
"дг­ЄжЁп" § ЇЁблў Ґвбп ў Їа ў®¬ Є®­жҐ.
…б«Ё ўла ¦Ґ­ЁҐ Ґбвм бЇҐжЁ «м­ п д®а¬ , §  ҐҐ Ё¬Ґ­Ґ¬ б«Ґ¤гҐв
бЇЁб®Є Ё¬Ґ­  аЈг¬Ґ­в®ў, § Є«о祭­л© ў ЄагЈ«лҐ бЄ®ЎЄЁ. ”а § 
"бЇҐжЁ «м­ п д®а¬ " § ЇЁблў Ґвбп ў Їа ў®¬ Є®­жҐ.
‘«Ґ¤®¬ §  § Ј« ў­л¬Ё ЎгЄў ¬Ё ўла ¦Ґ­Ёп а бЇ®« Ј Ґвбп
®ЇЁб ­ЁҐ ўла ¦Ґ­Ёп ­  ҐбвҐб⢥­­®¬ п§лЄҐ. „«п дг­ЄжЁ© Ё
бЇҐжЁ «м­ле д®а¬ ®ЇЁб ­ЁҐ ўЄ«оз Ґв ў бҐЎп ®ЇЁб ­ЁҐ  аЈг¬Ґ­в®ў,
Є®в®алҐ ®­Ё ¤®ЇгбЄ ов, ЇаЁ§­ Є , Є®в®ал© ®­Ё ў®§ўа й ов, Ё
а §«Ёз­ле Ї®Ў®з­ле нд䥪⮢, Є®в®алҐ ®­Ё ўл§лў ов. „«п ЇҐаҐ¬Ґ­­ле
гЇа ў«Ґ­Ёп ®ЇЁб ­ЁҐ ўЄ«оз Ґв ў бҐЎп ®ЇЁб ­ЁҐ Ёе ў®§¤Ґ©бвўЁ© ­ 
б।г muLISP.
C«Ґ¤®¬ §  ®ЇЁб ­ЁҐ¬ дг­ЄжЁ© Ё«Ё бЇҐжЁ «м­ле д®а¬ ­ 
ҐбвҐб⢥­­®¬ п§лЄҐ Ё¤Ґв д®а¬ «м­®Ґ ®ЇаҐ¤Ґ«Ґ­ЁҐ ЇаЁ¬ЁвЁў ,
§ ЇЁб ­­®Ґ ­  muLISP. ”г­ЄжЁЁ ®ЇаҐ¤Ґ«повбп б Ї®¬®ймо бЇҐжЁ «м­®©
д®а¬л ®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁ© DEFUN. ‘ЇҐжЁ «м­лҐ д®а¬л ®ЇаҐ¤Ґ«повбп б
Ї®¬®ймо бЇҐжЁ «м­®© д®а¬л ¬ Єа®®ЇаҐ¤Ґ«Ґ­Ёп DEFMACRO.
€­®Ј¤  ¤«п д®а¬ «м­®Ј® ®ЇаҐ¤Ґ«Ґ­Ёп ЇаЁ¬ЁвЁў®ў ЁбЇ®«м§говбп
ўбЇ®¬®Ј вҐ«м­лҐ дг­ЄжЁЁ. €¬Ґ­  ўбЇ®¬®Ј вҐ«м­ле дг­ЄжЁ©
§ ЇЁблў овбп Їа®ЇЁб­л¬Ё ЎгЄў ¬Ё; нв® ®Ў®§­ з Ґв, зв® ®­Ё
­Ґ¤®бвгЇ­л ¤«п Ї®«м§®ў вҐ«п. Љ®Ј¤  ­Ґ®Ўе®¤Ё¬® ўўҐбвЁ Ёб室­®Ґ
Ї®­пвЁҐ ў д®а¬ «м­®Ґ ®ЇаҐ¤Ґ«Ґ­ЁҐ, нв® Ї®­пвЁҐ ®ЇЁблў Ґвбп ­ 
 ­Ј«Ё©бЄ®¬ п§лЄҐ б ЁбЇ®«м§®ў ­ЁҐ¬ Їа®ЇЁб­ле ЎгЄў.
Ќ Є®­Ґж, ў Ј« ўҐ ¤ овбп ЇаЁ¬Ґал ЁбЇ®«м§®ў ­Ёп ЇаЁ¬ЁвЁў®ў
muLISP. ўла ¦Ґ­Ё©. ЏаЁ§­ ЄЁ, ў®§ўа й Ґ¬лҐ дг­ЄжЁп¬Ё, § ЇЁблў овбп
бЇа ў  ®в дг­ЄжЁЁ б«Ґ¤®¬ §  "-->". Љ®¬¬Ґ­в аЁЁ а бЇ®«®¦Ґ­л Ї®б«Ґ
в®зЄЁ б § Їпв®© ( в®зЄ  б § Їпв®© - нв® а §Ја ­ЁзЁвҐ«м
Є®¬¬Ґ­в аЁҐў muLISP ).

5.1. ”г­ЄжЁЁ ®вЎ®а  ( selector f-ns )

Ћб­®ў­®© бвагЄвга®© ¤ ­­ле ў muLISP пў«пҐвбп ЎЁ­ а­®Ґ
¤ҐаҐў®, б®бв®п饥 Ё§ cons-®ў ( ўҐвўҐ© ) Ё § Є ­зЁў о饥бп  в®¬ ¬Ё
( «Ёбвмп¬Ё ). Ћб­®ў­лҐ дг­ЄжЁЁ ®вЎ®а  CAR Ё CDR ўлЎЁа ов
ᮮ⢥вб⢥­­® car ( «Ґўго ) Ё cdr ( Їа ўго ) ўҐвўЁ ¤ҐаҐўмҐў.

CAR [ object ] Function

(CAR object) ў®§ўа й Ґв car-н«Ґ¬Ґ­в <®ЎмҐЄв > (в.Ґ. ®ЎмҐЄв
¤ ­­ле, ­  Є®в®ал© гЄ §лў Ґв car-н«Ґ¬Ґ­в <®ЎмҐЄв >).
Љ®ааҐЄв­ п Ё­вҐаЇаҐв жЁп car-н«Ґ¬Ґ­в  ®ЎмҐЄв  § ўЁбЁв ®в
в®Ј®, пў«пҐвбп «Ё ®ЎмҐЄв  в®¬®¬,   Ґб«Ё ­Ґв, а бб¬ ваЁў Ґвбп «Ё
®­ Є Є бЇЁб®Є Ё«Ё ЎЁ­ а­®Ґ ¤ҐаҐў®. …б«Ё ®ЎмҐЄв -  в®¬, в® ҐЈ®
car-н«Ґ¬Ґ­в Ґбвм ⥪г饥 §­ зҐ­ЁҐ  в®¬ . …б«Ё ®ЎмҐЄв - бЇЁб®Є,
ҐЈ® car-н«Ґ¬Ґ­в Ґбвм ЇҐаўл© н«Ґ¬Ґ­в бЇЁбЄ . …б«Ё ®ЎмҐЄв -
ЎЁ­ а­®Ґ ¤ҐаҐў®, ҐЈ® car-н«Ґ¬Ґ­в Ґбвм «Ґў п ўҐвўм ¤ҐаҐў , Ё«Ё
car-ўҐвўм.
ЏаЁ¬Ґа:
(DEFUN CAR (OBJ)
(the contents of the car cell of OBJ) )

(CAR '(A B C D E)) --> A
(CAR '(A.B) . C)) --> (A.B)
(SETQ NUM 7) --> 7
(CAR 'NUM) --> 7

CDR [ object ] Function

(CDR object) ў®§ўа й Ґв cdr-н«Ґ¬Ґ­в <®ЎмҐЄв > (в.Ґ. ®ЎмҐЄв
¤ ­­ле, ­  Є®в®ал© гЄ §лў Ґв cdr-н«Ґ¬Ґ­в <®ЎмҐЄв >).
Љ®ааҐЄв­ п Ё­вҐаЇаҐв жЁп cdr-н«Ґ¬Ґ­в  ®ЎмҐЄв  н ўЁбЁв ®в
в®Ј®, пў«пҐвбп «Ё ®ЎмҐЄв  в®¬®¬, бЇЁбЄ®¬ Ё«Ё ЎЁ­ а­л¬ ¤ҐаҐў®¬.
…б«Ё ®ЎмҐЄв - бЁ¬ў®«, ҐЈ® cdr-н«Ґ¬Ґ­в Ґбвм бЇЁб®Є бў®©бвў
бЁ¬ў®« . …б«Ё ®ЎмҐЄв - зЁб«®, ҐЈ® cdr-н«Ґ¬Ґ­в гЄ §лў Ґв ЇаЁ§­ Є Ё
вЁЇ зЁб«  (б¬. Ј«. 4). …б«Ё ®ЎмҐЄв - бЇЁб®Є, ҐЈ® cdr-н«Ґ¬Ґ­в Ґбвм
®бв в®Є бЇЁбЄ  (в.Ґ. ўбҐ, Єа®¬Ґ Ї®б«Ґ¤­ҐЈ®, н«Ґ¬Ґ­вл бЇЁбЄ ).
…б«Ё ®ЎмҐЄв - ЎЁ­ а­®Ґ ¤ҐаҐў®, ҐЈ® cdr-н«Ґ¬Ґ­в Ґбвм Їа ў п ўҐвўм
¤ҐаҐў , Ё«Ё cdr-ўҐвўм.
ЏаЁ¬Ґа:
(DEFUN CDR (OBJ)
(the contents of the cdr cell of OBJ) )

(CDR '(A B C D E)) --> (B C D E)
(CDR '((A.B) . C)) --> C
(CDR 'JOE 'SEX 'MALE) --> MALE
(CDR 'JOE) --> ((SEX . MALE))


CAAR [object] Function
CDAR [object] Function
CDDR [object] Function

CAAAR [object] Function
CDAAR [object] Function
......
CAAAAR [object] Function
......
CDDDDR [object] Function

ђ §аҐи Ґвбп ЁбЇ®«м§®ў вм дг­ЄжЁЁ, пў«пойЁҐбп Є®¬ЎЁ­ жЁп¬Ё
CAR Ё CDR. €¬п Є ¦¤®© Ё§ нвЁе дг­ЄжЁ© ­ зЁ­ Ґвбп б "‘" Ё
§ Є ­зЁў Ґвбп ­  "R". ЊҐ¦¤г ­Ё¬Ё а бЇ®« Ј Ґвбп Ї®б«Ґ¤®ў вҐ«м­®бвм
Ё§ ЎгЄў "Ђ" Ё "D", гЄ §лў ойЁе, Є Є Є®¬ЎЁ­Ёаговбп CAR Ё CDR ЇаЁ
ўлЇ®«­Ґ­ЁЁ дг­ЄжЁЁ.
ђ бᬮваЁ¬ вЁЇЁз­лҐ ®ЇаҐ¤Ґ«Ґ­Ёп ¤«п б®бв ў­ле дг­ЄжЁ© ®вЎ®а :

(DEFUN CAAR (OBJ)
(CAR (CAR OBJ)) )
(DEFUN CADDR (OBJ)
(CAR (CDR (CDR OBJ))) )
(DEFUN CDADAR (OBJ)
(CDR (CAR (CDR (CAR OBJ)))) )
(SETQ TREE '((((A.B) . (C . D)) . ((E . F) . (G . H))) .
(((I . J) . (K . L)) . ((M . N) . (O . P)))) )
(CAR TREE) --> (((A . B) . (C . D)) . ((E . F) . (G .
H)))
(CDR TREE) --> (((I . J) . (K . L)) . ((M . N) . (O . P)))
(CAAR TREE) --> ((A . B) . (C . D))
(CDAR TREE) --> ((E . F) . (G . H))
(CADR TREE) --> ((I . J) . (K . L))
........
(CAAAR TREE) --> (A . B)
(CDAAR TREE) --> (C . D)
(CADAR TREE) --> (E . F)
(CDDAR TREE) --> (G . H)
........
(CAAAAR TREE) --> A
(CDAAAR TREE) --> B
(CADAAR TREE) --> C
........
(CDDDDR TREE) --> P

— бв® Ў®«ҐҐ ҐбвҐб⢥­­л¬ Ўлў Ґв а бб¬ ваЁў вм ®ЎмҐЄв ¤ ­­ле
Є Є бЇЁб®Є, 祬 Є Є бЁ«м­® а §ўҐвў«Ґ­­®Ґ ЎЁ­ а­®Ґ ¤ҐаҐў®.
‘«Ґ¤гойЁҐ ᥫҐЄв®ал иЁа®Є® ЁбЇ®«м§говбп ¤«п Ё§ў«ҐзҐ­Ёп н«Ґ¬Ґ­в®ў
бЇЁбЄ :
(CAR '(A B C D E)) --> A
(CDR '(A B C D E)) --> (B C D E)
(CADR '(A B C D E)) --> B
(CADDR '(A B C D E)) --> C
(CADDDR '(A B C D E)) --> D

„ ­­л¬ ᥫҐЄв®а ¬ ¬®Јгв Ўлвм ЇаЁбў®Ґ­л (Ї® ¦Ґ« ­Ёо) ¤агЈЁҐ
¬­Ґ¬®­ЁзҐбЄЁҐ Ё¬Ґ­ . „«п нв®Ј® ¬®¦­® ЁбЇ®«м§®ў вм дг­ЄжЁо MOVD
(б¬. а §¤Ґ« 5.10), Є®в®а п § ¬Ґ­Ёв (Move) ®ЇаҐ¤Ґ«Ґ­ЁҐ (Definition)
CAR ­  FIRST, CDR ­  REST, CADR ­  SECOND Ё в.¤.


LAST [list] Function

( LAST list ) ў®§ўа й Ґв Ї®б«Ґ¤­Ё© ­® ўҐае­Ґ¬ га®ў­Ґ cons
<бЇЁбЄ >. Ћв¬ҐвЁ¬, зв® LAST ў®§ўа й Ґв Ї®б«Ґ¤­Ё© cons, ­® ­Ґ
Ї®б«Ґ¤­Ё© н«Ґ¬Ґ­в <бЇЁбЄ >. …б«Ё <бЇЁб®Є> Ґбвм  в®¬, LAST
ў®§ўа й Ґв ЇаЁ§­ Є NIL. Љ Є Ї®Є § ­® ­  ЇаЁ¬ҐаҐ, Ї®б«Ґ¤­Ё©
н«Ґ¬Ґ­в ¬®¦Ґв Ё§ў«ҐЄ вмбп Їг⥬ ЁбЇ®«м§®ў ­Ёп дг­ЄжЁЁ CAR ®в
(LAST list).

ЏаЁ¬Ґа:
(DEFUN KAST (LST)
((ATOM LST) NIL)
((ATOM (CDR LST)) LST)
(LAST (CDR LST)) )

(LAST '(A B C D)) --> (D)
(LAST '(A B C . D)) --> (C . D)
(LAST 'FCO) --> NIL
(CAR (LAST '(A B C))) --> C


NTHCDR [n,list] Function

…б«Ё n - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, (NTHCDR n list)
ў®§ўа й Ґв n-© cdr <бЇЁбЄ >. NTHCDR ў®§ўа й Ґв NIL, Ґб«Ё n - ­Ё
0, ­Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, Ё«Ё Ґб«Ё <бЇЁб®Є> Ё¬ҐҐв n Ё«Ё ¬Ґ­миҐ
н«Ґ¬Ґ­в®ў.
ЏаЁ¬Ґа:

(DEFUN NTHCDR (N LST)
((ZEROP N) LST)
((AND (INTEGERP N) (PLUSP N))
((ATOM LST) NIL)
(NTHCDR (SUB1 N) (CDR LST)) ) )

(NTHCDR 0 '(A B C D)) --> (A B C D)
(NTHCDR 1 '(A B C D)) --> (B C D)
(NTHCDR 2 '(A B C D)) --> (C D)
(NTHCDR 5 '(A B C D)) --> NIL
(NTHCDR 2 '(A B . C)) --> C


NTH [n,list] Function

…б«Ё n - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, (NTH n list)
ў®§ўа й Ґв n-© н«Ґ¬Ґ­в <бЇЁбЄ >, Ј¤Ґ car <бЇЁбЄ > - ­г«Ґў®©
н«Ґ¬Ґ­в. NTH ў®§ўа й Ґв NIL, Ґб«Ё n - ­®«м, ­Ё Ї®«®¦ЁвҐ«м­®Ґ
楫®Ґ, «ЁЎ® Ґб«Ё <бЇЁб®Є> Ё¬ҐҐв n Ё«Ё ¬Ґ­миҐ н«Ґ¬Ґ­в®ў.
ЏаЁ¬Ґа:

(DEFUN NTH (N LST)
((ATOM (NTHCDR N LST)) NIL)
(CAR (NTHCDR N LST)) )

(NTH 0 '(A B C D)) --> A
(NTH 3 '(A B C D)) --> D
(NTH 4 '(A B C D)) --> NIL
(NTH 2 '(A B . C)) --> NIL


SUBLIST [list,n,m] Function

…б«Ё n Ё m - ­Ґ®ваЁж вҐ«м­лҐ 楫лҐ, Ё n<=m, (SUBLIST list n
m) Є®ЇЁагҐв Ё ўл¤ Ґв б n-Ј® Ї® m-© н«Ґ¬Ґ­вл <бЇЁбЄ >, Ј¤Ґ
car-н«Ґ¬Ґ­в <бЇЁбЄ > Ґбвм ­г«Ґў®© н«Ґ¬Ґ­в. …б«Ё m - ­Ґ 楫®Ґ
зЁб«® Ё«Ё Ў®«миҐ Ё«Ё а ў­® ¤«Ё­л <бЇЁбЄ >, m ЇаЁ­Ё¬ Ґвбп Є Є
ўҐ«ЁзЁ­  ­  Ґ¤Ё­Ёжг ¬Ґ­миҐ ¤«Ё­л <бЇЁбЄ >. …б«Ё n - ­Ґ 楫®Ґ
зЁб«®, ®ваЁж вҐ«м­®Ґ зЁб«® Ё«Ё n>m, SUBLIST ў®§ўа й Ґв NIL.
ЏаЁ¬Ґа:
(DEFUN SUBLIST (LST N M)
((INTEGERP N)
((INTEGERP M)
(FIRST (ADD1 (-M N)) (NTHCDR N LST)) )
(NTHCDR N LST) ) )
(SUBLIST '(A B C D E F) 2 4) --> (C D E0
(SUBLIST '(A B C D E F) 2 2) --> (C)
(SUBLIST '(A B C D E F) 0 3) --> (A B C D)
(SUBLIST '(A B C D E F) 2) --> (C D E F)


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

(COUNT object list test) ў®§ўа й Ґв Є®«ЁзҐбвў® н¤Ґ¬Ґ­в®ў ў
<бЇЁбЄҐ>, ¤«п Є®в®але ЇаЁ§­ Є ЇаЁ ба ў­Ґ­ЁЁ б
<®ЎмҐЄв®¬> Ї® <вҐбвг> ­Ґ а ўҐ­ NIL. …б«Ё <вҐбв>- аЈг¬Ґ­в ­Ґ § ¤ ­
Ё«Ё а ўҐ­ NIL, COUNT ЁбЇ®«м§гҐв EQL-вҐбв.
(COUNT-IF test list) ў®§ўа й Ґв Є®«ЁзҐбвў® н«Ґ¬Ґ­в®ў ў
<бЇЁбЄҐ>, ¤«п Є®в®але ЇаЁ§­ Є Їа®ўҐаЄЁ Ї® <вҐбвг> - ­Ґ NIL.
ЏаЁ¬Ґа:

(DEFUN COUNT (OBJ LST TEST)
(count-aux (OBJ LST TEST 0) )
(DEFUN count-aux (OBJ LST TEST COUNTER)
((ATOM LST) COUNTER)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
((FUNCALL TEST OBJ (CAR LST))
(count-aux OBJ (CDR LST) TEST (ADD1 COUNTER)) )
(count-aux OBJ (CDR LST) TEST COUNTER) )
(COUNT 'DOG '(CAT DOG COW PIG DOG ANT)) --> 2
(COUNT-IF 'EVENP '(3 -6 8 7 0)) --> 3


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

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

(FIND 'EAT '(CORN WHEAT OATS RICE) 'FINDSTRING) --> WHEAT
(FIND-IF '(LAMBDA (X) (MINUSP (CDR X)))
'((X . 3) (Y . 0) 9Z . -2/3))) --> (Z . -0.6666666)


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

(POSITION ®ЎмҐЄв бЇЁб®Є вҐбв) ўлЇ®«­пҐв «Ё­Ґ©­л© Ї®ЁбЄ ў
<бЇЁбЄҐ> в®Ј® н«Ґ¬Ґ­в , ¤«п Є®в®а®Ј® ЇаЁ§­ Є ба ў­Ґ­Ёп б
<®ЎмҐЄв®¬> Ї® <вҐбвг> Ґбвм ­Ґ NIL. …б«Ё вҐбв- аЈг¬Ґ­в - NIL Ё«Ё
­Ґ § ¤ ­, POSITION ЁбЇ®«м§гҐв EQL-вҐбв.
(POSITION-IF вҐбв бЇЁб®Є) ЁйҐв ў <бЇЁбЄҐ> н«Ґ¬Ґ­в, ¤«п
Є®в®а®Ј® ЇаЁ§­ Є Їа®ўҐаЄЁ Ї® вҐбвг Ґбвм ­Ґ NIL. „«п ®ЎҐЁе
дг­ЄжЁ©, Ґб«Ё н«Ґ¬Ґ­в, 㤮ў«Ґвў®апойЁ© вҐбвг, ­ ©¤Ґ­,
ў®§ўа й Ґвбп Ї®ап¤Є®ўл© ­®¬Ґа ¤ ­­®Ј® н«Ґ¬Ґ­в , ­ зЁ­ п б 0. ‚
Їа®вЁў­®¬ б«гз Ґ ў®§ўа й Ґвбп NIL.
ЏаЁ¬Ґа:
(DEFUN POSITION (OBJ LST TEST)
(position-aux OBJ LST TEST 0) )

(DEFUN position-aux (OBJ LST TEST INDEX)
((ATOM LST) NIL)
( ((NULL TEST)
(SETQ TEST 'EQL) ) )
(FUNCALL TEST OBJ (CAR LST)) INDEX)
(position-aux OBJ (CDR LST) TEST (ADD1 INDEX)

(POSITION '(A B C) '((R S T) (C A B) (A B C))) --> NIL
(POSITION '(A B C) '((R S T) (C A B) (A B C)) 'EQUAL) --> 2
(POSITION-IF 'PLUSP '(-2.5 0 3.7 -5.3)) --> 2





Соседние файлы в папке Filp
  • #
    15.06.2014817 б19LISP17.LSP
  • #
    15.06.201421.3 Кб20LISP17.TXT
  • #
    15.06.2014585 б20LISP18.LSP
  • #
    15.06.2014689 б19LISP19.LSP
  • #
    15.06.20141.26 Кб20LISP2.LSP
  • #
    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