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

Lisp / Filp / LISP13

.TXT
Скачиваний:
19
Добавлен:
15.06.2014
Размер:
22.59 Кб
Скачать
UNWIND-PROTECT [form1,form2,...,formN] Special form

(UNWIND-PROTECT д®а¬ 1 ... д®а¬ N) ўлзЁб«пҐв <д®а¬г1>,  
§ вҐ¬ - ®бв ўиЁҐбп д®а¬л б Ї®¬®ймо ­Ґпў­®Ј® PROGN, ¤ ¦Ґ Ґб«Ё
ўлзЁб«Ґ­ЁҐ <д®а¬л1> § Є®­зЁ«®бм ЇҐаҐе®¤®¬. Љ®Ј¤  ўлЇ®«­Ґ­ЁҐ PROGN
§ Є ­зЁў Ґвбп, UNWIND-PROTECT ў®§ўа й Ґв १г«мв в ўлзЁб«Ґ­Ёп
<д®а¬л1>, Ґб«Ё ®­® § Є®­зЁ«®бм ­®а¬ «м­®. ‚ Їа®вЁў­®¬ б«гз Ґ
дг­ЄжЁп Їа®¤®«¦ Ґв ўлЇ®«­пвм ЇҐаҐе®¤, Ґб«Ё ўлзЁб«Ґ­ЁҐ <д®а¬л1>
§ Є®­зЁ«®бм ЇҐаҐе®¤®¬.
UNWIND-PROTECT 㤮ЎҐ­ ¤«п ЁбЇ®«м§®ў ­Ёп ў вҐе б«гз пе, Є®Ј¤ 
­г¦­® "ЇаЁўҐбвЁ ў Ї®а冷Є" зв®-«ЁЎ® Ї®б«Ґ ўлзЁб«Ґ­Ёп <д®а¬л1>
­Ґ§ ўЁбЁ¬® ®в в®Ј®, Є Є § ўҐаиЁ«®бм нв® ўлзЁб«Ґ­ЁҐ. Ќ ЇаЁ¬Ґа,
¤ ­­ п д®а¬  Ўг¤Ґв Ј а ­вЁҐ© в®Ј®, зв® Ї®б«Ґ ўлзЁб«Ґ­Ёп "ЇЁ" б
ўлб®Є®© в®з­®бвмо ¤«п в®з­®бвЁ Ўг¤Ґв ў®ббв ­®ў«Ґ­® ҐҐ
ЇҐаў®­ з «м­®Ґ §­ зҐ­ЁҐ, ¤ ¦Ґ Ґб«Ё ўлзЁб«Ґ­ЁҐ "ЇЁ" Ўл«® ЇаҐаў ­®
б Є« ўЁ вгал Ё«Ё ў®§­ЁЄ«  ®иЁЎЄ  "Memory full".
ЏаЁ¬Ґа:
(PROGN (SETQ OLD-PRECISION (PRECISION))
(UNWIND-PROTECT (PROGN (PRECISION 100)
(COMPUTE-PI) )
(PRECISION OLD-PRECISION) ) )



THROW [label,object] Function

(THROW ¬ҐвЄ  ®ЎмҐЄв) ­ҐЇ®б।б⢥­­® § Є ­зЁў Ґв ўлЇ®«­Ґ­ЁҐ
⥪г饣® ⥫  дг­ЄжЁЁ, ЇаЁбў Ёў Ґв ЇҐаҐ¬Ґ­­®© THROW §­ зҐ­ЁҐ
<®ЎмҐЄв > Ё ЇҐаҐ¤ Ґв гЇа ў«Ґ­ЁҐ ®Ўа в­® ­  ЇаҐ¤л¤гйЁ© CATCH,
Ё¬ҐойЁ© ¬ҐвЄг <¬ҐвЄ > Ё«Ё ¬ҐвЄг NIL. CATCH ў®§ўа й Ґв <®ЎмҐЄв>
(в.Ґ. §­ зҐ­ЁҐ ЇҐаҐ¬Ґ­­®© THROW). …б«Ё CATCH ­Ґ ­ ©¤Ґ­,
гЇа ў«Ґ­ЁҐ ў®§ўа й Ґвбп Є ўлЇ®«­Ё¬®¬г ¤а ©ўҐаг muLISP.
Ћв¬ҐвЁ¬, зв® THROW - нв® ўлзЁб«пҐ¬ п дг­ЄжЁп, Ї®н⮬г
<¬ҐвЄ > Ё <®ЎмҐЄв> ўлзЁб«повбп ¤® в®Ј®, Є Є ў®§­ЁЄ Ґв ЇҐаҐе®¤.
ЏаЁ¬Ґа:
(DEFUN THROW (LABEL EXPN)
(SETQ THROW EXPN)
(activate the throw flag)
(unwind the variable and control stacks until a CATCH with
a matching label or the NIL label is found, or the
top-level muLISP executive loop is reached) )

