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

Lisp / Filp / LISP14

.TXT
Скачиваний:
19
Добавлен:
15.06.2014
Размер:
19.57 Кб
Скачать
BREAK [object,message] Function

(BREAK ®ЎмҐЄв б®®ЎйҐ­ЁҐ) ЇаЁ®бв ­ ў«Ёў Ґв ўлЇ®«­Ґ­ЁҐ
Їа®Ја ¬¬л Ё ўл¤ Ґв ­  Є®­б®«м бЁ¬ў®« <б®®ЎйҐ­ЁҐ>, бва®Єг "Break"
Ё <®ЎмҐЄв>, гЄ §лў п ЇаЁзЁ­г ЇаҐалў ­Ёп. …б«Ё <б®®ЎйҐ­ЁҐ> Ґбвм
NIL Ё«Ё ®вбгвбвўгҐв, ¤ ­­ п бва®Є  ­Ґ ўлзЁб«пҐвбп. „ «ҐҐ ўл¤ Ґвбп
бва®Є  Ї®¤бЄ §ЄЁ ў ўЁ¤Ґ ®ЇжЁ© ЇаҐалў ­Ёп:

Continue, Break, Abort, Top-level, Restart, System?

‡ вҐ¬ бЁб⥬  ¦¤Ґв, Ї®Є  Ї®«м§®ў вҐ«м ўлЎҐаҐв ®¤­г Ё§ ®ЇжЁ©,
гЄ § ў ЇҐаўго ЎгЄўг ҐҐ Ё¬Ґ­Ё (C, B, A, T Ё«Ё S). Ћв¬ҐвЁ¬, зв®
¤ ­­лҐ ®ЇжЁЁ ЇҐаҐзЁб«Ґ­л ў Ї®ап¤ЄҐ гбЁ«Ґ­Ёп Ёе ¤Ґ©бвўЁп. …б«Ё
Ї®б«Ґ ­ҐбЄ®«мЄЁе ᥪ㭤 Ї®«м§®ў вҐ«м ­Ґ ўлЎа « ®ЇжЁо,
ЈҐ­ҐаЁагҐвбп Єа вЄ®Ґ б®®ЎйҐ­ЁҐ, Ё­д®а¬Ёаго饥 Ї®«м§®ў вҐ«п ®
ў®§­ЁЄ­®ўҐ­ЁЁ ЇаҐалў ­Ёп.
- Continue (Їа®¤®«¦Ёвм): <®ЎмҐЄв> ў®§ўа й Ґвбп Є Є §­ зҐ­ЁҐ
ЇаҐалў ­Ёп,   ўлЇ®«­Ґ­ЁҐ Їа®¤®«¦ Ґвбп, Є Є Ё ЇаҐ¦¤Ґ.
- Break (®бв ­®ў): ўаҐ¬Ґ­­® ЇаЁ®бв ­ ў«Ёў Ґв ўлЇ®«­Ґ­ЁҐ
ЇаҐалў ­Ёп. READ-CHAR гбв ­ ў«Ёў Ґвбп ў 'READ-CHAR, Ї®н⮬㠢ў®¤
б Є®­б®«Ё Ўг¤Ґв ўлЇ®«­пвмбп бЇ®б®Ў®¬ «Ё­Ґ©­®Ј® । ЄвЁа®ў ­Ёп;
ЇҐаҐ¬Ґ­­®© BREAK гбв ­ ў«Ёў Ґвбп §­ зҐ­ЁҐ <®ЎмҐЄв>,   ў­гв७­Ё©
бзҐвзЁЄ <га®ўҐ­м-ЇаҐалў ­Ёп> (<break-level>) 㢥«ЁзЁў Ґвбп.
”г­ЄжЁп DRIVER ўл§лў Ґвбп ¤«п в®Ј®, зв®Ўл ¤ вм Ї®«м§®ў вҐ«о
ў®§¬®¦­®бвм Їа®ўҐаЁвм, Є Є п б।  ЇаҐ¤®бв ў«пҐвбп Ґ¬г ў® ўаҐ¬п
ў®§­ЁЄ­®ўҐ­Ёп ®бв ­®ў . DRIVER ўлᢥ稢 Ґв <break-level> б
Ї®¤бЄ §Є®© ¤а ©ўҐа  Є Є ­ Ї®¬Ё­ ­ЁҐ ® ⮬, зв® ўлЇ®«­пҐвбп
®бв ­®ў.
„«п ўл室  Ё§ ®бв ­®ў  Ё ў®§ўа в  Є ўл§лў о饩 Їа®Ја ¬¬Ґ
б«Ґ¤®¬ §  Ї®¤бЄ §Є®© ЇаҐалў ­Ёп ­ ЎҐаЁвҐ Є®¬ ­¤г

