
Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
TRUNCATE [n,m] Function
…б«Ё <n> - 楫®Ґ зЁб«®, (TRUNCATE n) ў®§ўа й Ґв <n>. …б«Ё
<n> - Ї®«®¦ЁвҐ«м®Ґ ¤а®Ў®Ґ зЁб«®, TRUNCATE ў®§ўа й Ґв ЁЎ®«м襥
楫®Ґ зЁб«®, ® ¬ҐмиҐ <n>. …б«Ё <n> - ®ваЁж ⥫쮥 ¤а®Ў®Ґ
зЁб«®, TRUNCATE ў®§ўа й Ґв Ё¬Ґм襥 楫®Ґ зЁб«®, ® Ў®«миҐ <n>.
„агЈЁ¬Ё б«®ў ¬Ё, TRUNCATE гᥪ Ґв <n>, ЇаЁЎ«Ё¦ п ҐЈ® Є г«о.
…б«Ё <n> Ё <m> - зЁб« , (TRUNCATE n m) гᥪ Ґв Є г¤о
з б⮥ ®в ¤Ґ«ҐЁп <n> <m>. (TRUNCATE n m) ]rdbdfktynyj
(TRUNCATE (/ n m)). …б«Ё <n> (в.Ґ. ¤Ґ«ЁвҐ«м) - ®«м, ў®§ЁЄ Ґв
ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
ЏаЁ¬Ґа:
(DEFUN TRUNCATE (N M)
((NUMBERP M)
((ZEROP M)
(BREAK (LIST 'TRUNCATE N M) '"Zero divide") )
(TRUNCATE (/ N M)) )
((NUMBERP N)
((INTEGERP N) N)
((PLUSP N)
(the largest integer less than N) )
(the smallest integer greater than N) )
(BREAK (LIST 'TRUNCATE N M) '"Nonnumeric Argument") )
(TRUNCATE 7.3) --> 7
(TRUNCATE -3.5) --> -3
(TRUNCATE 8 3) --> 2
(TRUNCATE -15/4 2) --> -1
ROUND [n,m] Function
…б«Ё <n> - 楫®Ґ зЁб«®, (ROUND n) ў®§ўа й Ґв <n>. …б«Ё <n> -
¤а®Ў®Ґ, ROUND ў®§ўа й Ґв 楫®Ґ зЁб«®, Ў«Ё¦ ©иҐҐ Ї® § зҐЁо Є
<n>. …б«Ё <n> бв®Ёв Ї®бҐаҐ¤ЁҐ ¬Ґ¦¤г ¤ўг¬п 楫묨 зЁб« ¬Ё (в.Ґ.
2*n - 楫®Ґ зЁб«®), ROUND ў®§ўа й Ґв ®¤® Ё§ Ёе, ¤Ґ«п饥бп ЎҐ§
®бв вЄ Є ¤агЈ®Ґ.
…б«Ё <n> Ё <m> - зЁб« , (ROUND n m) ®ЄагЈ«пҐв з б⮥ ®в
¤Ґ«ҐЁп <n> <m>. ‚л§®ў (ROUND n m) нЄўЁў «ҐвҐ (ROUND (/ n
m)). …б«Ё <m> (в.Ґ. ¤Ґ«ЁвҐ«м) - ®«м, ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї®
®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
ЏаЁ¬Ґа:
(DEFUN ROUND (N M)
((NUMBERP M)
((ZEROP M)
(BREAK (LIST 'ROUND N M) '"Zero divide") )
(ROUND (/ N M)) )
((NUMBERP N)
((INTEGERP N) N)
((INTEGERP (* 2 N))
((EVENP (TRUNCATE N))
(TRUNCATE N) )
(ADD1 (TRUNCATE N)) )
(the integer closest to N) )
(BREAK (LIST 'ROUND N M) '"Nonnumeric Argument") )
(ROUND 7.3) --> 7
(ROUND -3.5) --> -4
(ROUND 8 3) --> 3
(ROUND -15/4 2) --> -2
MOD [n,m] Function
…б«Ё <n> Ё <m> - зЁб« , (MOD n m) ў®§ўа й Ґв १г«мв в
¤Ґ«ҐЁп <n> <m> Ї® ¬®¤г«о. …б«Ё <m> (в.Ґ ¤Ґ«ЁвҐ«м) а ўҐ г«о,
ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
MOD ®ЇаҐ¤Ґ«Ґ в Є, зв® FLOOR Ё MOD б®еа пов бўп§м ¬Ґ¦¤г
з бвл¬Ё Ё ®бв вЄ ¬Ё:
n=m*(FLOOR n m) + (MOD n m)
ЏаЁ¬Ґа:
(DEFINE MOD (N M)
((AND (NUMBERP N) (NUMBERP M))
((ZEROP M)
(BREAK (LIST 'MOD N M) '"Zero Divide") )
(- N (* M (FLOOR N M))) )
(BREAK (LIST 'MOD N M) '"Nonnumeric Argument") )
(MOD 7 3) --> 1
(MOD -7 3) --> 2
(MOD 7 -3) --> -2
(MOD -7 -3) --> -1
REM [n,m] Function
…б«Ё <n> Ё <m> - зЁб« , (REM n m) ў®§ўа й Ґв ®бв в®Є ®в
¤Ґ«ҐЁп <n> <m>. …б«Ё <m> (в.Ґ ¤Ґ«ЁвҐ«м) а ўҐ г«о, ў®§ЁЄ Ґв
ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
REM ®ЇаҐ¤Ґ«Ґ в Є, зв® TRUNCATE Ё REM б®еа пов бўп§м ¬Ґ¦¤г
з бвл¬Ё Ё ®бв вЄ ¬Ё:
n = m*(TRUNCATE n m) + (REM n m)
ЏаЁ¬Ґа:
(DEFINE REM (N M)
((AND (NUMBERP N) (NUMBERP M))
((ZEROP M)
(BREAK (LIST 'REM N M) '"Zero Divide") )
(- N (* M (TRUNCATE N M))) )
(BREAK (LIST 'REM N M) '"Nonnumeric Argument") )
(REM 7 3) --> 1
(REM -7 3) --> -1
(REM 7 -3) --> 1
(REM -7 -3) --> -1
DIVIDE [n,m] Function
…б«Ё <n> - зЁб«®, (DIVIDE n m) ў®§ўа й Ґв Ї аг (cons), г
Є®в®а®© car-н«Ґ¬Ґв Ґбвм (TRUNCATE n), cdr-н«Ґ¬Ґв - (REM n).
…б«Ё <n> Ё <m> - зЁб« , (DIVIDE n m) ў®§ўа й Ґв Ї аг (cons),
г Є®в®а®© car-н«Ґ¬Ґв Ґбвм (TRUNCATE n m), cdr-н«Ґ¬Ґв - (REM n
m). …б«Ё <m> (в.Ґ. ¤Ґ«ЁвҐ«м) а ўҐ г«о, ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї®
®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
‚ ⮬ б«гз Ґ, Є®Ј¤ вॡговбп гбҐзҐлҐ здб⮥ Ё ®бв в®Є
®¤®ўаҐ¬Ґ®, ўлЈ®¤ҐҐ ЁбЇ®«м§®ў вм дгЄжЁо DIVIDE, 祬 ўлзЁб«пвм
Ёе ®в¤Ґ«м®.
ЏаЁ¬Ґа:
(DEFINE DIVIDE (N M)
((AND (NUMBERP N) (NUMBERP M))
((ZEROP M)
(BREAK (LIST 'DIVIDE N M) '"Zero Divide") )
(CONS (TRUNCATE N M) (REM N M)) )
(BREAK (LIST 'DIVIDE N M) '"Nonnumeric Argument")
(DIVIDE 7 3) --> (2 . 1)
(DIVIDE -7 3) --> (-2 . -1)
(DIVIDE 7 -3) --> (-2 . 1)
(DIVIDE -7 -3) --> (2 . -1)
Џ®ЎЁв®ўлҐ «®ЈЁзҐбЄЁҐ дгЄжЁЁ, а бб¬ ваЁў Ґ¬лҐ ў ¤ ®¬
а §¤Ґ«Ґ, а Ў®в ов в®«мЄ® б 楫묨 зЁб« ¬Ё. …б«Ё ®Ё ўл§лў овбп б
ҐжҐ«л¬Ё аЈг¬Ґв ¬Ё, ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "ЌҐжҐ«л©
аЈг¬Ґв".
LOGAND [n1,n2,...,nM] Function
(LOGAND n1 n2 ... nM) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп
Ї®ЎЁв®ў®Ј® «®ЈЁзҐбЄ®Ј® "€" ¤ 楫묨 зЁб« ¬Ё <n1>, ..., <nM>.
…б«Ё LOGAND ўл§лў Ґвбп ЎҐ§ аЈг¬Ґв®ў, дгЄжЁп ўл¤ Ґв "-1" -
Ё¤ҐвЁдЁЄ в®а ¤ ®© ®ЇҐа жЁЁ.
ЏаЁ¬Ґа:
(DEFUN LOGAND LST
((NULL LST) -1)
((NULL (CDR LST))
(CAR LST) )
((AND (INTEGERP (CAR LST)) (INTEGERP (CADR LST)))
(APPLY 'LOGAND (CONS (the bitwise logical
and of (CAR LST) and (CADR LST))
(CDDR LST)) )
(APPLY 'LOGAND
(CONS (BREAK (LIST 'LOGAND (CAR LST) (CADR LST))
'"Noninteger Argument" )
(CDDR LST))) )
(LOGAND 11 6) --> 2
LOGIOR [n1,n2,...,nM] Function
(LOGIOR n1 n2 ... nM) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп
Ї®ЎЁв®ў®Ј® «®ЈЁзҐбЄ®Ј® "€‹€" ¤ 楫묨 зЁб« ¬Ё <n1>, <n2>, ...,
<nM>. …б«Ё LOGIOR ўл§лў Ґвбп ЎҐ§ аЈг¬Ґв®ў, дгЄжЁп ўл¤ Ґв 0 -
Ё¤ҐвЁдЁЄ в®а ¤ ®© дгЄжЁЁ.
ЏаЁ¬Ґа:
(DEFUN LOGIOR LST
((NULL LST) 0)
((NULL (CDR LST))
(CAR LST) )
((AND (INTEGERP (CAR LST)) (INTEGERP (CADR LST)))
(APPLY 'LOGIOR (CONS (the bitwise logical inclusive
or of (CAR LST) and (CADR LST))
(CDDR LST)) )
(APPLY 'LOGIOR
(CONS (BREAK (LIST 'LOGIOR (CAR LST) (CADR LST))
'"Noninteger Argument" )
(CDDR LST))) )
(LOGIOR 11 6) --> 15
LOGXOR [n1,n2,...,nM] Function
(LOGXOR n1 n2 ... nM) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп
Ї®ЎЁв®ў®Ј® «®ЈЁзҐбЄ®Ј® ЁбЄ«оз о饣® "€‹€" (XOR) ¤ 楫묨
зЁб« ¬Ё <n1>, ..., <nM>. …б«Ё LOGXOR ўл§лў Ґвбп ЎҐ§ аЈг¬Ґв®ў,
дгЄжЁп ў®§ўа й Ґв 0 - Ё¤ҐвЁдЁЄ в®а ¤ ®© дгЄжЁЁ.
ЏаЁ¬Ґа:
(DEFUN LOGXOR LST
((NULL LST) 0)
((NULL (CDR LST))
(CAR LST) )
((AND (INTEGERP (CAR LST)) (INTEGERP (CADR LST)))
(APPLY 'LOGXOR (CONS (the bitwise logical exclusive
or of (CAR LST) and (CADR LST))
(CDDR LST)) )
(APPLY 'LOGXOR
(CONS (BREAK (LIST 'LOGXOR (CAR LST) (CADR LST))
'"Noninteger Argument" )
(CDDR LST))) )
(LOGXOR 11 6) --> 13
LOGNOT [n] Function
(LOGNOT n) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп Ї®ЎЁв®ў®Ј®
«®ЈЁзҐбЄ®Ј® "Ќ…" ¤ <n>.
ЏаЁ¬Ґа:
(DEFUN LOGNOT (N)
((INTEGERP N)
(complement every bit in N) )
(BREAK (LIST 'LOGNOT N) '"Noninteger Argument") )
(LOGNOT 9) --> 65526
SHIFT [n,m] Function
…б«Ё <m> - Ї®«®¦ЁвҐ«м®Ґ, (SHIFT n m) ў®§ўа й Ґв १г«мв в
б¤ўЁЈ <n> ў«Ґў® <m> ЎЁв®ў. …б«Ё <m> - ®ваЁж ⥫쮥, <n>
б¤ўЁЈ Ґвбп ўЇа ў® -<m> ЎЁв®ў.
ЏаЁ¬Ґа:
(DEFUN SHIFT (N M)
((AND (INTEGERP N) (INTEGERP M))
((ZEROP M) N)
((PLUSP M)
((SHIFT (* N 2) (SUB1 M)) )
(SHIFT (TRUNCATE N 2) (SUB1 M)) )
(BREAK (LIST 'SHIFT N M) '"Noninteger Argument" )
(SHIFT 5 2) --> 20
(SHIFT 5 -2) --> 1
BITLENGTH [n] Function
(BITLENGTH n) ў®§ўа й Ґв Є®«ЁзҐбвў® ЎЁв®ў, вॡ㥬®Ґ ¤«п
а §¬ҐйҐЁп <n>.
ЏаЁ¬Ґа:
(DEFUN BITLENGTH (N)
((INTEGERP N)
((ZEROP N) 0)
(ADD1 (BITLENGTH (SHIFT N -1))) )
(BREAK (LIST 'BITLENGTH N) '"Noninteger Argument") )
(BITLENGTH 4) --> 3
(BITLENGTH 7) --> 3
(BITLENGTH 8) --> 4
5.13. Ќ з «млҐ ўла ¦ҐЁп ¤«п ўў®¤
”гЄжЁЁ ўў®¤ , ЇҐаҐ¬ҐлҐ Є®ва®«п Ё бЁ¬ў®«млҐ ¬ Єа®бл ¤ ов
ў®§¬®¦®бвм Їа®Ја ¬¬ ¬, ЇЁб л¬ muLISP, бзЁвлў вм Ё
ЁвҐаЇаҐвЁа®ў вм ¤ лҐ Ё§ ⥪г饣® ўе®¤®Ј® Ёбв®зЁЄ (CIS).
”гЄжЁЁ ўе®¤®Ј® Ёбв®зЁЄ Ёбб«Ґ¤гов CIS Ё «б ў«Ёў ов
гЄ § ⥫Ё з⥨п д ©«л.
”гЄжЁЁ ўў®¤ бзЁвлў :в ¤ лҐ Ё§ CIS.
ЏҐаҐ¬ҐлҐ гЇа ў«ҐЁп ўў®¤®¬ гЇа ў«пов а §«Ёзл¬Ё ®ЇжЁп¬Ё
ўў®¤ .
‘Ё¬ў®«млҐ ¬ Єа®бл ўў®¤ ®бгйҐбвў«пов Ја ¬¬ вЁзҐбЄЁ© а §Ў®а
бў®©бвў дгЄжЁ©, Є Є в®«мЄ® дгЄжЁп ўбваҐз Ґв бЁ¬ўа« ¬ Єа®.
5.13.1. ”гЄжЁЁ ўе®¤®Ј® Ёбв®зЁЄ
”гЄжЁЁ ўе®¤®Ј® Ёбв®зЁЄ ®вЎЁа ов Ёд®а¬ жЁо, Ё¬Ґойго
®в®иҐЁҐ Є Ёбв®зЁЄг ўў®¤ Ёд®а¬ жЁЁ дгЄжЁп¬Ё ўў®¤ . CIS ¬®¦Ґв
б®§¤ ў вмбп «ЁЎ® б Є®б®«Ё, «ЁЎ® Ё§ ⥪г饣® ўе®¤®Ј® д ©«
(CIF). •®вп ®ЇаҐ¤Ґ«ҐлҐ вЁЇл д ©«®ў ¬®Јгв Ўлвм ®вЄалвл ¤«п
ўў®¤ , в®«мЄ® ®¤Ё Ё§ ®вЄалвле ўе®¤ле д ©«®ў ¬®¦Ґв Ўлвм д ©«®¬
CIF ў Є ¦¤л© Є®ЄаҐвл© ¬®¬Ґв.
RDS [drive:name.type] Function
…б«Ё д ©« <гбва®©бвў®:Ё¬п.вЁЇ> 㦥 Ґ Ўл« а ҐҐ ®вЄалв ¤«п
ўў®¤ Ё (Ё«Ё) ўлў®¤ , (RDS гбва®©бвў®:Ё¬п.вЁЇ) ЁйҐв д ©«
<Ё¬п.вЁЇ> <гбва®©б⢥>. …б«Ё д ©« ©¤Ґ, RDS ¤Ґ« Ґв ҐЈ®
д ©«®¬ CIF, гбв ў«Ёў Ґв гЄ § ⥫м звҐЁп ў ®«м, ЇҐаҐ¬Ґ®©
гЇа ў«ҐЁп RDS ЇаЁбў Ёў Ґв § 票Ґ <гбва®©бвў®:Ё¬п.вЁЇ>. ќв®
¤Ґ« Ґв д ©« Є Є д ©«®¬ CIF, в Є Ё д ©«®¬ CIS. …б«Ё д ©« Ґ
©¤Ґ, RDS Ґ Ё§¬ҐпҐв CIF, ЇҐаҐ¬Ґго гЇа ў«ҐЁп RDS Ї®« Ј Ґв
а ў®© NIL; § CIS ЎҐаҐвбп Є®б®«м.
…б«Ё д ©« <гбва®©бвў®:Ё¬п.вЁЇ> 㦥 Ўл« ®вЄалв ¤«п ўў®¤ Ё
(Ё«Ё) ўлў®¤ , (RDS гбва®©бвў®:Ё¬п.вЁЇ) ¤Ґ« Ґв ҐЈ® д ©«®¬ CIF Ё
гбв ў«Ёў Ґв ЇҐаҐ¬Ґ®© гЇа ў«ҐЁп RDS § 票Ґ бЁ¬ў®«
<гбва®©бвў®:Ё¬п.вЁЇ>. ќв® ¤Ґ« Ґв д ©« Є Є д ©«®¬ CIF, в Є Ё CIS.
Ћв¬ҐвЁ¬, зв® ¤ п ®ЇҐа жЁп Ґ ®ЎҐбЇҐзЁў Ґв ¤®бвгЇ Є ¤ЁбЄг Ё
зв® гЄ § ⥫м з⥨п д ©« Ґ Ё§¬ҐпҐвбп.
…б«Ё <вЁЇ> ®вбгвбвўгҐв, RDS ЇаЁбў Ёў Ґв вЁЇг д ©« Ё¬п
"LSP". …б«Ё ®вбгвбвўгҐв <гбва®©бвў®:>, RDS ўлЇ®«пҐв ¤Ґ©бвўЁп,
®ЇЁб лҐ ўлиҐ, § ЁбЄ«о票Ґ¬ в®Ј®, зв® д ©« ®вЄалў Ґвбп
гбва®©б⢥, § ¤ ®¬ ў ¤ л© ¬®¬Ґв Ї® 㬮«з Ёо.
…б«Ё Ё¬ҐҐвбп ЄвЁўл© CIF, ўл§®ў (RDS) § Єалў Ґв CIF ¤«п
ўў®¤ (® Ґ ¤«п ўлў®¤ , Ґб«Ё Є ЄЁҐ-«ЁЎ® д ©«л ҐйҐ ®вЄалвл
ўлў®¤), в.Ґ. ЄвЁў®Ј® CIF Ґв, Ё гбв ў«Ёў Ґв ЇҐаҐ¬Ґго RDS ў
NIL; § CIS ЇаЁЁ¬ Ґвбп Є®б®«м.
ЏаЁ¬Ґа:
(DEFUN RDS (DRIVE:NAME.TYPE)
((NULL DRIVE:NAME.TYPE)
(if there is an active CIF, close the file for input)
(SETQ RDS NIL) )
((SYMBOLP DRIVE:NAME.TYPE)
((if the file DRIVE:NAME.TYPE is already open)
(make DRIVE:NAME.TYPE the active CIF)
(SETQ RDS DRIVE:NAME.TYPE) )
((if the file DRIVE:NAME.TYPE exists)
(open DRIVE:NAME.TYPE for input)
(make DRIVE:NAME.TYPE the active CIF)
(zero the file's read pointer)
(SETQ RDS DRIVE:NAME.TYPE) )
(SETQ RDS NIL) )
(SETQ RDS NIL) )
(RDS 'D:ANIMAL) --> D:ANIMAL ; Makes D:ANIMAL.LSP the CIS
RDS: NIL Control variable
ЋЎлз® дгЄжЁп RDS ®бгйҐбвў«пҐв Є®ва®«м Ёбв®зЁЄ ¤«п ўў®¤
н«Ґ¬Ґв®ў ў Їа®Ја ¬¬л muLISP. Ћ¤ Є®, Ї®б«Ґ бзЁвлў Ёп з бвЁ
д ©« ¬®¦Ґв ў®§ЁЄгвм Ґ®Ўе®¤Ё¬®бвм ўаҐ¬Ґ® ЇҐаҐЄ«озЁвмбп
ўў®¤ б Є®б®«Ё, ЇаҐаў ў з⥨Ґ д ©« . ’ Єго ў®§¬®¦®бвм
®ЎҐбЇҐзЁў Ґв Є®ва®«м п ЇҐаҐ¬Ґ п RDS.
Џ®б«Ґ ЁбЇ®«м§®ў Ёп дгЄжЁЁ RDS ¤«п ®вЄалвЁп д ©« Ё
гбв ®ўЄЁ ҐЈ® ў Є зҐб⢥ CIF, Є®б®«м ¬Ґ¦Ґв бв вм CIS ЎҐ§
Ё§¬ҐҐЁп CIF Ї®б।бвў®¬ ЇаЁбў Ёў Ёп Є®ва®«м®© ЇҐаҐ¬Ґ®© RDS
§ 票п NIL. Џ®б«Ґ¤го饥 § 票Ґ RDS, ®в«Ёз®Ґ ®в NIL, ®Їпвм
ᤥ« Ґв CIF CIS-®¬, Ё з⥨Ґ д ©« ў®§ўЎ®ўЁвбп б в®Ј® ¬Ґбв ,
Є®в®а®¬ ®® Ўл«® ЇаЁ®бв ®ў«Ґ®.
INPUTFILE [drive:name.type] Function
(INPUTFILE) ў®§ўа й Ґв Ё¬п CIF ў ўЁ¤Ґ бЁ¬ў®« ў д®а¬Ґ
"гбва®©бвў®:Ё¬п.вЁЇ".
…б«Ё <гбва®©бвў®:Ё¬п.вЁЇ> - ®вЄалвл© ўе®¤®© д ©«,
(INPUTFILE гбва®©бвў®:Ё¬п.вЁЇ) ў®§ўа й Ґв ’, ў Їа®вЁў®¬ б«гз Ґ
ў®§ўа й Ґвбп NIL. …б«Ё <.вЁЇ> ®вбгвбвўгҐв, в® вЁЇ д ©«
Ї®« Ј Ґвбп а ўл¬ "LSP". …б«Ё ®вбгвбвўгҐв <гбва®©бвў®:>, в®
ЎҐаҐвбп ⥪г饥 § ॣЁбваЁа®ў ®Ґ (logged) гбва®©бвў®.
OPRNFILES [ ] Function
(OPENFILES) ў®§ўа й Ґв бЇЁб®Є Ё¬Ґ ®вЄалвле ў бв®пйЁ©
¬®¬Ґв ўе®¤ле Ё ўл室ле д ©«®ў. Љ ¦¤®Ґ Ё¬п пў«пҐвбп бЁ¬ў®«®¬ ў
д®а¬Ґ "гбва®©бвў®:Ё¬п.вЁЇ".
READPTR [integer] Function
…б«Ё <楫®Ґ зЁб«®> Ґбвм ®«м Ё«Ё Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ,
(READPTR 楫.зЁб«®) гбв ў«Ёў Ґв гЄ § ⥫о з⥨п CIF § 票Ґ
<楫.зЁб« > Ё ў®§ўа й Ґв ЇаҐ¤л¤г饥 § 票Ґ гЄ § ⥫п. …б«Ё
<楫.зЁб«®> - Ё ®«м, Ё Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ, (READPTR
楫.зЁб«®) ў®§ўа й Ґв ⥪г饥 § 票Ґ гЄ § ⥫п з⥨п CIF.
(READPTR 'EOF) ў®§ўа й Ґв а §¬Ґа д ©« CIF ў Ў ©в е. …б«Ё д ©«
CIF Ґв, в® READPTR ў®§ўа й Ґв NIL.
“Є § ⥫м з⥨п д ©« ®ЇаҐ¤Ґ«пҐв в® ¬Ґбв® ў д ©«Ґ, ®вЄг¤
Ўг¤Ґв бзЁвлў вмбп б«Ґ¤гойЁ© н«Ґ¬Ґв. Љ®Ј¤ RDS ®вЄалў Ґв д ©« ¤«п
ўў®¤ , гЄ § ⥫м з⥨п д ©« гбв ў«Ёў Ґвбп ў 0. Љ®Ј¤ н«Ґ¬Ґв
Ё§ д ©« бзЁв , гЄ § ⥫м з⥨п д ©« ўв®¬ вЁзҐбЄЁ
㢥«ЁзЁў Ґвбп. Ћв¬ҐвЁ¬, зв® READPRT а Ў®в Ґв б CIF, ® Ґ б CIS,
Ї®н⮬㠥®Ўе®¤Ё¬®, зв®Ўл ў Є зҐб⢥ CIS ўлбвгЇ « Є®б®«м.
ЏаЁ¬Ґа:
(DEFUN READPTR (N)
((if there is no active CIF) NIL)
((EQ N'EOF)
(return the file size in bytes) )
((AND (INTEGERP N) (>= N 0))
(set the CIF read pointer to N)
(return the CIF's previous read pointer) )
(return the CIF's current read pointer) )
•®а®иЁ¬ ЇаЁ¬Ґа®¬ ЁбЇ®«м§®ў Ёп READPTR пў«пҐвбп бЁб⥬
®Ўг票п muLISP. „ п бЁб⥬ бзЁвлў Ґв Ё ўл¤ Ґв нЄа
⥪бвл га®Є®ў, ЁбЇ®«м§гп дгЄжЁо READFILE. ’.Є. бЁб⥬
®ЎҐбЇҐзЁў Ґв ў®§¬®¦®бвм Їа®б¬®ва ЇаҐ¤л¤г饣® нЄа , READFILE
"Їа®в «ЄЁў Ґв" гЄ § ⥫Ё з⥨п, ®в¬Ґз ойЁҐ Є ¦¤л© нЄа , ў б⥪
PRTLST. …б«Ё ®Ўгз ойЁ©бп е®зҐв Ї®б¬®ваҐвм ЇаҐ¤л¤гйЁ© нЄа ,
®бгйҐбвў«пҐвбп ўл§®ў
(READPTR (POP PRTLST))
Ё гЄ § ⥫м з⥨п б¤ўЁЈ Ґвбп § ¤ Є з «г нЄа , зв®
Ї®§ў®«пҐв бзЁв вм Ё ўлᢥвЁвм ҐЈ® ҐйҐ а §.
5.13.2. ”гЄжЁЁ ўў®¤ .
”гЄжЁЁ ўў®¤ ®бгйҐбвў«пов бзЁвлў ЁҐ CIS Ё ў®§ўа в ўў®¤
CIS. …б«Ё д ©« Ґбвм CIS Ё Ґб«Ё ®бгйҐбвў«пҐвбп Ї®ЇлвЄ бзЁвлў вм
¤ лҐ § ЇаҐ¤Ґ« ¬Ё д ©« , ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї® ®йЁЎЄҐ "Љ®Ґж
д ©« " ("End-of-file").
READ-CHAR [peek-flag] Function
(READ-CHAR) бзЁвлў Ґв б«Ґ¤гойЁ© н«Ґ¬Ґв Ё§ CIS Ё ў®§ўа й Ґв
бЁ¬ў®«, г Є®в®а®Ј® print-Ё¬п б®бв®Ёв Ё§ нв®Ј® бЁ¬ў®« . „«п
㤮Ўбвў Їа®Ја ¬¬Ёа®ў Ёп бЁ¬ў®«, ў®§ўа й Ґ¬л© дгЄжЁҐ©
READ-CHAR, Єа®¬Ґ в®Ј®, ЇаЁбў Ёў Ґвбп ЇҐаҐ¬Ґ®© RATOM. Ћв¬ҐвЁ¬,
зв® READ-CHAR ўбҐЈ¤ ў®§ўа й Ґв бЁ¬ў®« ¤ ¦Ґ Ґб«Ё бзЁв л©
н«Ґ¬Ґв Ґбвм ¤ҐбпвЁз®Ґ зЁб«®.
…б«Ё <peek-flag> Ґ а ўҐ NIL, (READ-CHAR peek-flag) в Є ¦Ґ
бзЁвлў Ґв ®¤Ё н«Ґ¬Ґв, ў®§ўа й п ᮮ⢥вбвўгойЁ© бЁ¬ў®«, Ё
ЇаЁбў Ёў Ґв ҐЈ® ЇҐаҐ¬Ґ®© RATOM. Ћ¤ Є®, н«Ґ¬Ґв, бзЁвлў Ґ¬л©
дгЄжЁҐ© READ-CHAR, ®бв Ґвбп ў ўҐаегиЄҐ ўе®¤®Ј® Ї®в®Є , Є®в®ал©
ЁбЇ®«м§гҐвбп дгЄжЁп¬Ё READ Ё RATOM (® Ґ дгЄжЁҐ© READ-CHAR).
ќв® ¤ Ґв ў®§¬®¦®бвм ЁбЇ®«м§®ў вм READ-CHAR ¤«п в®Ј®, зв®Ўл
"§ Ј«п¤лў вм ўЇҐаҐ¤" § ®¤Ё н«Ґ¬Ґв, Ё § ⥬ ЁбЇ®«м§®ў вм READ
Ё«Ё RATOM ¤«п бзЁвлў Ёп нв®Ј® н«Ґ¬Ґв Є Є з бвЁ б«Ґ¤го饣®
ўе®¤®Ј® Ї®в®Є .
ЏаЁ¬Ґа:
(DEFUN READ-CHAR (FLAG)
((a file is CIS and the end-of-file has been reached)
((BREAK (INPUTFILE) "End-of-file") )
(read the next character from the CIS)
(SETQ RATOM (the symbol whose print name is that
character))
((NULL FLAG) RATOM)
(store the character in the function RATOM's input buffer)
RATOM )
UNREAD-CHAR [ ] Function
(UNREAD-CHAR) ў®ббв ў«Ёў Ґв Ї®б«Ґ¤Ё© н«Ґ¬Ґв, бзЁв л©
Ё§ CIS, ў ўҐаегиЄҐ CIS Ё ў®§ўа й Ґв NIL. ’.Є. ¬®¦Ґв Ўлвм
ў®ббв ®ў«Ґ в®«мЄ® Ї®б«Ґ¤Ё© бзЁв л© н«Ґ¬Ґв, ўл§®ў дгЄжЁЁ
Ї®ўв®а® ЎҐ§ ўлЇ®«ҐЁп ®ЇҐа жЁЁ бзЁвлў Ёп Ґ Ўг¤Ґв Ё¬Ґвм
१г«мв в .
ЏаЁ¬Ґа:
(DEFUN UNREAD-CHAR ()
(restore the last character read from the CIS to the head
of the input stream)
NIL )
$ (PROG1 (READ-CHAR) (UNREAD-CHAR))COMPUTER
C
$ COMPUTER
PEEK-CHAR [flag] Function
(PEEK-CHAR) бзЁвлў Ґв б«Ґ¤гойЁ© н«Ґ¬Ґв Ё§ CIS. (PEEK-CHAR T)
бзЁвлў Ґв н«Ґ¬Ґвл Ё§ ¤® вҐе Ї®а, Ї®Є ўбваҐз Ґвбп ҐЇгбв®©
н«Ґ¬Ґв. …б«Ё <н«Ґ¬Ґв> - бЁ¬ў®«, (PEEK-CHAR н«Ґ¬Ґв) бзЁвлў Ґв
н«Ґ¬Ґвл Ё§ CIS ¤® вҐе Ї®а, Ї®Є Ґ ўбваҐвЁвбп н«Ґ¬Ґв, а ўл©
ЇҐаў®¬г бЁ¬ў®«г ў ђ-Ё¬ҐЁ <н«Ґ¬Ґв >.
‚® ўбҐе б«гз пе, PEEK-CHAR ў®ббв ў«Ёў Ґв Ї®б«Ґ¤Ё©
бзЁв л© Ё§ CIS н«Ґ¬Ґв ў ўҐаегиЄҐ CIS Ё ў®§ўа й Ґв бЁ¬ў®«, г
Є®в®а®Ј® ђ-Ё¬п б®бв®Ёв Ё§ нв®Ј® н«Ґ¬Ґв . „«п 㤮Ўбвў
Їа®Ја ¬¬Ёа®ў Ёп бЁ¬ў®«, ўл¤ ў Ґ¬л© PEEK-CHAR, Єа®¬Ґ в®Ј®,
ЇаЁбў Ёў Ґвбп ЇҐаҐ¬Ґ®© RATOM. PEEK-CHAR ўбҐЈ¤ ў®§ўа й Ґв
бЁ¬ў®«, ¤ ¦Ґ Ґб«Ё Ї®б«Ґ¤Ё© н«Ґ¬Ґв - зЁб«®.
ЏаЁ¬Ґа:
(DEFUN PEEK-CHAR (FLAG)
( ((NULL FLAG)
(READ-CHAR) )
((EQ FLAG 'T)
(LOOP
((non-whitespace character (READ-CHAR))) ) )
(LOOP
((EQ (READ-CHAR) (CHAR FLAG 0))) ) )
(UNREAD-CHAR)
RATOM )
$ (PEEK-CHAR)COMPUTER
C
$ COMPUTER
$ (PEEK-CHAR T) COMPUTER
C
$ COMPUTER
$ (PEEK-CHAR 'M) COMPUTER
M
$ MPUTER
CLEAR-INPUT [ ] Function
…б«Ё § CIS ЎҐаҐвбп Є®б®«м, Ё ўў®¤ б Є®б®«Ё ®бгйҐбвў«пҐвбп
¬Ґв®¤®¬ «ЁҐ©®Ј® । ЄвЁа®ў Ёп, (CLEAR-INPUT) зЁбвЁв ЎгдҐа
«ЁҐ©®Ј® । ЄвЁа®ў Ёп. …б«Ё Є®б®«м пў«пҐвбп CIS-®¬ Ё ўў®¤ б
Є®б®«Ё ®бгйҐбвў«пҐвбп ¬Ґв®¤®¬ ЇаЁ¬ЁвЁў®Ј® (ЈагЎ®Ј®) ўў®¤ ,
CLEAR-INPUT зЁбвЁв ЎгдҐа ЇаЁ¬ЁвЁў®Ј® (ЈагЎ®Ј®) ўў®¤ (б¬. а §¤Ґ«
5.13.3, Ј¤Ґ а бб¬ ваЁў овбп ¬Ґв®¤л «ЁҐ©®Ј® । ЄвЁа®ў Ёп Ё
ЇаЁ¬ЁвЁў®Ј® ўў®¤ ).
‚ «оЎ®¬ б«гз Ґ, CLEAR-INPUT ў®§ўа й Ґв NIL.
ЏаЁ¬Ґа:
(DEFUN CLEAR-INPUT ()
((NULL RDS)
(clear the console input buffer)
NIL ) )
$ (PROG1 (READ-CHAR) (CLEAR-INPUT))COMPUTER
C
READ-LINE [ ] FUnction
(READ-LINE) бзЁвлў Ґв н«Ґ¬Ґвл Ё§ CIS ¤® вҐе Ї®а, Ї®Є Ґ
ўбваҐвЁвбп <return>, Ё ў®§ўа й Ґв бЁ¬ў®« , г Є®в®а®Ј® ђ-Ё¬п
б®бв®Ёв Ё§ ўбҐе бзЁв ле н«Ґ¬Ґв®ў, Єа®¬Ґ <return>. READ-LINE
ў®§ўа й Ґв бва®Єг, в®з® в Єго ¦Ґ, Є Є ® Ґбвм, Ґ ®вЎа блў п
ЇгбвлҐ ¬Ґбв Ё«Ё Є®¬¬Ґв аЁЁ.
ЏаЁ¬Ґа:
(DEFUN READ-LINE ()
(read characters from the CIS until <return> is read)
(return the symbol whose print name consists of the
characters read) )
$ (READ-LINE) (A B C
(A B C
LISTEN [] Function
…б«Ё CIS ᮤҐа¦Ёв н«Ґ¬Ґвл, «®бвгЇлҐ ¤«п ўў®¤ , (LISTEN)
ў®§ўа й Ґв ’, ў Їа®вЁў®¬ б«гз Ґ - NIL.
LISTEN ЁбЇ®«м§гҐвбп ¤«п ®ЇаҐ¤Ґ«ҐЁп б®бв®пЁп Ј®в®ў®бвЁ ¤«п
н«Ґ¬Ґв®ў CIS. …б«Ё CIS - нв® Є®б®«м, ¤ п дгЄжЁп ¬®¦Ґв
ЁбЇ®«м§®ў вмбп ¤«п Їа®ўҐаЄЁ, пў«пҐвбп «Ё н«Ґ¬Ґв ¤®бвгЇл¬ ¤«п
Ї®«м§®ў ⥫п. …б«Ё CIS - нв® Ёбе®¤л© д ©«, ¤ п дгЄжЁп ¬®¦Ґв
ЁбЇ®«м§®ў вмбп ¤«п Їа®ўҐаЄЁ, ¤®бвЁЈгв «Ё Є®Ґж д ©« .
ЏаЁ¬Ґа:
(DEFUN LISTEN ()
((if the CIS has a character available for input) T)
NIL )
…б«Ё <n> - 楫®Ґ зЁб«®, (TRUNCATE n) ў®§ўа й Ґв <n>. …б«Ё
<n> - Ї®«®¦ЁвҐ«м®Ґ ¤а®Ў®Ґ зЁб«®, TRUNCATE ў®§ўа й Ґв ЁЎ®«м襥
楫®Ґ зЁб«®, ® ¬ҐмиҐ <n>. …б«Ё <n> - ®ваЁж ⥫쮥 ¤а®Ў®Ґ
зЁб«®, TRUNCATE ў®§ўа й Ґв Ё¬Ґм襥 楫®Ґ зЁб«®, ® Ў®«миҐ <n>.
„агЈЁ¬Ё б«®ў ¬Ё, TRUNCATE гᥪ Ґв <n>, ЇаЁЎ«Ё¦ п ҐЈ® Є г«о.
…б«Ё <n> Ё <m> - зЁб« , (TRUNCATE n m) гᥪ Ґв Є г¤о
з б⮥ ®в ¤Ґ«ҐЁп <n> <m>. (TRUNCATE n m) ]rdbdfktynyj
(TRUNCATE (/ n m)). …б«Ё <n> (в.Ґ. ¤Ґ«ЁвҐ«м) - ®«м, ў®§ЁЄ Ґв
ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
ЏаЁ¬Ґа:
(DEFUN TRUNCATE (N M)
((NUMBERP M)
((ZEROP M)
(BREAK (LIST 'TRUNCATE N M) '"Zero divide") )
(TRUNCATE (/ N M)) )
((NUMBERP N)
((INTEGERP N) N)
((PLUSP N)
(the largest integer less than N) )
(the smallest integer greater than N) )
(BREAK (LIST 'TRUNCATE N M) '"Nonnumeric Argument") )
(TRUNCATE 7.3) --> 7
(TRUNCATE -3.5) --> -3
(TRUNCATE 8 3) --> 2
(TRUNCATE -15/4 2) --> -1
ROUND [n,m] Function
…б«Ё <n> - 楫®Ґ зЁб«®, (ROUND n) ў®§ўа й Ґв <n>. …б«Ё <n> -
¤а®Ў®Ґ, ROUND ў®§ўа й Ґв 楫®Ґ зЁб«®, Ў«Ё¦ ©иҐҐ Ї® § зҐЁо Є
<n>. …б«Ё <n> бв®Ёв Ї®бҐаҐ¤ЁҐ ¬Ґ¦¤г ¤ўг¬п 楫묨 зЁб« ¬Ё (в.Ґ.
2*n - 楫®Ґ зЁб«®), ROUND ў®§ўа й Ґв ®¤® Ё§ Ёе, ¤Ґ«п饥бп ЎҐ§
®бв вЄ Є ¤агЈ®Ґ.
…б«Ё <n> Ё <m> - зЁб« , (ROUND n m) ®ЄагЈ«пҐв з б⮥ ®в
¤Ґ«ҐЁп <n> <m>. ‚л§®ў (ROUND n m) нЄўЁў «ҐвҐ (ROUND (/ n
m)). …б«Ё <m> (в.Ґ. ¤Ґ«ЁвҐ«м) - ®«м, ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї®
®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
ЏаЁ¬Ґа:
(DEFUN ROUND (N M)
((NUMBERP M)
((ZEROP M)
(BREAK (LIST 'ROUND N M) '"Zero divide") )
(ROUND (/ N M)) )
((NUMBERP N)
((INTEGERP N) N)
((INTEGERP (* 2 N))
((EVENP (TRUNCATE N))
(TRUNCATE N) )
(ADD1 (TRUNCATE N)) )
(the integer closest to N) )
(BREAK (LIST 'ROUND N M) '"Nonnumeric Argument") )
(ROUND 7.3) --> 7
(ROUND -3.5) --> -4
(ROUND 8 3) --> 3
(ROUND -15/4 2) --> -2
MOD [n,m] Function
…б«Ё <n> Ё <m> - зЁб« , (MOD n m) ў®§ўа й Ґв १г«мв в
¤Ґ«ҐЁп <n> <m> Ї® ¬®¤г«о. …б«Ё <m> (в.Ґ ¤Ґ«ЁвҐ«м) а ўҐ г«о,
ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
MOD ®ЇаҐ¤Ґ«Ґ в Є, зв® FLOOR Ё MOD б®еа пов бўп§м ¬Ґ¦¤г
з бвл¬Ё Ё ®бв вЄ ¬Ё:
n=m*(FLOOR n m) + (MOD n m)
ЏаЁ¬Ґа:
(DEFINE MOD (N M)
((AND (NUMBERP N) (NUMBERP M))
((ZEROP M)
(BREAK (LIST 'MOD N M) '"Zero Divide") )
(- N (* M (FLOOR N M))) )
(BREAK (LIST 'MOD N M) '"Nonnumeric Argument") )
(MOD 7 3) --> 1
(MOD -7 3) --> 2
(MOD 7 -3) --> -2
(MOD -7 -3) --> -1
REM [n,m] Function
…б«Ё <n> Ё <m> - зЁб« , (REM n m) ў®§ўа й Ґв ®бв в®Є ®в
¤Ґ«ҐЁп <n> <m>. …б«Ё <m> (в.Ґ ¤Ґ«ЁвҐ«м) а ўҐ г«о, ў®§ЁЄ Ґв
ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
REM ®ЇаҐ¤Ґ«Ґ в Є, зв® TRUNCATE Ё REM б®еа пов бўп§м ¬Ґ¦¤г
з бвл¬Ё Ё ®бв вЄ ¬Ё:
n = m*(TRUNCATE n m) + (REM n m)
ЏаЁ¬Ґа:
(DEFINE REM (N M)
((AND (NUMBERP N) (NUMBERP M))
((ZEROP M)
(BREAK (LIST 'REM N M) '"Zero Divide") )
(- N (* M (TRUNCATE N M))) )
(BREAK (LIST 'REM N M) '"Nonnumeric Argument") )
(REM 7 3) --> 1
(REM -7 3) --> -1
(REM 7 -3) --> 1
(REM -7 -3) --> -1
DIVIDE [n,m] Function
…б«Ё <n> - зЁб«®, (DIVIDE n m) ў®§ўа й Ґв Ї аг (cons), г
Є®в®а®© car-н«Ґ¬Ґв Ґбвм (TRUNCATE n), cdr-н«Ґ¬Ґв - (REM n).
…б«Ё <n> Ё <m> - зЁб« , (DIVIDE n m) ў®§ўа й Ґв Ї аг (cons),
г Є®в®а®© car-н«Ґ¬Ґв Ґбвм (TRUNCATE n m), cdr-н«Ґ¬Ґв - (REM n
m). …б«Ё <m> (в.Ґ. ¤Ґ«ЁвҐ«м) а ўҐ г«о, ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї®
®иЁЎЄҐ "„Ґ«ҐЁҐ ®«м".
‚ ⮬ б«гз Ґ, Є®Ј¤ вॡговбп гбҐзҐлҐ здб⮥ Ё ®бв в®Є
®¤®ўаҐ¬Ґ®, ўлЈ®¤ҐҐ ЁбЇ®«м§®ў вм дгЄжЁо DIVIDE, 祬 ўлзЁб«пвм
Ёе ®в¤Ґ«м®.
ЏаЁ¬Ґа:
(DEFINE DIVIDE (N M)
((AND (NUMBERP N) (NUMBERP M))
((ZEROP M)
(BREAK (LIST 'DIVIDE N M) '"Zero Divide") )
(CONS (TRUNCATE N M) (REM N M)) )
(BREAK (LIST 'DIVIDE N M) '"Nonnumeric Argument")
(DIVIDE 7 3) --> (2 . 1)
(DIVIDE -7 3) --> (-2 . -1)
(DIVIDE 7 -3) --> (-2 . 1)
(DIVIDE -7 -3) --> (2 . -1)
Џ®ЎЁв®ўлҐ «®ЈЁзҐбЄЁҐ дгЄжЁЁ, а бб¬ ваЁў Ґ¬лҐ ў ¤ ®¬
а §¤Ґ«Ґ, а Ў®в ов в®«мЄ® б 楫묨 зЁб« ¬Ё. …б«Ё ®Ё ўл§лў овбп б
ҐжҐ«л¬Ё аЈг¬Ґв ¬Ё, ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї® ®иЁЎЄҐ "ЌҐжҐ«л©
аЈг¬Ґв".
LOGAND [n1,n2,...,nM] Function
(LOGAND n1 n2 ... nM) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп
Ї®ЎЁв®ў®Ј® «®ЈЁзҐбЄ®Ј® "€" ¤ 楫묨 зЁб« ¬Ё <n1>, ..., <nM>.
…б«Ё LOGAND ўл§лў Ґвбп ЎҐ§ аЈг¬Ґв®ў, дгЄжЁп ўл¤ Ґв "-1" -
Ё¤ҐвЁдЁЄ в®а ¤ ®© ®ЇҐа жЁЁ.
ЏаЁ¬Ґа:
(DEFUN LOGAND LST
((NULL LST) -1)
((NULL (CDR LST))
(CAR LST) )
((AND (INTEGERP (CAR LST)) (INTEGERP (CADR LST)))
(APPLY 'LOGAND (CONS (the bitwise logical
and of (CAR LST) and (CADR LST))
(CDDR LST)) )
(APPLY 'LOGAND
(CONS (BREAK (LIST 'LOGAND (CAR LST) (CADR LST))
'"Noninteger Argument" )
(CDDR LST))) )
(LOGAND 11 6) --> 2
LOGIOR [n1,n2,...,nM] Function
(LOGIOR n1 n2 ... nM) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп
Ї®ЎЁв®ў®Ј® «®ЈЁзҐбЄ®Ј® "€‹€" ¤ 楫묨 зЁб« ¬Ё <n1>, <n2>, ...,
<nM>. …б«Ё LOGIOR ўл§лў Ґвбп ЎҐ§ аЈг¬Ґв®ў, дгЄжЁп ўл¤ Ґв 0 -
Ё¤ҐвЁдЁЄ в®а ¤ ®© дгЄжЁЁ.
ЏаЁ¬Ґа:
(DEFUN LOGIOR LST
((NULL LST) 0)
((NULL (CDR LST))
(CAR LST) )
((AND (INTEGERP (CAR LST)) (INTEGERP (CADR LST)))
(APPLY 'LOGIOR (CONS (the bitwise logical inclusive
or of (CAR LST) and (CADR LST))
(CDDR LST)) )
(APPLY 'LOGIOR
(CONS (BREAK (LIST 'LOGIOR (CAR LST) (CADR LST))
'"Noninteger Argument" )
(CDDR LST))) )
(LOGIOR 11 6) --> 15
LOGXOR [n1,n2,...,nM] Function
(LOGXOR n1 n2 ... nM) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп
Ї®ЎЁв®ў®Ј® «®ЈЁзҐбЄ®Ј® ЁбЄ«оз о饣® "€‹€" (XOR) ¤ 楫묨
зЁб« ¬Ё <n1>, ..., <nM>. …б«Ё LOGXOR ўл§лў Ґвбп ЎҐ§ аЈг¬Ґв®ў,
дгЄжЁп ў®§ўа й Ґв 0 - Ё¤ҐвЁдЁЄ в®а ¤ ®© дгЄжЁЁ.
ЏаЁ¬Ґа:
(DEFUN LOGXOR LST
((NULL LST) 0)
((NULL (CDR LST))
(CAR LST) )
((AND (INTEGERP (CAR LST)) (INTEGERP (CADR LST)))
(APPLY 'LOGXOR (CONS (the bitwise logical exclusive
or of (CAR LST) and (CADR LST))
(CDDR LST)) )
(APPLY 'LOGXOR
(CONS (BREAK (LIST 'LOGXOR (CAR LST) (CADR LST))
'"Noninteger Argument" )
(CDDR LST))) )
(LOGXOR 11 6) --> 13
LOGNOT [n] Function
(LOGNOT n) ў®§ўа й Ґв १г«мв в ўлЇ®«ҐЁп Ї®ЎЁв®ў®Ј®
«®ЈЁзҐбЄ®Ј® "Ќ…" ¤ <n>.
ЏаЁ¬Ґа:
(DEFUN LOGNOT (N)
((INTEGERP N)
(complement every bit in N) )
(BREAK (LIST 'LOGNOT N) '"Noninteger Argument") )
(LOGNOT 9) --> 65526
SHIFT [n,m] Function
…б«Ё <m> - Ї®«®¦ЁвҐ«м®Ґ, (SHIFT n m) ў®§ўа й Ґв १г«мв в
б¤ўЁЈ <n> ў«Ґў® <m> ЎЁв®ў. …б«Ё <m> - ®ваЁж ⥫쮥, <n>
б¤ўЁЈ Ґвбп ўЇа ў® -<m> ЎЁв®ў.
ЏаЁ¬Ґа:
(DEFUN SHIFT (N M)
((AND (INTEGERP N) (INTEGERP M))
((ZEROP M) N)
((PLUSP M)
((SHIFT (* N 2) (SUB1 M)) )
(SHIFT (TRUNCATE N 2) (SUB1 M)) )
(BREAK (LIST 'SHIFT N M) '"Noninteger Argument" )
(SHIFT 5 2) --> 20
(SHIFT 5 -2) --> 1
BITLENGTH [n] Function
(BITLENGTH n) ў®§ўа й Ґв Є®«ЁзҐбвў® ЎЁв®ў, вॡ㥬®Ґ ¤«п
а §¬ҐйҐЁп <n>.
ЏаЁ¬Ґа:
(DEFUN BITLENGTH (N)
((INTEGERP N)
((ZEROP N) 0)
(ADD1 (BITLENGTH (SHIFT N -1))) )
(BREAK (LIST 'BITLENGTH N) '"Noninteger Argument") )
(BITLENGTH 4) --> 3
(BITLENGTH 7) --> 3
(BITLENGTH 8) --> 4
5.13. Ќ з «млҐ ўла ¦ҐЁп ¤«п ўў®¤
”гЄжЁЁ ўў®¤ , ЇҐаҐ¬ҐлҐ Є®ва®«п Ё бЁ¬ў®«млҐ ¬ Єа®бл ¤ ов
ў®§¬®¦®бвм Їа®Ја ¬¬ ¬, ЇЁб л¬ muLISP, бзЁвлў вм Ё
ЁвҐаЇаҐвЁа®ў вм ¤ лҐ Ё§ ⥪г饣® ўе®¤®Ј® Ёбв®зЁЄ (CIS).
”гЄжЁЁ ўе®¤®Ј® Ёбв®зЁЄ Ёбб«Ґ¤гов CIS Ё «б ў«Ёў ов
гЄ § ⥫Ё з⥨п д ©«л.
”гЄжЁЁ ўў®¤ бзЁвлў :в ¤ лҐ Ё§ CIS.
ЏҐаҐ¬ҐлҐ гЇа ў«ҐЁп ўў®¤®¬ гЇа ў«пов а §«Ёзл¬Ё ®ЇжЁп¬Ё
ўў®¤ .
‘Ё¬ў®«млҐ ¬ Єа®бл ўў®¤ ®бгйҐбвў«пов Ја ¬¬ вЁзҐбЄЁ© а §Ў®а
бў®©бвў дгЄжЁ©, Є Є в®«мЄ® дгЄжЁп ўбваҐз Ґв бЁ¬ўа« ¬ Єа®.
5.13.1. ”гЄжЁЁ ўе®¤®Ј® Ёбв®зЁЄ
”гЄжЁЁ ўе®¤®Ј® Ёбв®зЁЄ ®вЎЁа ов Ёд®а¬ жЁо, Ё¬Ґойго
®в®иҐЁҐ Є Ёбв®зЁЄг ўў®¤ Ёд®а¬ жЁЁ дгЄжЁп¬Ё ўў®¤ . CIS ¬®¦Ґв
б®§¤ ў вмбп «ЁЎ® б Є®б®«Ё, «ЁЎ® Ё§ ⥪г饣® ўе®¤®Ј® д ©«
(CIF). •®вп ®ЇаҐ¤Ґ«ҐлҐ вЁЇл д ©«®ў ¬®Јгв Ўлвм ®вЄалвл ¤«п
ўў®¤ , в®«мЄ® ®¤Ё Ё§ ®вЄалвле ўе®¤ле д ©«®ў ¬®¦Ґв Ўлвм д ©«®¬
CIF ў Є ¦¤л© Є®ЄаҐвл© ¬®¬Ґв.
RDS [drive:name.type] Function
…б«Ё д ©« <гбва®©бвў®:Ё¬п.вЁЇ> 㦥 Ґ Ўл« а ҐҐ ®вЄалв ¤«п
ўў®¤ Ё (Ё«Ё) ўлў®¤ , (RDS гбва®©бвў®:Ё¬п.вЁЇ) ЁйҐв д ©«
<Ё¬п.вЁЇ> <гбва®©б⢥>. …б«Ё д ©« ©¤Ґ, RDS ¤Ґ« Ґв ҐЈ®
д ©«®¬ CIF, гбв ў«Ёў Ґв гЄ § ⥫м звҐЁп ў ®«м, ЇҐаҐ¬Ґ®©
гЇа ў«ҐЁп RDS ЇаЁбў Ёў Ґв § 票Ґ <гбва®©бвў®:Ё¬п.вЁЇ>. ќв®
¤Ґ« Ґв д ©« Є Є д ©«®¬ CIF, в Є Ё д ©«®¬ CIS. …б«Ё д ©« Ґ
©¤Ґ, RDS Ґ Ё§¬ҐпҐв CIF, ЇҐаҐ¬Ґго гЇа ў«ҐЁп RDS Ї®« Ј Ґв
а ў®© NIL; § CIS ЎҐаҐвбп Є®б®«м.
…б«Ё д ©« <гбва®©бвў®:Ё¬п.вЁЇ> 㦥 Ўл« ®вЄалв ¤«п ўў®¤ Ё
(Ё«Ё) ўлў®¤ , (RDS гбва®©бвў®:Ё¬п.вЁЇ) ¤Ґ« Ґв ҐЈ® д ©«®¬ CIF Ё
гбв ў«Ёў Ґв ЇҐаҐ¬Ґ®© гЇа ў«ҐЁп RDS § 票Ґ бЁ¬ў®«
<гбва®©бвў®:Ё¬п.вЁЇ>. ќв® ¤Ґ« Ґв д ©« Є Є д ©«®¬ CIF, в Є Ё CIS.
Ћв¬ҐвЁ¬, зв® ¤ п ®ЇҐа жЁп Ґ ®ЎҐбЇҐзЁў Ґв ¤®бвгЇ Є ¤ЁбЄг Ё
зв® гЄ § ⥫м з⥨п д ©« Ґ Ё§¬ҐпҐвбп.
…б«Ё <вЁЇ> ®вбгвбвўгҐв, RDS ЇаЁбў Ёў Ґв вЁЇг д ©« Ё¬п
"LSP". …б«Ё ®вбгвбвўгҐв <гбва®©бвў®:>, RDS ўлЇ®«пҐв ¤Ґ©бвўЁп,
®ЇЁб лҐ ўлиҐ, § ЁбЄ«о票Ґ¬ в®Ј®, зв® д ©« ®вЄалў Ґвбп
гбва®©б⢥, § ¤ ®¬ ў ¤ л© ¬®¬Ґв Ї® 㬮«з Ёо.
…б«Ё Ё¬ҐҐвбп ЄвЁўл© CIF, ўл§®ў (RDS) § Єалў Ґв CIF ¤«п
ўў®¤ (® Ґ ¤«п ўлў®¤ , Ґб«Ё Є ЄЁҐ-«ЁЎ® д ©«л ҐйҐ ®вЄалвл
ўлў®¤), в.Ґ. ЄвЁў®Ј® CIF Ґв, Ё гбв ў«Ёў Ґв ЇҐаҐ¬Ґго RDS ў
NIL; § CIS ЇаЁЁ¬ Ґвбп Є®б®«м.
ЏаЁ¬Ґа:
(DEFUN RDS (DRIVE:NAME.TYPE)
((NULL DRIVE:NAME.TYPE)
(if there is an active CIF, close the file for input)
(SETQ RDS NIL) )
((SYMBOLP DRIVE:NAME.TYPE)
((if the file DRIVE:NAME.TYPE is already open)
(make DRIVE:NAME.TYPE the active CIF)
(SETQ RDS DRIVE:NAME.TYPE) )
((if the file DRIVE:NAME.TYPE exists)
(open DRIVE:NAME.TYPE for input)
(make DRIVE:NAME.TYPE the active CIF)
(zero the file's read pointer)
(SETQ RDS DRIVE:NAME.TYPE) )
(SETQ RDS NIL) )
(SETQ RDS NIL) )
(RDS 'D:ANIMAL) --> D:ANIMAL ; Makes D:ANIMAL.LSP the CIS
RDS: NIL Control variable
ЋЎлз® дгЄжЁп RDS ®бгйҐбвў«пҐв Є®ва®«м Ёбв®зЁЄ ¤«п ўў®¤
н«Ґ¬Ґв®ў ў Їа®Ја ¬¬л muLISP. Ћ¤ Є®, Ї®б«Ґ бзЁвлў Ёп з бвЁ
д ©« ¬®¦Ґв ў®§ЁЄгвм Ґ®Ўе®¤Ё¬®бвм ўаҐ¬Ґ® ЇҐаҐЄ«озЁвмбп
ўў®¤ б Є®б®«Ё, ЇаҐаў ў з⥨Ґ д ©« . ’ Єго ў®§¬®¦®бвм
®ЎҐбЇҐзЁў Ґв Є®ва®«м п ЇҐаҐ¬Ґ п RDS.
Џ®б«Ґ ЁбЇ®«м§®ў Ёп дгЄжЁЁ RDS ¤«п ®вЄалвЁп д ©« Ё
гбв ®ўЄЁ ҐЈ® ў Є зҐб⢥ CIF, Є®б®«м ¬Ґ¦Ґв бв вм CIS ЎҐ§
Ё§¬ҐҐЁп CIF Ї®б।бвў®¬ ЇаЁбў Ёў Ёп Є®ва®«м®© ЇҐаҐ¬Ґ®© RDS
§ 票п NIL. Џ®б«Ґ¤го饥 § 票Ґ RDS, ®в«Ёз®Ґ ®в NIL, ®Їпвм
ᤥ« Ґв CIF CIS-®¬, Ё з⥨Ґ д ©« ў®§ўЎ®ўЁвбп б в®Ј® ¬Ґбв ,
Є®в®а®¬ ®® Ўл«® ЇаЁ®бв ®ў«Ґ®.
INPUTFILE [drive:name.type] Function
(INPUTFILE) ў®§ўа й Ґв Ё¬п CIF ў ўЁ¤Ґ бЁ¬ў®« ў д®а¬Ґ
"гбва®©бвў®:Ё¬п.вЁЇ".
…б«Ё <гбва®©бвў®:Ё¬п.вЁЇ> - ®вЄалвл© ўе®¤®© д ©«,
(INPUTFILE гбва®©бвў®:Ё¬п.вЁЇ) ў®§ўа й Ґв ’, ў Їа®вЁў®¬ б«гз Ґ
ў®§ўа й Ґвбп NIL. …б«Ё <.вЁЇ> ®вбгвбвўгҐв, в® вЁЇ д ©«
Ї®« Ј Ґвбп а ўл¬ "LSP". …б«Ё ®вбгвбвўгҐв <гбва®©бвў®:>, в®
ЎҐаҐвбп ⥪г饥 § ॣЁбваЁа®ў ®Ґ (logged) гбва®©бвў®.
OPRNFILES [ ] Function
(OPENFILES) ў®§ўа й Ґв бЇЁб®Є Ё¬Ґ ®вЄалвле ў бв®пйЁ©
¬®¬Ґв ўе®¤ле Ё ўл室ле д ©«®ў. Љ ¦¤®Ґ Ё¬п пў«пҐвбп бЁ¬ў®«®¬ ў
д®а¬Ґ "гбва®©бвў®:Ё¬п.вЁЇ".
READPTR [integer] Function
…б«Ё <楫®Ґ зЁб«®> Ґбвм ®«м Ё«Ё Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ,
(READPTR 楫.зЁб«®) гбв ў«Ёў Ґв гЄ § ⥫о з⥨п CIF § 票Ґ
<楫.зЁб« > Ё ў®§ўа й Ґв ЇаҐ¤л¤г饥 § 票Ґ гЄ § ⥫п. …б«Ё
<楫.зЁб«®> - Ё ®«м, Ё Ї®«®¦ЁвҐ«м®Ґ 楫®Ґ, (READPTR
楫.зЁб«®) ў®§ўа й Ґв ⥪г饥 § 票Ґ гЄ § ⥫п з⥨п CIF.
(READPTR 'EOF) ў®§ўа й Ґв а §¬Ґа д ©« CIF ў Ў ©в е. …б«Ё д ©«
CIF Ґв, в® READPTR ў®§ўа й Ґв NIL.
“Є § ⥫м з⥨п д ©« ®ЇаҐ¤Ґ«пҐв в® ¬Ґбв® ў д ©«Ґ, ®вЄг¤
Ўг¤Ґв бзЁвлў вмбп б«Ґ¤гойЁ© н«Ґ¬Ґв. Љ®Ј¤ RDS ®вЄалў Ґв д ©« ¤«п
ўў®¤ , гЄ § ⥫м з⥨п д ©« гбв ў«Ёў Ґвбп ў 0. Љ®Ј¤ н«Ґ¬Ґв
Ё§ д ©« бзЁв , гЄ § ⥫м з⥨п д ©« ўв®¬ вЁзҐбЄЁ
㢥«ЁзЁў Ґвбп. Ћв¬ҐвЁ¬, зв® READPRT а Ў®в Ґв б CIF, ® Ґ б CIS,
Ї®н⮬㠥®Ўе®¤Ё¬®, зв®Ўл ў Є зҐб⢥ CIS ўлбвгЇ « Є®б®«м.
ЏаЁ¬Ґа:
(DEFUN READPTR (N)
((if there is no active CIF) NIL)
((EQ N'EOF)
(return the file size in bytes) )
((AND (INTEGERP N) (>= N 0))
(set the CIF read pointer to N)
(return the CIF's previous read pointer) )
(return the CIF's current read pointer) )
•®а®иЁ¬ ЇаЁ¬Ґа®¬ ЁбЇ®«м§®ў Ёп READPTR пў«пҐвбп бЁб⥬
®Ўг票п muLISP. „ п бЁб⥬ бзЁвлў Ґв Ё ўл¤ Ґв нЄа
⥪бвл га®Є®ў, ЁбЇ®«м§гп дгЄжЁо READFILE. ’.Є. бЁб⥬
®ЎҐбЇҐзЁў Ґв ў®§¬®¦®бвм Їа®б¬®ва ЇаҐ¤л¤г饣® нЄа , READFILE
"Їа®в «ЄЁў Ґв" гЄ § ⥫Ё з⥨п, ®в¬Ґз ойЁҐ Є ¦¤л© нЄа , ў б⥪
PRTLST. …б«Ё ®Ўгз ойЁ©бп е®зҐв Ї®б¬®ваҐвм ЇаҐ¤л¤гйЁ© нЄа ,
®бгйҐбвў«пҐвбп ўл§®ў
(READPTR (POP PRTLST))
Ё гЄ § ⥫м з⥨п б¤ўЁЈ Ґвбп § ¤ Є з «г нЄа , зв®
Ї®§ў®«пҐв бзЁв вм Ё ўлᢥвЁвм ҐЈ® ҐйҐ а §.
5.13.2. ”гЄжЁЁ ўў®¤ .
”гЄжЁЁ ўў®¤ ®бгйҐбвў«пов бзЁвлў ЁҐ CIS Ё ў®§ўа в ўў®¤
CIS. …б«Ё д ©« Ґбвм CIS Ё Ґб«Ё ®бгйҐбвў«пҐвбп Ї®ЇлвЄ бзЁвлў вм
¤ лҐ § ЇаҐ¤Ґ« ¬Ё д ©« , ў®§ЁЄ Ґв ЇаҐалў ЁҐ Ї® ®йЁЎЄҐ "Љ®Ґж
д ©« " ("End-of-file").
READ-CHAR [peek-flag] Function
(READ-CHAR) бзЁвлў Ґв б«Ґ¤гойЁ© н«Ґ¬Ґв Ё§ CIS Ё ў®§ўа й Ґв
бЁ¬ў®«, г Є®в®а®Ј® print-Ё¬п б®бв®Ёв Ё§ нв®Ј® бЁ¬ў®« . „«п
㤮Ўбвў Їа®Ја ¬¬Ёа®ў Ёп бЁ¬ў®«, ў®§ўа й Ґ¬л© дгЄжЁҐ©
READ-CHAR, Єа®¬Ґ в®Ј®, ЇаЁбў Ёў Ґвбп ЇҐаҐ¬Ґ®© RATOM. Ћв¬ҐвЁ¬,
зв® READ-CHAR ўбҐЈ¤ ў®§ўа й Ґв бЁ¬ў®« ¤ ¦Ґ Ґб«Ё бзЁв л©
н«Ґ¬Ґв Ґбвм ¤ҐбпвЁз®Ґ зЁб«®.
…б«Ё <peek-flag> Ґ а ўҐ NIL, (READ-CHAR peek-flag) в Є ¦Ґ
бзЁвлў Ґв ®¤Ё н«Ґ¬Ґв, ў®§ўа й п ᮮ⢥вбвўгойЁ© бЁ¬ў®«, Ё
ЇаЁбў Ёў Ґв ҐЈ® ЇҐаҐ¬Ґ®© RATOM. Ћ¤ Є®, н«Ґ¬Ґв, бзЁвлў Ґ¬л©
дгЄжЁҐ© READ-CHAR, ®бв Ґвбп ў ўҐаегиЄҐ ўе®¤®Ј® Ї®в®Є , Є®в®ал©
ЁбЇ®«м§гҐвбп дгЄжЁп¬Ё READ Ё RATOM (® Ґ дгЄжЁҐ© READ-CHAR).
ќв® ¤ Ґв ў®§¬®¦®бвм ЁбЇ®«м§®ў вм READ-CHAR ¤«п в®Ј®, зв®Ўл
"§ Ј«п¤лў вм ўЇҐаҐ¤" § ®¤Ё н«Ґ¬Ґв, Ё § ⥬ ЁбЇ®«м§®ў вм READ
Ё«Ё RATOM ¤«п бзЁвлў Ёп нв®Ј® н«Ґ¬Ґв Є Є з бвЁ б«Ґ¤го饣®
ўе®¤®Ј® Ї®в®Є .
ЏаЁ¬Ґа:
(DEFUN READ-CHAR (FLAG)
((a file is CIS and the end-of-file has been reached)
((BREAK (INPUTFILE) "End-of-file") )
(read the next character from the CIS)
(SETQ RATOM (the symbol whose print name is that
character))
((NULL FLAG) RATOM)
(store the character in the function RATOM's input buffer)
RATOM )
UNREAD-CHAR [ ] Function
(UNREAD-CHAR) ў®ббв ў«Ёў Ґв Ї®б«Ґ¤Ё© н«Ґ¬Ґв, бзЁв л©
Ё§ CIS, ў ўҐаегиЄҐ CIS Ё ў®§ўа й Ґв NIL. ’.Є. ¬®¦Ґв Ўлвм
ў®ббв ®ў«Ґ в®«мЄ® Ї®б«Ґ¤Ё© бзЁв л© н«Ґ¬Ґв, ўл§®ў дгЄжЁЁ
Ї®ўв®а® ЎҐ§ ўлЇ®«ҐЁп ®ЇҐа жЁЁ бзЁвлў Ёп Ґ Ўг¤Ґв Ё¬Ґвм
१г«мв в .
ЏаЁ¬Ґа:
(DEFUN UNREAD-CHAR ()
(restore the last character read from the CIS to the head
of the input stream)
NIL )
$ (PROG1 (READ-CHAR) (UNREAD-CHAR))COMPUTER
C
$ COMPUTER
PEEK-CHAR [flag] Function
(PEEK-CHAR) бзЁвлў Ґв б«Ґ¤гойЁ© н«Ґ¬Ґв Ё§ CIS. (PEEK-CHAR T)
бзЁвлў Ґв н«Ґ¬Ґвл Ё§ ¤® вҐе Ї®а, Ї®Є ўбваҐз Ґвбп ҐЇгбв®©
н«Ґ¬Ґв. …б«Ё <н«Ґ¬Ґв> - бЁ¬ў®«, (PEEK-CHAR н«Ґ¬Ґв) бзЁвлў Ґв
н«Ґ¬Ґвл Ё§ CIS ¤® вҐе Ї®а, Ї®Є Ґ ўбваҐвЁвбп н«Ґ¬Ґв, а ўл©
ЇҐаў®¬г бЁ¬ў®«г ў ђ-Ё¬ҐЁ <н«Ґ¬Ґв >.
‚® ўбҐе б«гз пе, PEEK-CHAR ў®ббв ў«Ёў Ґв Ї®б«Ґ¤Ё©
бзЁв л© Ё§ CIS н«Ґ¬Ґв ў ўҐаегиЄҐ CIS Ё ў®§ўа й Ґв бЁ¬ў®«, г
Є®в®а®Ј® ђ-Ё¬п б®бв®Ёв Ё§ нв®Ј® н«Ґ¬Ґв . „«п 㤮Ўбвў
Їа®Ја ¬¬Ёа®ў Ёп бЁ¬ў®«, ўл¤ ў Ґ¬л© PEEK-CHAR, Єа®¬Ґ в®Ј®,
ЇаЁбў Ёў Ґвбп ЇҐаҐ¬Ґ®© RATOM. PEEK-CHAR ўбҐЈ¤ ў®§ўа й Ґв
бЁ¬ў®«, ¤ ¦Ґ Ґб«Ё Ї®б«Ґ¤Ё© н«Ґ¬Ґв - зЁб«®.
ЏаЁ¬Ґа:
(DEFUN PEEK-CHAR (FLAG)
( ((NULL FLAG)
(READ-CHAR) )
((EQ FLAG 'T)
(LOOP
((non-whitespace character (READ-CHAR))) ) )
(LOOP
((EQ (READ-CHAR) (CHAR FLAG 0))) ) )
(UNREAD-CHAR)
RATOM )
$ (PEEK-CHAR)COMPUTER
C
$ COMPUTER
$ (PEEK-CHAR T) COMPUTER
C
$ COMPUTER
$ (PEEK-CHAR 'M) COMPUTER
M
$ MPUTER
CLEAR-INPUT [ ] Function
…б«Ё § CIS ЎҐаҐвбп Є®б®«м, Ё ўў®¤ б Є®б®«Ё ®бгйҐбвў«пҐвбп
¬Ґв®¤®¬ «ЁҐ©®Ј® । ЄвЁа®ў Ёп, (CLEAR-INPUT) зЁбвЁв ЎгдҐа
«ЁҐ©®Ј® । ЄвЁа®ў Ёп. …б«Ё Є®б®«м пў«пҐвбп CIS-®¬ Ё ўў®¤ б
Є®б®«Ё ®бгйҐбвў«пҐвбп ¬Ґв®¤®¬ ЇаЁ¬ЁвЁў®Ј® (ЈагЎ®Ј®) ўў®¤ ,
CLEAR-INPUT зЁбвЁв ЎгдҐа ЇаЁ¬ЁвЁў®Ј® (ЈагЎ®Ј®) ўў®¤ (б¬. а §¤Ґ«
5.13.3, Ј¤Ґ а бб¬ ваЁў овбп ¬Ґв®¤л «ЁҐ©®Ј® । ЄвЁа®ў Ёп Ё
ЇаЁ¬ЁвЁў®Ј® ўў®¤ ).
‚ «оЎ®¬ б«гз Ґ, CLEAR-INPUT ў®§ўа й Ґв NIL.
ЏаЁ¬Ґа:
(DEFUN CLEAR-INPUT ()
((NULL RDS)
(clear the console input buffer)
NIL ) )
$ (PROG1 (READ-CHAR) (CLEAR-INPUT))COMPUTER
C
READ-LINE [ ] FUnction
(READ-LINE) бзЁвлў Ґв н«Ґ¬Ґвл Ё§ CIS ¤® вҐе Ї®а, Ї®Є Ґ
ўбваҐвЁвбп <return>, Ё ў®§ўа й Ґв бЁ¬ў®« , г Є®в®а®Ј® ђ-Ё¬п
б®бв®Ёв Ё§ ўбҐе бзЁв ле н«Ґ¬Ґв®ў, Єа®¬Ґ <return>. READ-LINE
ў®§ўа й Ґв бва®Єг, в®з® в Єго ¦Ґ, Є Є ® Ґбвм, Ґ ®вЎа блў п
ЇгбвлҐ ¬Ґбв Ё«Ё Є®¬¬Ґв аЁЁ.
ЏаЁ¬Ґа:
(DEFUN READ-LINE ()
(read characters from the CIS until <return> is read)
(return the symbol whose print name consists of the
characters read) )
$ (READ-LINE) (A B C
(A B C
LISTEN [] Function
…б«Ё CIS ᮤҐа¦Ёв н«Ґ¬Ґвл, «®бвгЇлҐ ¤«п ўў®¤ , (LISTEN)
ў®§ўа й Ґв ’, ў Їа®вЁў®¬ б«гз Ґ - NIL.
LISTEN ЁбЇ®«м§гҐвбп ¤«п ®ЇаҐ¤Ґ«ҐЁп б®бв®пЁп Ј®в®ў®бвЁ ¤«п
н«Ґ¬Ґв®ў CIS. …б«Ё CIS - нв® Є®б®«м, ¤ п дгЄжЁп ¬®¦Ґв
ЁбЇ®«м§®ў вмбп ¤«п Їа®ўҐаЄЁ, пў«пҐвбп «Ё н«Ґ¬Ґв ¤®бвгЇл¬ ¤«п
Ї®«м§®ў ⥫п. …б«Ё CIS - нв® Ёбе®¤л© д ©«, ¤ п дгЄжЁп ¬®¦Ґв
ЁбЇ®«м§®ў вмбп ¤«п Їа®ўҐаЄЁ, ¤®бвЁЈгв «Ё Є®Ґж д ©« .
ЏаЁ¬Ґа:
(DEFUN LISTEN ()
((if the CIS has a character available for input) T)
NIL )