(CATCH 'FOO (PRINT 'DOG)
(CATCH 'BAR (PRINT 'CAT)
(THROW 'FOO 'COW)
(PRINT 'PIG) )
(PRINT 'RAT) )

DOG
CAT
COW


RETURN [object Function

(RETURN ®ЎмҐЄв) ЇаЁ®бв ­ ў«Ёў Ґв ўлЇ®«­Ґ­ЁҐ дг­ЄжЁЁ,
ᮤҐа¦ йҐ© RETURN, а бЄагзЁў Ґв (unwinds) б⥪Ё Ё ў®§ўа й Ґв
<®ЎмҐЄв> ў Є зҐб⢥ бў®ҐЈ® §­ зҐ­Ёп.
ЏаЁ¬Ґа:
(DEFUN RETURN (OBJ)
(terminate execution of the current function body and
have the function return OBJ)

(DEFUN return-test ()
(PRINT 'DOG) (RETURN 'CAT) (PRINT 'PIG) )
(return-test)
DOG
CAT



RESTART [] Function

(RESTART) § Єалў Ґв ўбҐ ®вЄалвлҐ д ©«л, ®вЄ §лў Ґвбп ®в
⥪г饩 б।л muLISP Ё Ё­ЁжЁЁагҐв ­®ўго бЁб⥬г muLISP. ‚ᥠбўп§Ё
¬Ґ¦¤г ЇҐаҐ¬Ґ­­л¬Ё, дг­ЄжЁЁ Ї®«м§®ў вҐ«Ґ© Ё §­ зҐ­Ёп бў®©бвў ў
⥪г饩 б।Ґ а §аги овбп.



SYSTEM [integer] Function

(SYSTEM) § Єалў Ґв ўбҐ ®вЄалвлҐ д ©«л, § Є ­зЁў Ґв
ўлЇ®«­Ґ­ЁҐ muLISP Ё ў®§ўа й Ґв Є®­ва®«м гЇа ў«по饩 Ћ‘.
…б«Ё бЁб⥬  а Ў®в Ґв Ї®¤ гЇа ў«Ґ­ЁҐ¬ MS-DOS ўҐабЁЁ 2.00 Ё«Ё
ўлиҐ,   в Є¦Ґ Ґб«Ё <楫®Ґ> Ґбвм ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ
зЁб«®, ¬Ґ­миҐ, 祬 256, (SYSTEM 楫®Ґ_зЁб«®) ў®§ўа й ҐвЄ®¤ ўл室 
(­ §лў Ґ¬л© ҐйҐ Є®¤®¬ ў®§ўа в ) <楫®Ј®_зЁб« > ¤«п гЇа ў«по饣®
Їа®жҐбб .
Љ®¤ ўл室  ¬®¦Ґв § Їа иЁў вмбп Є®¬ ­¤®© MS-DOS "IF
ERRORLEVEN". …б«Ё <楫®Ґ_зЁб«®> ®вбгвбвўгҐв, muLISP ў®§ўа й Ґв
Є®¤ ў®§ўа в , Ї® 㬮«з ­Ёо еа ­пйЁ©бп ў бва ­ЁжҐ Ї ¬пвЁ muLISP.
ЏаЁ¬Ґа:










EXECUTE [program,command-line] Function

(EXECUTE Їа®Ја ¬¬  бва®Є -Є®¬ ­¤) ЇаЁ®бв ­ ў«Ёў Ґв muLISP,
§ вҐ¬ § Јаг¦ Ґв Ё ўлЇ®«­пҐв <Їа®Ја ¬¬г>, ЇҐаҐ¤ ў п Ґ© ў Є зҐб⢥
 аЈг¬Ґ­в  <бва®Єг-Є®¬ ­¤>. Љ®Ј¤  <Їа®Ја ¬¬ > § ўҐаи Ґвбп,
гЇа ў«Ґ­ЁҐ ў®§ўа й Ґвбп Є muLISP,   EXECUTE ў®§ўа й Ґв Є®¤ ўл室 
Ё§ <Їа®Ја ¬¬л>. …б«Ё <Їа®Ја ¬¬ > ­Ґ ­ ©¤Ґ­ , EXECUTE ў®§ўа й Ґв
NIL. Ћв¬ҐвЁ¬: EXECUTE ¤®бвгЇ­  в®«мЄ® в®Ј¤ , Є®Ј¤  muLISP
ўлЇ®«­пҐвбп Ї®¤ гЇа ў«Ґ­ЁҐ¬ MS-DOS ўҐабЁЁ 2.00 Ё ўлиҐ.
Ќ ЁЎ®«ҐҐ з бв® EXECUTE ЁбЇ®«м§гҐвбп ¤«п ўл§®ў  ўв®аЁз­®Ј®
Їа®жҐбб®а  Є®¬ ­¤ (б¬. "‚л§®ў ўв®аЁз­®Ј® Їа®жҐбб®а  Є®¬ ­¤".
ђ §¤Ґ« MS-DOS Reference Manual). Ќ ЇаЁ¬Ґа, Ґб«Ё д ©« Їа®жҐбб®а 
Є®¬ ­¤ COMMAND.COM а §¬Ґй Ґвбп ­  гбва®©б⢥ Ђ:, Є®¬ ­¤  muLISP

(EXECUTE "A: COMMAND.COM" "/C DIR B:")

ўлᢥвЁв ᮤҐа¦Ё¬®Ґ д ©«  ­  гбва®©бвў® ‚.





5.17. ”г­ЄжЁЁ гЇа ў«Ґ­Ёп Ї ¬пвмо

”г­ЄжЁп RECLAIM гЇа ў«пҐв а Ў®в®© бЎ®айЁЄ  ¬гб®а  Ё
ў®§ўа й Ґв १г«мвЁаго饥 Є®«ЁзҐбвў® бў®Ў®¤­®© ®Ў« бвЁ ¤ ­­ле.
’.Є. гЇа ў«Ґ­ЁҐ Ї ¬пвмо ў muLISP Ї®«­®бвмо  ўв®¬ вЁ§Ёа®ў ­®,
RECLAIM ЁбЇ®«м§гҐвбп в®«мЄ® ¤«п ®ЇаҐ¤Ґ«Ґ­Ёп Є®«ЁзҐбвў  бў®Ў®¤­®©
Ї ¬пвЁ Ё«Ё ЇҐаҐ¤ а Ў®в®© ўаҐ¬Ґ­­®Ј® вҐбв  - ¤«п ¬Ё­Ё¬Ё§ жЁЁ
Є®«ЁзҐбвў  бЎ®айЁЄ®ў ¬гб®а  ў Їа®жҐбᥠࠡ®вл вҐбв . ‘Ёб⥬ 
гЇа ў«Ґ­Ёп Ї ¬пвмо ў muLISP ®ЇЁб ­  ў Ј«.4.


RECLAIM [ ] Function

(RECLAIM) гЇа ў«пҐв а Ў®в®© бЎ®айЁЄ  ¬гб®а , ЁбЇа ў«пп
­ҐЄ®а४в­лҐ бвагЄвгал ¤ ­­ле ¤«п зҐвлаҐе ®Ў« б⥩ ¤ ­­ле muLISP.
…б«Ё вॡгҐвбп, ўлЇ®«­пҐвбп в Є¦Ґ ЇҐаҐа бЇаҐ¤Ґ«Ґ­ЁҐ Ї ¬пвЁ.
‚®§ўа й Ґвбп Ёв®Ј®ў®Ґ зЁб«® Ў ©в®ў,¤®бвгЇ­ле Ї®¤ ®Ў« бвЁ  в®¬®ў,
ўҐЄв®а®ў, гЄ § вҐ«Ґ© Ё б⥪®ўлҐ ®Ў« бвЁ.
ЏаЁ¬Ґа:








RECLAIM :'RECLAIM Control variable

…б«Ё Є®­ва®«м­ п ЇҐаҐ¬Ґ­­ п RECLAIM а ў­  NIL, ­  Є®­б®«м
ўлᢥ稢 Ґвбп Ё­д®а¬ жЁ®­­ п бв вЁбвЁЄ  ¤® Ё Ї®б«Ґ а Ў®вл ўбҐе
бЎ®айЁЄ®ў ¬гб®а  Ё ЇҐаҐа бЇаҐ¤Ґ«Ґ­Ёп Ї ¬пвЁ. ЏҐаў п бва®Є 
бв вЁбвЁЄЁ Ї®Є §лў Ґв, Є Є п ®Ў« бвм пў«пҐвбп ¤®бвгЇ­®© ¤«п
а Ў®вл ¤® а Ў®вл бЎ®айЁЄ  ¬гб®а . ‚в®а п бва®Є  Ї®Є §лў Ґв
¤®бвгЇ­го ®Ў« бвм Ї®б«Ґ а Ў®вл бЎ®айЁЄ . ‘ва®ЄЁ, ­ зЁ­ ойЁҐбп б
"GC", ®§­ з ов бв вЁбвЁЄг бЎ®айЁЄ  ¬гб®а ; бва®ЄЁ, ­ зЁ­ ойЁҐбп
б "RA", ®§­ з ов бв вЁбвЁЄг Їа®жҐбб  ЇҐаҐа бЇаҐ¤Ґ«Ґ­Ёп ®Ў« бвЁ
¤ ­­ле. ”®а¬ в бва®ЄЁ бв вЁбвЁЄЁ б«Ґ¤гойЁ©:

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

<nnnn>,<aaaa>,<vvvv>,<pppp>,<ssss> Ё <tttt> - нв® ЈҐЄб ¤ҐбпвЁз­лҐ
зЁб« . <nnnn> - нв® Є®«ЁзҐбвў® бЎ®айЁЄ®ў ¬гб®а  б ¬®¬Ґ­в  ­ з « 
ўлЇ®«­Ґ­Ёп muLISP. ЏҐаўлҐ <aaaa>, <vvvv>, <pppp> Ё <ssss> ў
Є ¦¤®© Ї аҐ зЁбҐ« - нв® б㬬  бў®Ў®¤­®© Ї ¬пвЁ ў Ў ©в е ў
®Ў« бвпе  в®¬®ў,ўҐЄв®а®ў, гЄ § вҐ«Ґ© Ё б⥪®ў ᮮ⢥вб⢥­­®. ‚
Ј« ўҐ 4 ¤ Ґвбп ­ §­ зҐ­ЁҐ Є ¦¤®© Ё§ нвЁе ®Ў« б⥩. ЏҐаў п <tttt>
Ї ал - нв® Ї®«­ п б㬬  бў®Ў®¤­ле ®Ў« б⥩ (в.Ґ. б㬬  <aaaa>,
<vvvv>, <pppp> Ё <ssss>). —Ёб« , б«Ґ¤гойЁҐ §  "/" - нв® Ї®«­л©
®ЎмҐ¬ ᮮ⢥вбвўгойЁе ®Ў« б⥩, ўЄ«оз ойЁе Ё бў®Ў®¤­лҐ, Ё § ­пвлҐ
®Ў« бвЁ.
„«п Є ¦¤®© п祩ЄЁ гЄ § вҐ«п ў ®Ў« бвпе гЄ § вҐ«Ґ©, б⥪®ў
Ё  в®¬®ў вॡгҐвбп ¤ў  Ў ©в . Ћ¤Ё­ Ў ©в вॡгҐвбп ¤«п Є ¦¤®Ј®
бЁ¬ў®«  ў ђ-Ё¬Ґ­Ё, ¤ў  Ў ©в  - ¤«п а §¬ҐйҐ­Ёп ¤«Ё­л ђ-Ё¬Ґ­Ё.
—Ёб«®ўлҐ ўҐЄв®ал ЁбЇ®«м§гов бв®«мЄ® б«®ў, бЄ®«мЄ® ­Ґ®Ўе®¤Ё¬® ¤«п
а §¬ҐйҐ­Ёп зЁб«  ў ¤ў®Ёз­®¬ ўЁ¤Ґ.
„ ­­ п бв вЁбвЁЄ  бЁ«м­® § ўЁбЁв ®в в®Ј®, Є Є а Ў®в Ґв
muLISP, Ё ­Ґ § ўЁбЁв ®в Ї®«м§®ў вҐ«п. „ ­­ п бв вЁбвЁЄ 
Ї®пў«пҐвбп ҐйҐ Ё в®Ј¤ , Є®Ј¤  ў®§­ЁЄ Ґв ®иЁЎЄ  "Memory full" Ё
гЄ §лў Ґв, Є Є п з бвм Ї ¬пвЁ ЇҐаҐЇ®«­Ё« бм (б¬. Ј« ўг 4).
ЏаЁ¬Ґа:
(SETQ RECLAIM NIL)
(LOOP (OBLIST))

GC: 0001 2258/2600 1C8C/1C8E 00000/119C0 1AAA/1AC0 0598C/1770E
GC: 0001 2258/2600 1C8C/1C8E 117D0/119C0 1AAA/1AC0 1715C/1770E
RA: 0001 09C0/0D68 09C2/09C4 13CFE/13EEE 20DE/20F4 1715C/1770E

GC: 0002 09C0/0D68 09C2/09C4 00002/13EEE 20DE/20F4 03460/1770E
GC: 0002 09C0/0D68 09C2/09C4 13E1A/13EEE 20DE/20F4 17278/1770E

GC: 0003 09C0/0D68 09C2/09C4 00002/13EEE 20DE/20F4 03460/1770E
GC: 0003 09C0/0D68 09C2/09C4 13E1A/13EEE 20DE/20F4 17278/1770E

’аЁ бва®ЄЁ бв вЁбвЁЄЁ бЎ®айЁЄ  ¬гб®а  #1 ®§­ з ов, зв®
Їа®Ё§®и«® ЇҐаҐа бЇаҐ¤Ґ«Ґ­ЁҐ Ї ¬пвЁ. Ѓл«® ўл¤Ґ«Ґ­® Ў®«миҐ Ї ¬пвЁ
Ї®¤ ®Ў« бвм гЄ § вҐ«Ґ© Ё§-§  в®Ј®, зв® OBLIST вॡгҐв ­®ўлҐ
cons-л. Џ®б«Ґ¤гойЁҐ бЎ®айЁЄЁ ¬гб®а  ­Ґ ўлЇ®«­пов
ЇҐаҐа бЇаҐ¤Ґ«Ґ­Ёп, в.Є. а §¬Ґал ®Ў« б⥩ ¤ ­­ле 㦥 Ўл«Ё
®ЇвЁ¬Ё§Ёа®ў ­л. Ћ¤­ Є®, Ґб«Ё Їа®Ја ¬¬  Ё§¬Ґ­Ё« бм Ё бв ав®ў « ,
­ ЇаЁ¬Ґа, ­  ®Ў« бвЁ  в®¬®ў, ¬®¦Ґв Їа®Ё§®©вЁ ¤агЈ®Ґ
ЇҐаҐа бЇаҐ¤Ґ«Ґ­ЁҐ б 楫мо 㢥«ЁзҐ­Ёп а §¬Ґа  нв®© ®Ў« бвЁ §  бзҐв
¤агЈЁе.
—Ёб« , ЇаЁўҐ¤Ґ­­лҐ ўлиҐ, §­ зЁвҐ«м­® § ўЁбпв ®в а §¬Ґа®ў
Ї ¬пвЁ ќ‚Њ; §¤Ґбм ®­Ё ¤ ­л ¤«п ўҐабЁЁ 8086/8088 muLISP.



*FREE-LIST*: '*FREE-LIST* Variable

”г­ЄжЁЁ Є®­бвагЄв®а  вॡгов б®§¤ ­Ёп ­®ўле cons-®ў. …б«Ё
§­ зҐ­ЁҐ *FREE-LIST* -  в®¬, в® ®Ў« бвм ¤«п ­®ўле бons-®ў ЎҐаҐвбп
Ё§ ®Ў« бвЁ Ї ¬пвЁ, Є®в®а п ­ §лў Ґвбп ®Ў« бвмо гЄ § вҐ«Ґ©. …б«Ё
Ї®¤ б®§¤ ­ЁҐ ЇаҐ¤л¤гйЁе cons-®ў ўбп ®Ў« бвм гЄ § вҐ«Ґ© Ўл« 
ЁбзҐаЇ ­ , в® ¤«п ў®ббв ­®ў«Ґ­Ёп ®Ў« б⥩ Ї®¤ cons-л
 ўв®¬ вЁзҐбЄЁ § ЇгбЄ Ґвбп бЎ®айЁЄ ¬гб®а .
Ћ¤­ Є® Ґб«Ё §­ зҐ­ЁҐ *FREE-LIST* Ґбвм cons, в® нв®в cons
ЁбЇ®«м§гҐвбп в®Ј¤ , Є®Ј¤  ¤«п muLISP вॡгҐвбп ­®ўл© cons.
ЌЁ¦Ґ ў ЇаЁ¬ҐаҐ ®бгйҐбвў«пҐвбп ¤®Ў ў«Ґ­ЁҐ 6 (­® ­Ґ 9) cons-®ў
Є *FREE-LIST*:
(SETQ JUNK '(A B (C D E) 3 4 5))
(SETQ *FREE-LIST* *NCONC JUNK *FREE-LIST*))



ALLOCATE [n] Function

…б«Ё <n> - Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, (ALLOCATE n) ®бў®Ў®¦¤ Ґв <n>
Ў ©в®ў Ї ¬пвЁ ў 8086-Є®¤®ў®¬ ᥣ¬Ґ­вҐ, б«Ґ¤го饬 §  ¬ иЁ­­л¬
Є®¤®¬ muLISP, Ё ў®§ўа й Ґв Ў §®ўл©  ¤аҐб ў­®ўм ўл¤Ґ«Ґ­­®© Ї ¬пвЁ.
…б«Ё ­Ґ«м§п ®бў®Ў®¤Ёвм <n> Ў ©в®ў, ALLOCATE ў®§ўа й Ґв NIL.
(ALLOCATE) ў®§ўа й Ґв ⥪гйЁ© Ў §®ўл©  ¤аҐб ­ з «  бў®Ў®¤­®©
®Ў« бвЁ ў 8086-Є®¤®ў®¬ ᥣ¬Ґ­вҐ, б«Ґ¤го饬 §  ¬ иЁ­­л¬ Є®¤®¬
muLISP.
ЏаҐ¦¤Ґ ўбҐЈ® ALLOCATE ЇаҐ¤­ §­ зҐ­  ¤«п Є®¬ЇЁ«пв®а®ў,
ЈҐ­ҐаЁагойЁе ¬ иЁ­­лҐ Є®¤л.
ЏаЁ¬Ґа:
(DEFUN ALLOCATE (N)
((PLUSP N)
((there is sufficient free memory)
(free N bytes of memory following machine code)
(return base offset address of free space) ) )
(return base offset address of free space) )

(ALLOCATE 100) --> 32400 ;Frees 100 bytes at 32400
(ALLOCATE) --> 32512 ;Current start of free space




5.18. ”г­ЄжЁЁ б।л

’ҐЄгй п б।  muLISP б®бв®Ёв Ё§ ўбҐе §­ зҐ­Ё© ЇҐаҐ¬Ґ­­ле,
®ЇаҐ¤Ґ«Ґ­Ё© дг­ЄжЁ© Ё §­ зҐ­Ё© бў®©бвў. ќвЁ §­ зҐ­Ёп Ё
®ЇаҐ¤Ґ«Ґ­Ёп ¬®Јгв Ўлвм ўўҐ¤Ґ­л ­ҐЇ®б।б⢥­­® б Є®­б®«Ё, бзЁв ­л
Ё§ Ёб室­®Ј® д ©«  Ё«Ё § Ја㦥­л Ё§ SYS-д ©« . ”г­ЄжЁЁ баҐ¤л ¤ ов
ў®§¬®¦­®бвм § Јаг¦ вм Ё б®еа ­пвм б।г muLISP ў ўЁ¤Ґ Є®¬Ї Єв­ле
д ©«®ў - ®Ўа §®ў Ї ¬пвЁ. ’ Є®© д ©« ®Ўлз­® б®§¤ Ґвбп в®«мЄ® Ї®б«Ґ
в®Ј®, Є Є Їа®Ја ¬¬  ®в« ¦Ґ­  ¤® Є®­ж . ‡ Јаг§Є  д ©«®ў-®Ўа §®ў
Ї ¬пвЁ ®бгйҐбвў«пҐвбп Ўлбв॥, 祬 бзЁвлў ­ЁҐ Ї®¤®Ў­ле Ёб室­ле
д ©«®ў.


SAVE [drive:name.type] Function

…б«Ё <вЁЇ> - бва®Є , ®в«Ёз­ п ®в "COM", (SAVE
гбва®©бвў®:Ё¬п.вЁЇ) б®еа ­пҐв ⥪гйго б।г muLISP ў ўЁ¤Ґ
¤ў®Ёз­®Ј® SYS-д ©«  <Ё¬п.вЁЇ> ­  <гбва®©б⢥>. …б«Ё <вЁЇ>
®вбгвбвўгҐв, SYS-д ©«г ЇаЁбў Ёў Ґвбп вЁЇ "SYS". …б«Ё ®вбгвбвўгҐв
<гбва®©бвў®>, SYS-д ©« б®еа ­пҐвбп ­  ⥪г饬 § аҐЈЁбваЁа®ў ­­®¬
гбва®©б⢥.
(SAVE гбва®©бвў®:Ё¬п.COM) б®еа ­пҐв Ё­вҐаЇаҐв в®а muLISP ЎҐ§
Є®¬ЇЁ«пв®а  ЇбҐў¤®Є®¤®ў,   в Є¦Ґ ⥪гйго б।г muLISP Є Є
ўлЇ®«­Ё¬л© COM-д ©« <Ё¬п.COM> ­  <гбва®©б⢥>. …б«Ё <гбва®©бвў®:>
®вбгвбвўгҐв, COM-д ©« б®еа ­пҐвбп ­  ⥪г饬 § аҐЈЁбваЁа®ў ­­®¬
гбва®©б⢥. Џг⥬ ¬®¤ЁдЁЄ жЁЁ д« Ј  ў ®б­®ў­®© бва®­ЁжҐ muLISP
Ґбвм ў®§¬®¦­®бвм б®еа ­Ёвм Ё Є®¬ЇЁ«пв®а ЇбҐў¤®Є®¤®ў ў COM-д ©« е,
б®§¤ ­­ле SAVE (c¬. Ј« ўг 9 Ё ЏаЁ«®¦Ґ­ЁҐ).
ЏаҐ¦¤Ґ 祬 б®еа ­Ёвм б।㠢 ўЁ¤Ґ SYS- Ё«Ё COM-д ©« , SAVE
 ўв®¬ вЁзҐбЄЁ гЇ«®в­пҐв ўбҐ  ЄвЁў­лҐ бвагЄвгал ¤ ­­ле, в Є зв®
१г«мвЁагойЁ© д ©« Ё¬ҐҐв ¬Ё­Ё¬ «м­лҐ а §¬Ґал. ‘«Ґ¤®ў вҐ«м­®,
а §¬Ґа д ©« -®Ўа §  Ї ¬п⨠㢥«ЁзЁў Ґвбп б 㢥«ЁзҐ­ЁҐ¬ ®ЎмҐ¬ 
 ЄвЁў­ле бвагЄвга ¤ ­­ле.
’.Є. COM-д ©«л Ў®«миҐ, 祬 SYS-д ©«л, Ёе Є®¬ЇЁ«пв®ал
ЇбҐў¤®Є®¤®ў ­Ґ¤Ґ©б⢨⥫м­л Ё ®­Ё ­Ґ ¬®Јгв Ўлвм § Ја㦥­л ў
¤Ґ©бвўгойго бЁб⥬г muLISP, в® ¤«п б®еа ­Ґ­Ёп б।л muLISP «гзиҐ
ЁбЇ®«м§®ў вм ­Ґ COM-,   SYS-д ©«л, Ї® Єа ©­Ґ© ¬ҐаҐ ў Їа®жҐббҐ
а §а Ў®вЄЁ Їа®Ја ¬¬.
…б«Ё ‘ЋЊ-д ©«, б®§¤ ­­л© SAVE, ¬Ґ­миҐ, 祬 64Љ (65536 Ў ©в),
в® ®­ ¬®¦Ґв ўлЇ®«­пвмбп Є Є Є®¬ ­¤  MS-DOS. …б«Ё ‘ЋЊ-д ©« Ў®«миҐ,
祬 64Љ, в® ®­ ¬®¦Ґв Ўлвм ЇаҐ®Ўа §®ў ­ ў …•…-д ©« б
ЁбЇ®«м§®ў ­ЁҐ¬ гвЁ«Ёвл muLISP COMTOEXE.COM.
„ ­­ п гвЁ«Ёв  Ё¬ҐҐв б«Ґ¤гойЁ© ўЁ¤:

drive1: COMTOEXE drive2: filename.COM drive3: ,

Ј¤Ґ <drive1> - нв® гбва®©бвў®, ᮤҐа¦ йҐҐ COMTOEXE.COM, <drive2>
- гбва®©бвў®, ᮤҐа¦ йҐҐ <filename>.COM, a <drive3> - гбва®©бвў®
Ї®¤ <filename>.EXE. ‹оЎ®Ґ ®вбгвбвўго饥 гбв®©бвў® § ¬Ґ­пҐвбп ­ 
⥪г饥 § аҐЈЁбваЁа®ў ­­®Ґ.
ЏаЁ¬Ґа:
(DEFUN SAVE (DRIVE:NAME.TYPE)
(close all currently open input and output files)
((SYMBOLP DRIVE:NAME.TYPE)
(RECLAIM)
((EQ TYPE "COM")
(disable the muLISP pseudo-code compiler)
(save muLISP and the current environment as
NAME.COM on DRIVE)
T )
(save a compact memory image of the current
environment as NAME.SYS on DRIVE)
T ) )

(SAVE 'B:WHALE) ;Saves WHALE.SYS on drive B:
(SAVE 'WHALE.COM) ;Saves WHALE.COM on logged drive




LOAD [drive:name.type] Function

(LOAD гбва®©бвў®:Ё¬п.вЁЇ) § ¬Ґ­пҐв ⥪гйго б।г muLISP ­ 
б।г, бгйҐбвў®ў ўиго ў® ўаҐ¬п б®§¤ ­Ёп д ©« 
<гбва®©бвў®:Ё¬п.вЁЇ>. …б«Ё <.вЁЇ> ®вбгвбвўгҐв, ЇаЁбў Ёў Ґвбп вЁЇ
"SYS". …б«Ё <гбва®©бвў®:> ®вбгвбвўгҐв, SYS-д ©« § Јаг¦ Ґвбп ­ 
⥪г饥 §дॣЁбваЁа®ў ­­®Ґ гбва®©бвў®. LOAD ­Ґ ў®§ўа й Ґв
Є Є®Ј®-«ЁЎ® §­ зҐ­Ёп, Ґб«Ё SYS-д ©« гбЇҐи­® § Ја㦥­, ­® ­ зЁ­ Ґв
ўлЇ®«­Ґ­ЁҐ дг­ЄжЁЁ, бўп§ ­­®© б ЇҐаҐ¬Ґ­­®© DRIVER ў б।Ґ,
Є®в®а п 㦥 Ўл«  § Ја㦥­ . …б«Ё SYS-д ©« ­Ґ ­ ©¤Ґ­, LOAD
ў®§ўа й Ґв NIL.
SYS-д ©«л ¬®Јгв в Є¦Ґ Ўлвм § Ја㦥­л ў¬Ґб⥠б MULISP.COM,
ЁбЇ®«м§гп Є®¬ ­¤г Ћ‘. ‘¬. а §¤Ґ« "SYS-д ©«л б।л" ў Ј« ўҐ 2.
ЏаЁ¬Ґа:
(DEFUN LOAD (DRIVE:NAME.TYPE)
(close all currently open input and output files)
((SYMBOLP DRIVE:NAME.TYPE)
((if the file DRIVE:NAME.TYPE exists)
(load the environment stored in the file)
(begin execution with the DRIVER function) ) ) )

(load 'b:WHALE) ;Loads WHALE.SYS from drive B:



5.19. ”г­ЄжЁЁ Ё­вҐадҐ©б  Ї®«м§®ў вҐ«п

Ћб­®ў­®© Ё­вҐадҐ©б Ї®«м§®ў вҐ«п б muLISP ®ЎҐбЇҐзЁў Ґвбп
дг­ЄжЁҐ© жЁЄ«  "з⥭ЁҐ-ўлзЁб«Ґ­ЁҐ-ЇҐз вм" DRIVER.
Џ®б«Ґ Ё­ЁжЁ «Ё§ жЁЁ бў®Ґ© ®Ў« бвЁ ¤ ­­ле, muLISP ўў®¤Ёв
ўлзЁб«пҐ¬л© ¤а ©ўҐа-жЁЄ« ўҐае­ҐЈ® га®ў­п, ¤ ­­л© жЁЄ« ўҐае­ҐЈ®
га®ў­п гбв ­ ў«Ёў Ґв ў­гв७­Ё© бзҐвзЁЄ <break-level> ў 0,  
Є®­ва®«м­лҐ ЇҐаҐ¬Ґ­­лҐ RDS Ё WRS - ў NIL, ¤Ґ« п Є®­б®«м
®¤­®ўаҐ¬Ґ­­® Ё ⥪гйЁ¬ ўе®¤­л¬ Ёбв®з­ЁЄ®¬ (CIS) Ё ўл室­л¬
Ї®в®Є®¬ (COS), гбв ­ ў«Ёў Ґв Є®­ва®«м­го ЇҐаҐ¬Ґ­­го READ-CHAR ў
'READ-CHAR, ­ бва Ёў п ўў®¤ б Є®­б®«Ё ­  ¬Ґв®¤ «Ё­Ґ©­®Ј®
। ЄвЁа®ў ­Ёп, зЁбвЁв ЎгдҐа «Ё­Ґ©­®Ј® । ЄвЁа®ў ­Ёп Ё ўл§лў Ґв
⥪г饥 §­ зҐ­ЁҐ ЇҐаҐ¬Ґ­­®© DRIVER.

(LOOP
(SETQ break-level 0)
(SETQ RDS NIL)
(SETQ WRS NIL)
(SETQ READ-CHAR 'READ-CHAR)
(CATCH NIL (FUNCALL DRIVER)) )

‡­ зҐ­ЁҐ ЇҐаҐ¬Ґ­­®© DRIVER, ЇаЁ­Ё ¬Ґ¬®Ґ Ї® 㬮«з ­Ёо, - нв®
дг­ЄжЁп DRIVER, Є®в®а п а бб¬ ваЁў Ґвбп ­Ё¦Ґ. Љ Є в®«мЄ® ­®ў п
дг­ЄжЁп DRIVER ®ЇаҐ¤Ґ«Ґ­ , Є®¬ ­¤  (RETURN) § ўҐаи Ґв ўлЇ®«­Ґ­ЁҐ
дг­ЄжЁЁ DRIVER, ®ЇаҐ¤Ґ«Ґ­­®© Ї® 㬮«з ­Ёо,   ¤а ©ўҐа-жЁЄ«
ўҐае­ҐЈ® га®ў­п Ё­ЁжЁЁагҐв ­®ўго дг­ЄжЁо DRIVER.
Ќ  ЇаЁ¬ҐаҐ Ї®Є § ­®, Є Є ®бгйҐбвў«Ґвбп жЁЄ«
"з⥭ЁҐ-ўлзЁб«Ґ­ЁҐ-ЇҐз вм" ¤«п muLISP:

(DEFUN EVAL-QUOTE ()
(CATCH 'RETURN (LOOP (CATCH 'DRIVER
(PRINC ">")
(PRINT (APPLY (READ) (READ))) ))) )

(SETQ DRIVER 'EVAL-QUOTE)

(RETURN)

> CONS (DOG (CAT COW PIG))
(DOG CAT COW PIG)



DRIVER [ ] Function

(DRIVER) ®бгйҐбвў«пҐв ўлЇ®«­Ґ­ЁҐ жЁЄ«  "з⥭ЁҐ-ўлзЁб«Ґ­ЁҐ-
ЇҐз вм" ў muLISP. –ЁЄ« ­ зЁ­ Ґвбп б ўлᢥ稢 ­Ёп ­  ¤ЁбЇ«Ґ©
⥪г饣® га®ў­п ЇаҐалў ­Ёп, Ґб«Ё ®­ ­Ґ ­г«Ґў®© (в.Ґ. DRIVER ­Ґ
ўл§лў Ґвбп ­ҐЇ®б।б⢥­­® жЁЄ«®¬ ўлб®Є®Ј® га®ў­п).
‡ вҐ¬ ўлᢥ稢 Ґвбп ᮬў®« ¤®«« а  muLISP. Ќ Є®­Ґж, Ё§ CIS б
Ї®¬®ймо дг­ЄжЁЁ READ бзЁвлў Ґвбп ўла ¦Ґ­ЁҐ, Є®в®а®Ґ ўлзЁб«пҐвбп б
Ї®¬®ймо дг­ЄжЁЁ EVAL,   १г«мв в ЇҐаҐбл« Ґвбп ў COS б Ї®¬®ймо
дг­ЄжЁЁ PRINT.
ЏаЁ ЇаҐалў ­ЁЁ жЁЄ«  "з⥭ЁҐ-ўлзЁб«Ґ­ЁҐ-ЇҐз вм" ў 室Ґ
з⥭Ёп, ўлзЁб«Ґ­Ёп Ё«Ё ЇҐз вЁ ўла ¦Ґ­Ё© ®бгйҐбвў«пҐвбп ЇҐаҐе®¤ ­ 
¬ҐвЄг DRIVER. „ ­­ п ў®§¬®¦­®бвм Ї®§ў®«пҐв в ЄЁ¬ дг­ЄжЁп¬, Є Є
BREAK, ЇаҐалў вм ўлЇ®«­Ґ­ЁҐ Їа®Ја ¬¬л Ё ба §г ¦Ґ ЇҐаҐ¤ ў вм
гЇа ў«Ґ­ЁҐ ­  ⥪гйЁ© га®ўҐ­м жЁЄ« .
„ ­­л© жЁЄ« Їа®¤®«¦ Ґвбп ¤® вҐе Ї®а, Ї®Є  ­Ґ Ўг¤Ґв бзЁв ­® Ё
ўлзЁб«Ґ­® ўла ¦Ґ­ЁҐ (RETURN value). ЏаЁ н⮬ жЁЄ« ЇаҐЄа й Ґвбп,  
дг­ЄжЁп DRIVER ў®§ўа й Ґв <value> (<§­ зҐ­ЁҐ>).
„«п 㤮Ўбвў  Їа®Ја ¬¬Ёа®ў ­Ёп Ї®б«Ґ¤­ЁҐ ваЁ ўла ¦Ґ­Ёп,
бзЁвлў Ґ¬лҐ жЁЄ«®¬, ¬®Јгв Ўлвм § ¬Ґ­Ґ­л ЇҐаҐ¬Ґ­­л¬Ё: +, ++ Ё +++
ᮮ⢥вб⢥­­®,   १г«мв вл ўлзЁб«Ґ­Ёп Ї®б«Ґ¤­Ёе ваҐе ўла ¦Ґ­Ё©
- ЇҐаҐ¬Ґ­­л¬Ё: *, ** Ё *** ᮮ⢥вб⢥­­®. ’ҐЄг饥 бзЁв ­­®Ґ
ўла ¦Ґ­ЁҐ § ¬Ґ­пҐвбп ЇҐаҐ¬Ґ­­®© "-". Ќ  ЇаЁ¬ҐаҐ Ї®Є § ­®, Є Є
¬®¦­® ЁбЇ®«м§®ў вм ¤ ­­лҐ ЇҐаҐ¬Ґ­­лҐ:

$ (CONS 'SAM '(ANN JOE SUE))
(SAM JOE SUE)

$ +
(CONS 'SAM '(ANN JOE SUE))

$ **
(SAM ANN JOE SUE)

(DEFUN DRIVER ()
(CATCH 'RETURN (LOOP (CATCH 'DRIVER
( ((ZEROP break-level))
(PRIN1 break-level) )
(PRINC "$ ")
(SETQ - (READ))
(PSETQ * (UNWIND-PROTECT (EVAL -)
(SETQ +++ ++ ++ + + -))
*** ** ** *)
(PRINT *) ))) )
Соседние файлы в папке Filp