(RETURN form) ,

Ј¤Ґ <form> (<д®а¬ >) - нв® ўла ¦Ґ­ЁҐ, Є®в®а®Ґ ўлзЁб«пҐвбп, Ё
­ ¦¬ЁвҐ Є« ўЁиг <RETURN>. Ќ ЇаЁ¬Ґа, зв®Ўл ўлзЁб«Ёвм Ё ў®§ўа вЁвм
<®ЎмҐЄв>, ЇҐаҐ¤ ­­л© б Ї®¬®ймо ўл§®ў  BREAK ў Є зҐб⢥ §­ зҐ­Ёп
дг­ЄжЁЁ BREAK, ўўҐ¤ЁвҐ:

(RETURN (EVAL BREAK))

ЏаЁ ўл室Ґ Ё§ ¤а ©ўҐа  <break-level> 㬥­ми Ґвбп; READCH Ё
BREAK ў®ббв ­ ў«Ёў ов бў®Ё ЇҐаў®­ з «м­лҐ §­ зҐ­Ёп; §­ зҐ­ЁҐ
ўла ¦Ґ­Ёп, Є®в®а®Ґ ўў®¤Ёвбп б«Ґ¤®¬ §  RETURN , ў®§ўа й Ґвбп Є Є
§­ зҐ­ЁҐ ®бв ­®ў .

- Abort (ЇаҐалў ­ЁҐ): ЇаҐалў Ґв ўлзЁб«Ґ­ЁҐ ў Їа®жҐббҐ
®бв ­®ў  Ё ЇҐаҐ¤ Ґв гЇа ў«Ґ­ЁҐ Ї®б«Ґ¤­Ґ¬г Ё§ ЇаҐ¤л¤гйЁе
Ї®¬ҐзҐ­­ле DRIVER (®Ўлз­® - ­  жЁЄ« "з⥭ЁҐ-ўлзЁб«Ґ­ЁҐ-ЇҐз вм").

- Top-level (ўҐае­Ё© га®ўҐ­м): ЇаҐалў Ґв ўлзЁб«Ґ­ЁҐ ў
Їа®жҐбᥠ®бв ­®ў  Ё ЇҐаҐ¤ Ґв гЇа ў«Ґ­ЁҐ Ї®б«Ґ¤­Ґ¬г Ё§ ЇаҐ¤л¤гйЁе
Ї®¬ҐзҐ­­ле NIL (®«Ўлз­® - ­  жЁЄ« ¤а ©ўҐа  ўҐае­ҐЈ® га®ў­п).

- Restart (Ї®ўв®а­л© бв ав): § Єалў Ґв ўбҐ ®вЄалвлҐ д ©«л,
®вЄ §лў Ґвбп ®в ⥪г饩 б।л muLISP Ё Ё­ЁжЁЁагҐв ­®ўго бЁб⥬г
muLISP.

- System (бЁб⥬ ): § Єалў Ґв ўбҐ ®вЄалвлҐ д ©«л, § ўҐаи Ґв
ўлЇ®«­Ґ­ЁҐ muLISP Ё ў®§ўа й Ґв гЇа ў«Ґ­ЁҐ Ћ‘.

Љ Є в®«мЄ® muLISP ®Ў­ аг¦Ёв б®бв®п­ЁҐ ®иЁЎЄЁ, ўл§лў Ґвбп
BREAK б ®иЁЎ®з­®© дг­ЄжЁҐ© Ё ᮮ⢥вбвўгойЁ¬ б®®ЎйҐ­ЁҐ¬ ®Ў
®иЁЎЄҐ, Ї®§ў®«пойЁ¬Ё Ї®«м§®ў вҐ«о ЇаЁ­пвм ®ЇаҐ¤Ґ«Ґ­­®Ґ аҐиҐ­ЁҐ.
BREAK ¬®¦Ґв Ўлвм ЇҐаҐ®ЇаҐ¤Ґ«Ґ­ Ї®«м§®ў вҐ«Ґ¬ ¤«п
㤮ў«Ґвў®аҐ­Ёп ¤агЈЁ¬ вॡ®ў ­Ёп¬. Џ®б।бвў®¬ ўўҐ¤Ґ­Ёп ўл§®ў®ў
BREAK ў ®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁ© Ї ЄҐв ЇаҐалў ­Ё© ®ЎҐбЇҐзЁв ®в«Ёз­л©
¬Ґе ­Ё§¬ ®в« ¤ЄЁ. Ћ­ ¤ бв ў ¬ ў®§¬®¦­®бвм Їа®ўҐапвм Ё Ё§¬Ґ­пвм
§­ зҐ­Ёп ЇҐаҐ¬Ґ­­ле Ё ®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁ© ЇҐаҐ¤ ­ з «®¬
ўлзЁб«Ґ­Ё©.

ЏаЁ¬Ґа:
(DEFUN BREAK (BREAK MSG
CHAR RDS WRS READ-CHAR )
( (NULL MSG))
(PRINC MSG)
(WRITE-STRING " Break: ")
(PRINT BREAK) )
(WRITE-STRING "Abort,Break,Continue,Top-level,Restart,System? ")
(lOOP
(WRITE-BYTE 7)
(SETQ CHAR (STRING-UPCASE (READ-CHAR)))
((EQ CHAR 'A)
(THROW 'DRIVER BREAK) )
((EQ CHAR 'B)
(SETQ READ-CHAR 'READ-CHAR)
(INCQ break-level)
(CLEAR-INPUT)
(SETQ BREAK (DRIVER))
(DECQ break-level)
BREAK )
((EQ CHAR 'C)
BREAK )
((EQ CHAR 'T)
(THROW NIL BREAK) )
((EQ CHAR 'R)
(RESTART) )
((EQ CHAR 'S)
(SYSTEM) ) ) )




5.20. ”г­ЄжЁЁ Ё­вҐадҐ©б  ’Ћ

”г­ЄжЁЁ, Є®в®алҐ а бб¬ ваЁў овбп ў ¤ ­­®¬ а §¤Ґ«Ґ,
®ЎҐбЇҐзЁў ов ў§ Ё¬®бўп§м ¬Ґ¦¤г Їа®Ја ¬¬ ¬Ё muLISP, ’Ћ ќ‚Њ Ё Ћ‘
(б¬. в Є¦Ґ ’Ґе­ЁзҐбЄЁҐ ४®¬Ґ­¤ жЁЁ ќ‚Њ Ё агЄ®ў®¤бвў® Ї® Ћ‘).


MEMORY [address,value,flag] Function

…б«Ё < ddress> (< ¤аҐб>) - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ,
¬Ґ­м襥, 祬 ®Ў« бвм Ї ¬пвЁ ¬ЁЄа®Їа®жҐбб®а , ­  Є®в®а®¬ а Ў®в Ґв
muLISP, (MEMORY  ¤аҐб) ЇҐаҐ¤ Ґв Ў ©в (в.Ґ. 8-ЎЁв®ў®Ґ §­ зҐ­ЁҐ) ў
< ¤аҐб>.
…б«Ё <value> (<§­ зҐ­ЁҐ>) - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ,
¬Ґ­м襥, 祬 256, (MEMORY  ¤аҐб §­ зҐ­ЁҐ) § Ї®¬Ё­ Ґв <§­ зҐ­ЁҐ>
Ў ©в  Ї® < ¤аҐбг> Ё ў®§ўа й Ґв ЇҐаў®­ з «м­®Ґ §­ зҐ­ЁҐ Ў ©в .
…б«Ё <flag> (<д« Ј>) - ­Ґ NIL, (MEMORY  ¤аҐб §­ зҐ­ЁҐ д« Ј)
ЇҐаҐ¤ Ґв б«®ў® (в.Ґ. 16-ЎЁв®ў®Ґ §­ зҐ­ЁҐ) ў < ¤аҐб>. …б«Ё
<§­ зҐ­ЁҐ> - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, ¬Ґ­м襥, 祬 65536,
(MEMORY  ¤аҐб §­ зҐ­ЁҐ д« Ј) § Ї®¬Ё­ Ґв <§­ зҐ­ЁҐ> б«®ў  Ї®
< ¤аҐбг> Ё ў®§ўа й Ґв ЇҐаў®­ з «м­®Ґ §­ зҐ­ЁҐ б«®ў .
ЏаҐ¤гЇаҐ¦¤Ґ­ЁҐ: MEMORY ¤®«¦­  ЁбЇ®«м§®ў вмбп ®зҐ­м
®бв®а®¦­®, в.Є. ®вбгвбвўгҐв § йЁв  ®в а §аг襭Ёп Ё­вҐаЇаҐв в®а 
muLISP Ё«Ё агЄ®ў®¤п饩 Ћ‘.
ЏаЁ¬Ґа:
(DEFUN MEMORY (ADDR VALUE FLAG)
((<= 0 ADDR (the address space of the processor))
((NULL FLAG)
((<= 0 VALUE 255)
(replace the byte at ADDR with VALUE)
(return the original byte at ADDR) )
(return the byte at ADDR) )
((<= 0 VALUE 65536)
(replace the word at ADDR with VALUE)
(return the original word at ADDR) )
(return the word at ADDR) ) )

(SETQ *PRINT-BASE* 16 *READ-BASE* 16) ;Hexadecimal I/O
(MEMORY 12) --> 0 ;Byte at 12H
(MEMORY 12 NIL T) --> 0F000 ;Word at 12H
(MEMORY 12 5) --> 0 ;Store 5 at 12H
(MEMORY 12) --> 5 ;Byte at 12H
(MEMORY 12 NIL T) --> 0F005 ;Word at 12H
(MEMORY 12 0) --> 5 ;Restore original byte
(SETQ *PRINT-BASE* 0A *READ-CHAR* 0A) ;Decimal I/O



CSMEMORY [offset,value,flag] Function
DSMEMORY [offset,value,flag] Function

CSMEMORY Ё DSMEMORY ¤®бвгЇ­л в®«мЄ® в®Ј¤ , Є®Ј¤  muLISP
а Ў®в Ґв ­  ќ‚Њ ᥬҐ©бвў  Intel 8086 ¬ЁЄа®Їа®жҐбб®а®ў. ќвЁ
дг­ЄжЁЁ Ї®¤®Ў­л дг­ЄжЁЁ MEMORY, §  ЁбЄ«о祭ЁҐ¬ в®Ј®, зв® §¤Ґбм
ЇҐаўл©  аЈг¬Ґ­в - нв® 16-ЎЁв®ў®Ґ Ї®«Ґ ᥣ¬Ґ­в ,   ­Ґ 20-ЎЁв®ўл©
дЁ§ЁзҐбЄЁ©  ¤аҐб. ЏҐаў®Ґ Ї®«Ґ CSMEMORY Ї®¤®Ў­® ᥣ¬Ґ­вг Є®¤ . ‚
DSMEMORY ЇҐаў®Ґ Ї®«Ґ ᮮ⢥вбвўгҐв ᥣ¬Ґ­вг ¤ ­­ле.
…б«Ё <offset> - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ, ¬Ґ­миҐ, 祬
65536, (CSMEMORY offset) Ё (DSMEMORY offset) ЇҐаҐбл« ов Ў ©в ў
<offset>.
…б«Ё <§­ зҐ­ЁҐ> - ­®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ ¬Ґ­миҐ, 祬
256, (CSMEMORY offset §­ зҐ­ЁҐ) Ё (DSMEMORY offset §­ зҐ­ЁҐ)
§ ЇЁблў ов <§­ зҐ­ЁҐ> Ў ©в  ў <offset> Ё ў®§ўа й ов
ЇҐаў®­ з «м­®Ґ §­ зҐ­ЁҐ Ў ©в .
…б«Ё <д« Ј> - ­Ґ NIL, (CSMEMORY offset NIL д« Ј) Ё (DSMEMORY
offset NIL д« Ј) ў®§ўа й ов б«®ў® ў <offset>. …б«Ё <§­ зҐ­ЁҐ> -
-®«м Ё«Ё Ї®«®¦ЁвҐ«м­®Ґ 楫®Ґ ¬Ґ­миҐ, 祬 65536, (CSMEMORY offset
§­ зҐ­ЁҐ д« Ј) Ё (car-н«Ґ¬Ґ­в <®ЎмҐЄв > Є бЇЁбЄг १г«мв в®ў.
…б«Ё car-н«Ґ¬Ґ­в <®ЎмҐЄв > - Ё¬п ­ҐўлзЁб«пҐ¬®© дг­ЄжЁЁ,
(EVAL ®ЎмҐЄв) ¤®Ў ў«пҐв car-н«Ґ¬Ґ­в <®ЎмҐЄв > Є cdr-н«Ґ¬Ґ­вг
<®ЎмҐЄв > ЎҐ§ ўлзЁб«Ґ­Ёп Ї®б«Ґ¤­ҐЈ®.
…б«Ё car-н«Ґ¬Ґ­в <®ЎмҐЄв > - Ё¬п ¬ Єа®дг­ЄжЁЁ, (EVAL ®ЎмҐЄв>
४габЁў­® ўлзЁб«пҐв १г«мв в ¤®Ў ў«Ґ­Ёп car-н«Ґ¬Ґ­в  <®ЎмҐЄв >
Є ҐЈ® cdr-н«Ґ¬Ґ­вг.
…б«Ё car-н«Ґ¬Ґ­в <®ЎмҐЄв > - ­Ґ дг­ЄжЁп, (EVAL ®ЎмҐЄв)
ўл§лў Ґв ®иЁЎЄг "ЌҐ®ЇаҐ¤Ґ«Ґ­­ п дг­ЄжЁп" (UNDEFINED) Ё ЈҐ­ҐаЁагҐв
ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ.
ЏаЁ¬Ґа:
(DEFUN EVAL (OBJ)
((ATOM OBJ)
(CAR OBJ) )
((SYMBOLP (CAR OBJ))
((eval function (CAR OBJ))
(APPLY (CAR OBJ) (MAPCAR 'EVAL (CDR OBJ))) )
((no-eval function (CAR OBJ))
(APPLY (CAR OBJ) (CDR OBJ)) )
((macro function (CAR OBJ))
(EVAL (APPLY (CAR OBJ) OBJ)) )
(APPLY 'UNDEFINED OBJ) )
((EQ (CAAR OBJ) 'LAMBDA)
(APPLY (CAR OBJ) (MAPCAR 'EVAL (CDR OBJ))) )
(APPLY 'UNDEFINED OBJ) )

(SETQ JOHN 'MAN) --> MAN
(SETQ MAN 'ANIMAL) --> ANIMAL
JOHN --> MAN
(EVAL JOHN) --> ANIMAL

(EVAL '(CONS 'A '(B C D))) --> (A B C D)
((LAMBDA (N) (* N N)) 5) --> 25





APPLY [function,arg1,arg2,...,arglist] Function

…б«Ё <дг­ЄжЁп> Ґбвм ­ §ў ­ЁҐ ¤Ґ©бвўЁп ­  ¬ иЁ­­®¬ п§лЄҐ,
(APPLY дг­ЄжЁп  аЈ.1  аЈ.2 ...  аЈ.бЇЁб®Є) ЇҐаҐ¤ Ґв д ЄвЁзҐбЄЁҐ
 аЈг¬Ґ­вл (в.Ґ. < аЈ.1>, < аЈ.2>, ... Ї«об н«Ґ¬Ґ­вл < аЈ.бЇЁбЄ >)
<дг­ЄжЁЁ> ­  ¬ иЁ­­®¬ п§лЄҐ Ё ў®§ўа й Ґв १г«мв в а Ў®вл дг­ЄжЁЁ.
…б«Ё <дг­ЄжЁп> - Ё¬п ®ЇаҐ¤Ґ«Ґ­­®© Ї®«м§®ў вҐ«Ґ¬ дг­ЄжЁЁ Ё«Ё
⥫® LAMBDA, APPLY бўп§лў Ґв д®а¬ «м­лҐ  аЈг¬Ґ­вл <дг­ЄжЁЁ> б
д ЄвЁзҐбЄЁ¬Ё  аЈг¬Ґ­в ¬Ё (в.Ґ. < аЈ.1>, < аЈ.2>, ... Ї«об
н«Ґ¬Ґ­вл < аЈ.бЇЁбЄ >), ўлзЁб«пҐв ⥫® дг­ЄжЁЁ, ў®бв ­ ў«Ёў Ґв
ЇҐаў®­ з «м­®Ґ §­ зҐ­ЁҐ д®а¬ «м­ле  аЈг¬Ґ­в®ў Ё ў®§ўа й Ґв
§­ зҐ­ЁҐ ўлзЁб«Ґ­Ёп ⥫  дг­ЄжЁЁ.
…б«Ё дг­ЄжЁп - ­Ґ Ё¬п дг­ЄжЁЁ Ё«Ё ­Ґ ⥫® LAMBDA, APPLY
ЈҐ­ҐаЁагҐв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ "ЌҐ®ЇаҐ¤Ґ«Ґ­­ п дг­ЄжЁп".
ЏаЁ¬Ґа:
(DEFUN APPLY (FUNC ARG1 ARG2 ... ARGS)
(SETQ ARGS (LIST* ARG1 ARG2 ... ARGS))
((SYMBOLP FUNC)
((machine language routine FUNC)
(execute the machine language routine using
ARGS for the arguments) )
((OR (eval function FUNC) (no-eval function FUNC))
(eval-body ARGS (arguments FUNC) (body FUNC)) )
(APPLY 'UNDEFINED (CONS FUNC ARGS)) )
((OR (EQ (CAR FUNC) 'LAMBDA) (EQ (CAR FUNC) 'NLAMBDA))
(eval-body ARGS (CADR FUNC) (CDDR FUNC)) )
(APPLY 'UNDEFINED (CONS FUNC ARGS)) )

(DEFUN eval-body (ACTUAL FORMAL BODY)
((LISTP FORMAL)
(MAPC '(LAMBDA (X) (PUSH (EVAL X) STACKLIST)) FORMAL)
(MAPC 'SET FORMAL ACTUAL)
(PROG1 (PROGN BODY) (MAPC
'(LAMBDA (X) (SET X (POP STACKLIST))) FORMAL)) )
(PUSH (EVAL FORMAL) STACKLIST)
(SET FORMAL ACTUAL)
(PROG1 (PROGN BODY) (SET FORMAL (POP STACKLIST))) )

(APPLY 'CONS '(A (B C D))) --> (A B C D)
(APPLY '(LAMBDA (N) (* N N)) '(5)) --> 25





FUNCALL [function,arg1,arg2,...,argN] Function

(FUNCALL дг­ЄжЁп  аЈ.1  аЈ.2 ...  аЈ.N) ®бгйҐбвў«пҐв
ўлЇ®«­Ґ­ЁҐ ¤Ґ©бвўЁ© <дг­ЄжЁЁ> ­ ¤ < аЈг¬Ґ­в ¬Ё> Ё ў®§ўа й Ґв
१г«мв в. <”г­ЄжЁп> ¤®«¦­  Ўлвм Ё«Ё Ё¬Ґ­Ґ¬ ўлзЁб«пҐ¬®© Ё«Ё
­ҐўлзЁб«пҐ¬®© дг­ЄжЁЁ, Ё«Ё ⥫®¬ LAMBDA. …б«Ё <дг­ЄжЁп> - нв® Ё¬п
¬ Єа® Ё«Ё ­Ґ®ЇаҐ¤Ґ«Ґ­­®© дг­ЄжЁЁ, ў®§­ЁЄ Ґв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ
"ЌҐ®ЇаҐ¤Ґ«Ґ­­ п дг­ЄжЁп".
ЏаЁ¬Ґа:
(DEFUN FUNCALL (FUNC ARG1 ARG2 ... ARGn)
(APPLY FUNC ARG1 ARG2 ... ARGn NIL) )

(FUNCALL 'CONS 'A '(B C D)) --> (A B C D)
(FUNCALL '(LAMBDA (N) (* N N)) 5) --> 25






CONSTANTP [object] Function

<ЋЎмҐЄв> пў«пҐвбп Є®­бв ­в®© в®Ј¤  Ё в®«мЄ® в®Ј¤ , Є®Ј¤ 
(EVAL ®ЎмҐЄв) ў®§ўа й Ґв <®ЎмҐЄв>. ‘Ё¬ў®« NIL, зЁб«  Ё бЇЁбЄЁ, г
Є®в®але car-н«Ґ¬Ґ­в Ґбвм бЁ¬ў®« QUOTE, а бб¬ ваЁў Ґвбп ў muLISP
Є Є Є®­бв ­вл. …б«Ё <®ЎмҐЄв> - Є®­бв ­в , (CONSTANTP ®ЎмҐЄв)
ў®§ўа й Ґв ’, Ё­ зҐ - NIL.
ЏаЁ¬Ґа:
(DEFUN CONSTANTP (OBJ)
((NULL OBJ))
((NUMBERP OBJ))
((ATOM OBJ) NIL)
(EQ (CAR OBJ) 'QUOTE) )

(CONSTANTP ()) --> T
(CONSTANTP 'T) --> NIL
(CONSTANTP -237.6) --> T
(CONSTANTP '(QUOTE (A B C))) --> T



UNDEFINED [symbol,form1,...,formN] Function

UNDEFINED Ё­ЁжЁЁагҐв ЇаҐалў ­ЁҐ Ї® ®иЁЎЄҐ "ЌҐ®ЇаҐ¤Ґ«Ґ­­ п
дг­ЄжЁп", ®бгйҐбвў«пп ўл§®ў (BREAK (LIST бЁ¬ў®« д®а¬ 1 ...
д®а¬ N)'"Undefined Function").
„ ­­ п дг­ЄжЁп гЇа ў«Ґ­Ёп ®иЁЎЄ®© ўл§лў Ґвбп в®Ј¤ , Є®Ј¤ 
¤Ґ« Ґвбп Ї®ЇлвЄ  ўлзЁб«Ёвм д®а¬г, г Є®в®а®© car-н«Ґ¬Ґ­в Ґбвм
бЁ¬ў®«, ­Ґ Ё¬ҐойЁ© ®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁЁ. ‚ᥠнв® Ї®¬®Ј Ґв
Ї®«м§®ў вҐ«о ®ЇаҐ¤Ґ«Ёвм вЁЇ ®иЁЎЄЁ.
ЏаЁ¬Ґа:
(DEFUN UNDEFINED LST
(BREAK LST '"Undefined Function") )





5.15.2. ”г­ЄжЁЁ ¬ Єа®а биЁаҐ­Ё©

‚л§®ў ¬ Єа® ЇаҐ¤бв ў«пҐв б®Ў®© бЇЁб®Є д®а¬ (macro form1
form2 ... formN), Ј¤Ґ <¬ Єа®> - Ё¬п ¬ Єа®дг­ЄжЁЁ. ЋЎлз­®
¬ Єа®а биЁаҐ­ЁҐ Ї®пў«пҐвбп  ўв®¬ вЁзҐбЄЁ, Є®Ј¤  Є®¬ЇЁ«ЁагҐвбп Ё¤Ё
ўлЇ®«­пҐвбп ўл§®ў ¬ Єа®. Ћ¤­ Є®, ЇаЁўҐ¤Ґ­­лҐ ­Ё¦Ґ дг­ЄжЁЁ
Ї®§ў®«пов Ї®«м§®ў вҐ«о Ї®б¬®ваҐвм, Є Є ®бгйҐбвў«пҐвбп нв®в ўл§®ў.


MACROEXPAND-1 [form] Function

…б«Ё <д®а¬ > Ґбвм ¬ Єа®ўл§®ў, (MACROEXPAND-1 д®а¬ )
ўлЇ®«­пҐв а биЁаҐ­ЁҐ <д®а¬л> (в.Ґ. ®бгйҐбвў«пҐв ¤Ґ©бвўЁп
¬ Єа®дг­ЄжЁЁ ­ ¤ <д®а¬®©>) Ё ў®§ўа й Ґв १г«мв в. ‚ Їа®вЁў­®¬
б«гз Ґ MACROEXPAND-1 ў®§ўа й Ґв <д®а¬г>.
ЏаЁ¬Ґа:
(DEFUN MACROEXPAND-1 (FORM)
((ATOM FORM) FORM)
((NOT (SYMBOLP (CAR FORM))) FORM)
((NOT (EQ 'MACRO (GETD (CAR FORM) T))) FORM)
(APPLY (CAR FORM) FORM) )




MACROEXPAND [form] Function

…б«Ё <д®а¬ > пў«пҐвбп ¬ Єа®ўл§®ў®¬, (MACROEXPAND д®а¬ )
Ї®ўв®а­® а биЁапҐв <д®а¬г> ¤® вҐе Ї®а, Ї®Є  १г«мв в а биЁаҐ­Ёп
­Ґ Ўг¤Ґв ¬ Єа®ўл§®ў®¬. MACROEXPAND ў®§ўа й Ґв १г«мв в
Ї®б«Ґ¤­ҐЈ® а биЁаҐ­Ёп.
ЏаЁ¬Ґа:
(DEFUN MACROEXPAND (FORM)
((ATOM FORM) FORM)
((NOT (SYMBOLP (CAR FORM))) FORM)
((NOT (EQ 'MACRO (GETD (CAR FORM) T))) FORM)
(MACROEXPAND (APPLY (CAR FORM) FORM)) )




MACROEXPAND: 'MACROEXPAND Control variable

…б«Ё MACROEXPAND Ґбвм ­Ґ NIL, ¬ Єа®ўл§®ўл а биЁаповбп в ЄЁ¬
¦Ґ а®Ўа §®¬, Є Є ЇаЁ дг­ЄжЁЁ MACROEXPAND ў® ўаҐ¬п Є®¬ЇЁ«пжЁЁ
(в.Ґ. Є®Ј¤  дг­ЄжЁп ®ЇаҐ¤Ґ«пҐвбп б Ї®¬®ймо DEFUN Ё«Ё PUTD). …б«Ё
MACROEXPAND - NIL, ¬ Єа®ўл§®ўл ­Ґ а биЁаповбп ў® ўаҐ¬п Є®¬ЇЁ«пжЁЁ.
•®вп Ё­вҐаЇаҐв в®а muLISP  ўв®¬ вЁзҐбЄЁ а биЁапҐв
¬ Єа®ўл§®ўл ў® ўаҐ¬п ўлЇ®«­Ґ­Ёп (в.Ґ. Є®Ј¤  дг­ЄжЁп ўлзЁб«пҐвбп),
®Ўлз­® 㤮Ў­ҐҐ ®бгйҐбвў«пвм а биЁаҐ­ЁҐ ¬ Єа®б®ў в®«мЄ® ®¤Ё­ а § -
ў® ўаҐ¬п Є®¬ЇЁ«пжЁЁ. „«п ¬ Єа®а биЁаҐ­Ё© ў® ўаҐ¬п Є®¬ЇЁ«пжЁЁ
¬ Єа® ¤®«¦­® Ўлвм ®ЇаҐ¤Ґ«Ґ­® ЇҐаҐ¤ ®ЇаҐ¤Ґ«Ґ­ЁҐ¬ дг­ЄжЁЁ,
ᮤҐа¦ йҐ© ¬ Єа®ўл§®ў,   MACROEXPAND ¤®«¦Ґ­ Ё¬Ґвм §­ зҐ­ЁҐ ­Ґ NIL.




5.15.3. ”г­ЄжЁЁ Ї« ­Ёа®ў ­Ёп дг­ЄжЁ©

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


MAPC [function,list1,...,listN] Function

(MAPC дг­ЄжЁп бЇЁб®Є1 ... бЇЁб®ЄN) ўлЇ®«­пҐв ¤Ґ©бвўЁп
<дг­ЄжЁЁ> ­ ¤ car-н«Ґ¬Ґ­в ¬Ё <бЇЁбЄ 1>, ..., <бЇЁбЄ N>, § вҐ¬ -
­ ¤ cdr-н«Ґ¬Ґ­в ¬Ё Є ¦¤®Ј® бЇЁбЄ , Ё в.¤. ¤® вҐе Ї®а, Ї®Є  Є ¦¤л©
бЇЁб®Є ­Ґ Ўг¤Ґв ЁбзҐаЇ ­. ЊЂђ‘ ў®§ўа











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