368 86 3MB
Russian Pages 323
ßçûê è áèáëèîòåêè ❍❛s❦❡❧❧ ✾✽ ➮ñïðàâëåííîå îïèñàíèå
Ñàéìîí Ïåéòîí ➘æîíñ ✭ðåäàêòîð✮
Óâåäîìëåíèå îá àâòîðñêîì ïðàâå✳
➚âòîðû
è
èçäàòåëü
ïîäðàçóìåâàþò✱
÷òî
ýòî
✏❰ïèñàíèå✑
ïðèíàäëåæèò
âñåìó
ñîîáùåñòâó ❍❛s❦❡❧❧✱ è äàþò ðàçðåøåíèå êîïèðîâàòü è ðàñïðîñòðàíÿòü åãî ñ ëþáîé öåëüþ✱
ïðè
óâåäîìëåíèå✳
óñëîâèè✱
÷òî
➮çìåíåííûå
îíî
áóäåò
âåðñèè
ýòîãî
âîñïðîèçâåäåíî ✏❰ïèñàíèÿ✑
ïîëíîñòüþ✱
ìîæíî
òàêæå
âêëþ÷àÿ
ýòî
êîïèðîâàòü
è
ðàñïðîñòðàíÿòü ñ ëþáîé öåëüþ✱ ïðè óñëîâèè✱ ÷òî èçìåíåííàÿ âåðñèÿ ÿñíî ïðåäñòàâëåíà êàê òàêîâàÿ è íå ïðåòåíäóåò íà òî✱ ÷òîáû ÿâëÿòüñÿ îïðåäåëåíèåì ÿçûêà ❍❛s❦❡❧❧ ✾✽✳
❰ãëàâëåíèå ■
ßçûê ❍❛s❦❡❧❧ ✾✽
✶
✶ ➶âåäåíèå
✸
✶✳✶
Ñòðóêòóðà ïðîãðàììû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✶✳✷
ßäðî ❍❛s❦❡❧❧
✸
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹
✶✳✸
➬íà÷åíèÿ è òèïû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✺
✶✳✹
Ïðîñòðàíñòâà èìåí
✺
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✷ ❐åêñè÷åñêàÿ ñòðóêòóðà
✼
✷✳✶
Ñîãëàøåíèÿ îá îáîçíà÷åíèÿõ
✷✳✷
❐åêñè÷åñêàÿ ñòðóêòóðà ïðîãðàììû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽
✷✳✸
✃îììåíòàðèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✶✶
✷✳✹
➮äåíòèôèêàòîðû è îïåðàòîðû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✶✷
✷✳✺
×èñëîâûå ëèòåðàëû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✶✺
✷✳✻
Ñèìâîëüíûå è ñòðîêîâûå ëèòåðàëû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✶✼
✷✳✼
Ðàçìåùåíèå ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✶✽
✸ ➶ûðàæåíèÿ
✼
✷✶
✸✳✶
❰øèáêè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✷✺
✸✳✷
Ïåðåìåííûå✱ êîíñòðóêòîðû✱ îïåðàòîðû è ëèòåðàëû
✸✳✸
Ïðîèçâîäíûå ôóíêöèè è ëÿìáäà✲àáñòðàêöèè
✸✳✹
Ïðèìåíåíèå îïåðàòîðîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✷✾
✸✳✺
Ñå÷åíèÿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✵
✸✳✻
Óñëîâíûå âûðàæåíèÿ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✶
✸✳✼
Ñïèñêè
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✷
✸✳✽
✃îðòåæè
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✸
✸✳✾
➴äèíè÷íûå âûðàæåíèÿ è âûðàæåíèÿ â ñêîáêàõ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✹
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✷✺
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✷✽
✸✳✶✵ ➚ðèôìåòè÷åñêèå ïîñëåäîâàòåëüíîñòè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✹
✸✳✶✶ ❰ïèñàíèå ñïèñêà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✺
✸✳✶✷ ▲❡t✲âûðàæåíèÿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✻
✸✳✶✸ ❈❛s❡✲âûðàæåíèÿ ✸✳✶✹ ❉♦✲âûðàæåíèÿ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✼
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✸✾
✸✳✶✺ Òèïû äàííûõ ñ èìåíîâàííûìè ïîëÿìè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✵
✸✳✶✺✳✶
➮çâëå÷åíèå ïîëåé
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✶
✸✳✶✺✳✷
Ñîçäàíèå òèïîâ äàííûõ ñ èñïîëüçîâàíèåì èìåí ïîëåé ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✶
✸✳✶✺✳✸
❰áíîâëåíèÿ ñ èñïîëüçîâàíèåì èìåí ïîëåé ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✷
✐
❰➹❐➚➶❐➴❮➮➴
✐✐
✸✳✶✻ Ñèãíàòóðû òèïîâ âûðàæåíèé ✸✳✶✼ Ñîïîñòàâëåíèå ñ îáðàçöîì
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✹
✸✳✶✼✳✶
❰áðàçöû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✹
✸✳✶✼✳✷
❮åôîðìàëüíàÿ ñåìàíòèêà ñîïîñòàâëåíèÿ ñ îáðàçöîì ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹✼
✸✳✶✼✳✸
Ôîðìàëüíàÿ ñåìàíòèêà ñîïîñòàâëåíèÿ ñ îáðàçöîì
✺✵
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✹ ❰áúÿâëåíèÿ è ñâÿçûâàíèÿ èìåí ✹✳✶
✹✳✷
✹✳✸
✹✳✹
✹✳✺
✹✳✻
✹✹
❰áçîð òèïîâ è êëàññîâ
✺✸
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✺✻
✹✳✶✳✶
➶èäû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✺✼
✹✳✶✳✷
Ñèíòàêñèñ òèïîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✺✼
✹✳✶✳✸
Ñèíòàêñèñ óòâåðæäåíèé êëàññîâ è êîíòåêñòîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✵
✹✳✶✳✹
Ñåìàíòèêà òèïîâ è êëàññîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✶
Òèïû äàííûõ✱ îïðåäåëÿåìûå ïîëüçîâàòåëåì ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✷
✹✳✷✳✶
❰áúÿâëåíèÿ àëãåáðàè÷åñêèõ òèïîâ äàííûõ
✹✳✷✳✷
❰áúÿâëåíèå ñèíîíèìîâ òèïîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✷
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✻
✹✳✷✳✸
Ïåðåèìåíîâàíèÿ òèïîâ äàííûõ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✼
✃ëàññû òèïîâ è ïåðåãðóçêà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✽
✹✳✸✳✶
❰áúÿâëåíèÿ êëàññîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✻✽
✹✳✸✳✷
❰áúÿâëåíèÿ ýêçåìïëÿðîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✼✵
✹✳✸✳✸
Ïðîèçâîäíûå ýêçåìïëÿðû
✼✸
✹✳✸✳✹
❮åîäíîçíà÷íûå òèïû è çíà÷åíèÿ ïî óìîë÷àíèþ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✼✹
➶ëîæåííûå îáúÿâëåíèÿ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✼✻
✹✳✹✳✶
Ñèãíàòóðû òèïîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✼✻
✹✳✹✳✷
■♥❢✐①✲îáúÿâëåíèÿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✼✼
✹✳✹✳✸
Ñâÿçûâàíèå èìåí â ôóíêöèÿõ è îáðàçöàõ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✼✾
✹✳✹✳✸✳✶
Ñâÿçûâàíèå èìåí â ôóíêöèÿõ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✵
✹✳✹✳✸✳✷
Ñâÿçûâàíèå èìåí â îáðàçöàõ
✽✶
Ñòàòè÷åñêàÿ ñåìàíòèêà ñâÿçûâàíèé èìåí
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✷
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✸
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✸
✹✳✺✳✶
➚íàëèç çàâèñèìîñòåé
✹✳✺✳✷
❰áîáùåíèå
✹✳✺✳✸
❰øèáêè ïðèâåäåíèÿ êîíòåêñòà
✹✳✺✳✹
❒îíîìîðôèçì
✹✳✺✳✺
❰ãðàíè÷åíèå ìîíîìîðôèçìà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✻
➶ûâîä âèäà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✾
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✹
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✽✺
✺ ❒îäóëè
✾✶
✺✳✶
Ñòðóêòóðà ìîäóëÿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✾✷
✺✳✷
Ñïèñêè ýêñïîðòà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✾✸
✺✳✸
❰áúÿâëåíèÿ èìïîðòà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✾✻
✺✳✸✳✶
×òî òàêîå èìïîðòèðîâàíèå ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✾✼
✺✳✸✳✷
➮ìïîðòèðîâàíèå ñ èñïîëüçîâàíèåì êâàëèôèêàòîðîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✾✽
✺✳✸✳✸
❐îêàëüíûå ñèíîíèìû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✾✾
✺✳✸✳✹
Ïðèìåðû
✾✾
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳
✺✳✹
➮ìïîðòèðîâàíèå è ýêñïîðòèðîâàíèå îáúÿâëåíèé ýêçåìïëÿðîâ
✺✳✺
✃îíôëèêò èìåí è çàìûêàíèå
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✵
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✶
❰➹❐➚➶❐➴❮➮➴
✺✳✻
✻
✃âàëèôèöèðîâàííûå èìåíà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✶
✺✳✺✳✷
✃îíôëèêòû èìåí
✺✳✺✳✸
➬àìûêàíèå ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✸
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✶
Ñòàíäàðòíîå íà÷àëî ✭Pr❡❧✉❞❡✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✹
Pr❡❧✉❞❡
✺✳✻✳✶
❒îäóëü
✺✳✻✳✷
Ñîêðûòèå èìåí èç Pr❡❧✉❞❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✺
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✹
Ðàçäåëüíàÿ êîìïèëÿöèÿ
✺✳✽
➚áñòðàêòíûå òèïû äàííûõ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✻
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✻
Ïðåäîïðåäåëåííûå òèïû è êëàññû
✶✵✼
Ñòàíäàðòíûå òèïû ❍❛s❦❡❧❧ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✼ ✻✳✶✳✶
➪óëåâñêèé òèï ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✼
✻✳✶✳✷
Ñèìâîëû è ñòðîêè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✼
✻✳✶✳✸
Ñïèñêè
✻✳✶✳✹
✃îðòåæè
✻✳✶✳✺
➴äèíè÷íûé òèï äàííûõ
✻✳✶✳✻
Òèïû ôóíêöèé ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✾
✻✳✶✳✼
Òèïû ■❖ è ■❖❊rr♦r
✻✳✶✳✽
➘ðóãèå òèïû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✾
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✽ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✽ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✾
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✾
✻✳✷
Ñòðîãîå âû÷èñëåíèå ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✵
✻✳✸
Ñòàíäàðòíûå êëàññû ❍❛s❦❡❧❧ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✶
✻✳✹
✽
✺✳✺✳✶
✺✳✼
✻✳✶
✼
✐✐✐
✻✳✸✳✶
✃ëàññ ❊q ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✶
✻✳✸✳✷
✃ëàññ ❖r❞
✻✳✸✳✸
✃ëàññû ❘❡❛❞ è ❙❤♦✇
✻✳✸✳✹
✃ëàññ ❊♥✉♠
✻✳✸✳✺
✃ëàññ ❋✉♥❝t♦r ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✼
✻✳✸✳✻
✃ëàññ ▼♦♥❛❞ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✼
✻✳✸✳✼
✃ëàññ ❇♦✉♥❞❡❞ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✽
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✸ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✹
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✺
×èñëà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✽ ✻✳✹✳✶
×èñëîâûå ëèòåðàëû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✾
✻✳✹✳✷
➚ðèôìåòè÷åñêèå è òåîðåòèêî✲÷èñëîâûå îïåðàöèè
✻✳✹✳✸
➶îçâåäåíèå â ñòåïåíü è ëîãàðèôìû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✶
✻✳✹✳✹
➚áñîëþíàÿ âåëè÷èíà è çíàê ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✷
✻✳✹✳✺
Òðèãîíîìåòðè÷åñêèå ôóíêöèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✸
✻✳✹✳✻
Ïðèâåäåíèå è èçâëå÷åíèå êîìïîíåíò ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✸
❰ñíîâíûå îïåðàöèè ââîäà ✲ âûâîäà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✵
✶✷✺
✼✳✶
Ñòàíäàðòíûå ôóíêöèè ââîäà ✲ âûâîäà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✺
✼✳✷
Ïîñëåäîâàòåëüíûå îïåðàöèè ââîäà ✲ âûâîäà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✼
✼✳✸
❰áðàáîòêà èñêëþ÷åíèé â ìîíàäå ââîäà ✲ âûâîäà
Ñòàíäàðòíîå íà÷àëî ✭Pr❡❧✉❞❡✮ ✽✳✶
Pr❡❧✉❞❡
✽✳✷
Pr❡❧✉❞❡
✽✳✸
Pr❡❧✉❞❡
Pr❡❧✉❞❡▲✐st Pr❡❧✉❞❡❚❡①t Pr❡❧✉❞❡■❖ ✳
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✷✽
✶✸✶
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✹✺ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✺✶ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✺✺
❰➹❐➚➶❐➴❮➮➴
✐✈
✾
Ñèíòàêñè÷åñêèé ñïðàâî÷íèê
✶✺✼
✾✳✶
Ñîãëàøåíèÿ îá îáîçíà÷åíèÿõ
✾✳✷
❐åêñè÷åñêèé ñèíòàêñèñ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✺✽
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✺✼
✾✳✸
Ðàçìåùåíèå ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✻✹
✾✳✹
➹ðàìîòíûå êîììåíòàðèè
✾✳✺
✃îíòåêñòíî✲ñâîáîäíûé ñèíòàêñèñ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✻✾ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✼✶
✶✵ Ñïåöèôèêàöèÿ ïðîèçâîäíûõ ýêçåìïëÿðîâ
❊q è ❖r❞ ✳ ✳ ❊♥✉♠ ✳ ✳ ✳ ✳ ✳ êëàññà ❇♦✉♥❞❡❞ ✳ ✳ ✳ êëàññîâ ❘❡❛❞ è ❙❤♦✇
✶✽✼
✶✵✳✶ Ïðîèçâîäíûå ýêçåìïëÿðû êëàññîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✽✽
✶✵✳✷ Ïðîèçâîäíûå ýêçåìïëÿðû êëàññà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✽✾
✶✵✳✸ Ïðîèçâîäíûå ýêçåìïëÿðû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✽✾
✶✵✳✹ Ïðîèçâîäíûå ýêçåìïëÿðû ✶✵✳✺ Ïðèìåð
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾✵
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾✷
✶✶ Óêàçàíèÿ êîìïèëÿòîðó ✭ïñåâäîêîììåíòàðèè✮ ✶✶✳✶ ➶ñòðàèâàíèå
✶✾✺
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾✺
✶✶✳✷ Ñïåöèàëèçàöèÿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾✻
■■
➪èáëèîòåêè ❍❛s❦❡❧❧ ✾✽
✶✾✼
✶✷ Ðàöèîíàëüíûå ÷èñëà ✶✷✳✶ ➪èáëèîòåêà
❘❛t✐♦
✶✾✾ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✵✶
✶✸ ✃îìïëåêñíûå ÷èñëà ✶✸✳✶ ➪èáëèîòåêà
❈♦♠♣❧❡①
✷✵✸ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✵✹
✶✹ ×èñëîâûå ôóíêöèè
✷✵✼
✶✹✳✶ Ôóíêöèè ïðåîáðàçîâàíèÿ âåëè÷èí â ñòðîêè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✵✽ ✶✹✳✷ Ôóíêöèè ïðåîáðàçîâàíèÿ ñòðîê â äðóãèå âåëè÷èíû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✵✾
✶✹✳✸ Ïðî÷èå ôóíêöèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✵✾
◆✉♠❡r✐❝
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✶✵
✶✺ ❰ïåðàöèè èíäåêñàöèè
✷✶✼
✶✹✳✹ ➪èáëèîòåêà
✶✺✳✶ ➶ûâåäåíèå ýêçåìïëÿðîâ ✶✺✳✷ ➪èáëèîòåêà
■①
■①
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✶✽
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✵
✶✻ ❒àññèâû
✷✷✶
✶✻✳✶ Ñîçäàíèå ìàññèâîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✷
✶✻✳✶✳✶ ❮àêîïëåííûå ìàññèâû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✸
✶✻✳✷ ➘îáàâî÷íûå îáíîâëåíèÿ ìàññèâîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✸ ✶✻✳✸ Ïðîèçâîäíûå ìàññèâû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✹ ✶✻✳✹ ➪èáëèîòåêà
❆rr❛②
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✹
❰➹❐➚➶❐➴❮➮➴
✈
✶✼ Óòèëèòû ðàáîòû ñî ñïèñêàìè ✶✼✳✶ ➮íäåêñèðîâàíèå ñïèñêîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✵
✶✼✳✷ ❰ïåðàöèè íàä ✏ìíîæåñòâàìè✑ ✶✼✳✸ Ïðåîáðàçîâàíèÿ ñïèñêîâ ✶✼✳✹
✉♥❢♦❧❞r
✷✷✼ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✵
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✶
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✷
✶✼✳✺ Ïðåäèêàòû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✷
✶✼✳✻ ✏ ❇②✑✲îïåðàöèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✷ ✶✼✳✼ ✏ ❣❡♥❡r✐❝✑✲îïåðàöèè
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✸
✶✼✳✽ ➘îïîëíèòåëüíûå ✏ ③✐♣✑✲îïåðàöèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✸
✶✼✳✾ ➪èáëèîòåêà
▲✐st
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✸✹
✶✽ Óòèëèòû ▼❛②❜❡ ✶✽✳✶ ➪èáëèîòåêà
▼❛②❜❡
✷✹✶ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✹✷
✶✾ Óòèëèòû ðàáîòû ñ ñèìâîëàìè ✶✾✳✶ ➪èáëèîòåêà
❈❤❛r
✷✹✸
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✹✺
✷✵ Óòèëèòû ðàáîòû ñ ìîíàäàìè ✷✵✳✶ Ñîãëàøåíèÿ îá èìåíàõ ✷✵✳✷ ✃ëàññ
▼♦♥❛❞P❧✉s
✷✵✳✸ Ôóíêöèè
✷✹✾
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺✵
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺✵
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺✶
✷✵✳✹ ➪èáëèîòåêà
▼♦♥❛❞
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺✸
✷✶ ➶âîä ✲ âûâîä
✷✺✺
✷✶✳✶ ❰øèáêè ââîäà ✲ âûâîäà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺✽ ✷✶✳✷ Ôàéëû è äåñêðèïòîðû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺✾
✷✶✳✷✳✶ Ñòàíäàðòíûå äåñêðèïòîðû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✵ ✷✶✳✷✳✷ Ïîëóçàêðûòûå äåñêðèïòîðû ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✵ ✷✶✳✷✳✸ ➪ëîêèðîâêà ôàéëîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✶ ✷✶✳✸ ❰òêðûòèå è çàêðûòèå ôàéëîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✶ ✷✶✳✸✳✶ ❰òêðûòèå ôàéëîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✶ ✷✶✳✸✳✷ ➬àêðûòèå ôàéëîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✷
✷✶✳✹ ❰ïðåäåëåíèå ðàçìåðà ôàéëà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✷ ✷✶✳✺ ❰áíàðóæåíèå êîíöà ââîäà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✷
✷✶✳✻ ❰ïåðàöèè áóôåðèçàöèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✷ ✷✶✳✻✳✶ Ñáðàñûâàíèå áóôåðîâ íà äèñê ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✹ ✷✶✳✼ Ïîçèöèîíèðîâàíèå äåñêðèïòîðîâ
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✹
✷✶✳✼✳✶ Ïîâòîðíîå èñïîëüçîâàíèå ïîçèöèè ââîäà ✲ âûâîäà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✹
✷✶✳✼✳✷ Óñòàíîâêà íîâîé ïîçèöèè ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✹ ✷✶✳✽ Ñâîéñòâà äåñêðèïòîðîâ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✺ ✷✶✳✾ ➶âîä è âûâîä òåêñòà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✺ ✷✶✳✾✳✶ Ïðîâåðêà ââîäà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✺
✷✶✳✾✳✷ ×òåíèå ââîäà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✺ ✷✶✳✾✳✸ Ñ÷èòûâàíèå âïåðåä ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✻ ✷✶✳✾✳✹ Ñ÷èòûâàíèå âñåãî ââîäà
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✻
✷✶✳✾✳✺ ➶ûâîä òåêñòà ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✻
❰➹❐➚➶❐➴❮➮➴
✈✐
✷✶✳✶✵Ïðèìåðû
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✻
✷✶✳✶✵✳✶ Ñóììèðîâàíèå äâóõ ÷èñåë ✷✶✳✶✵✳✷ ✃îïèðîâàíèå ôàéëîâ ✷✶✳✶✶➪èáëèîòåêà
■❖
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✼
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✼
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✽
✷✷ Ôóíêöèè ñ êàòàëîãàìè
✷✻✾
✷✸ Ñèñòåìíûå ôóíêöèè
✷✼✸
✷✹ ➘àòà è âðåìÿ
✷✼✺
✷✹✳✶ ➪èáëèîòåêà
✷✺ ❐îêàëèçàöèÿ ✷✺✳✶ ➪èáëèîòåêà
❚✐♠❡
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✼✽
▲♦❝❛❧❡
✷✽✸ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✽✹
✷✻ ➶ðåìÿ ❈P❯
✷✽✺
✷✼ Ñëó÷àéíûå ÷èñëà ✷✼✳✶ ✃ëàññ ✷✼✳✷ ✃ëàññ
❘❛♥❞♦♠●❡♥ ❘❛♥❞♦♠ ✳ ✳
è ãåíåðàòîð
❙t❞●❡♥
✷✽✼ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✽✽
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✵
✷✼✳✸ ➹ëîáàëüíûé ãåíåðàòîð ñëó÷àéíûõ ÷èñåë Ññûëêè ■♥❞❡①
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✷
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✺
✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✼
ÏÐ➴➘➮Ñ❐❰➶➮➴
✈✐✐
Ïðåäèñëîâèå ✏ ❰êîëî ïîëäþæèíû ÷åëîâåê ôîðìàëüíî íàïèñàëè êîìáèíàòîðíóþ ëîãèêó✱ è
áîëüøèíñòâî
íåêîòîðûå
èç
èç
íèõ✱
íàøèõ
âêëþ÷àÿ
íàñ✱
äîïóñòèëè
ïðèÿòåëåé✲ãðåøíèêîâ
îøèáêè✳
îòíîñÿòñÿ
Ïîñêîëüêó
ê
íàèáîëåå
àêêóðàòíûì è êîìïåòåíòíûì ëîãèêàì ñîâðåìåííîñòè✱ ìû ðàññìàòðèâàåì äàííûé ôàêò êàê äîêàçàòåëüñòâî òîãî✱ ÷òî îøèáîê òðóäíî èçáåæàòü✳ Òàêèì îáðàçîì✱ ïîëíîòà îïèñàíèÿ íåîáõîäèìà äëÿ òî÷íîñòè✱ è ÷ðåçìåðíàÿ êðàòêîñòü áûëà áû çäåñü ëîæíîé ýêîíîìèåé✱ äàæå áîëüøå✱ ÷åì îáû÷íî✳✑
Õàñêåëë ➪✳ ✃àððè ✭❍❛s❦❡❧❧ ❇✳ ❈✉rr②✮ è Ðîáåðò Ôåéñ ✭❘♦❜❡rt ❋❡②s✮ â ïðåäèñëîâèè ê ✃îìáèíàòîðíîé ❐îãèêå ❬✷❪✱ ✸✶ ìàÿ ✶✾✺✻
➶ ñåíòÿáðå ✶✾✽✼ íà êîíôåðåíöèè ✏ßçûêè ôóíêöèîíàëüíîãî ïðîãðàììèðîâàíèÿ è êîìïüþòåðíàÿ àðõèòåêòóðà✑ ✭❋P❈❆ ✬✽✼✮ â Ïîðòëåíäå✱ øòàò ❰ðåãîí✱ áûëî îðãàíèçîâàíî çàñåäàíèå äëÿ òîãî✱ ÷òîáû îáñóäèòü ïëà÷åâíóþ ñèòóàöèþ✱ ñëîæèâøóþñÿ â ñîîáùåñòâå ôóíêöèîíàëüíîãî
ïðîãðàììèðîâàíèÿ✿
âîçíèêëî
áîëåå
äþæèíû
íåñòðîãèõ
÷èñòî
ôóíêöèîíàëüíûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ✱ ñõîäíûõ â âûðàçèòåëüíîé ìîùíîñòè è
ñåìàíòè÷åñêèõ
îñíîâàõ✳
Ó÷àñòíèêè
âñòðå÷è
ïðèøëè
ê
òâåðäîìó
ìíåíèþ✱
÷òî
áîëåå øèðîêîìó èñïîëüçîâàíèþ ýòîãî êëàññà ôóíêöèîíàëüíûõ ÿçûêîâ ïðåïÿòñòâîâàëî îòñóòñòâèå îáùåãî ÿçûêà✳ ➪ûëî ðåøåíî✱ ÷òî äîëæåí áûòü ñôîðìèðîâàí êîìèòåò äëÿ
ðàçðàáîòêè
ñâÿçè
íîâûõ
ìåõàíèçìà
òàêîãî
èäåé✱
ÿçûêà✱
óñòîé÷èâîé
ïîîùðåíèÿ
äðóãèõ
êîòîðûé îñíîâû
ëþäåé
îáåñïå÷èë
äëÿ
áû
ðàçðàáîòêè
èñïîëüçîâàòü
áîëåå
áûñòðîå
ðåàëüíûõ
ñðåäñòâî
ïðèëîæåíèé
ôóíêöèîíàëüíûå
ÿçûêè✳
è
Ýòîò
äîêóìåíò îïèñûâàåò ðåçóëüòàò óñèëèé ýòîãî êîìèòåòà ✖ ÷èñòî ôóíêöèîíàëüíûé ÿçûê ïðîãðàììèðîâàíèÿ✱ íàçâàííûé ❍❛s❦❡❧❧✱ â ÷åñòü ëîãèêà Õàñêåëëà ➪✳ ✃àððè ✭❍❛s❦❡❧❧ ❇✳ ❈✉rr②✮✱ ÷åé òðóä îáåñïå÷èâàåò ëîãè÷åñêóþ îñíîâó äëÿ ìíîãèõ íàøèõ ðàáîò✳
Öåëè ❰ñíîâíàÿ öåëü êîìèòåòà çàêëþ÷àëàñü â ðàçðàáîòêå ÿçûêà✱ êîòîðûé óäîâëåòâîðÿë áû ñëåäóþùèì òðåáîâàíèÿì✿
✶✳ ßçûê äîëæåí áûòü ïðèãîäåí äëÿ îáó÷åíèÿ✱ èññëåäîâàíèé è ïðèëîæåíèé✱ âêëþ÷àÿ ïîñòðîåíèå áîëüøèõ ñèñòåì✳ ✷✳ ßçûê äîëæåí ïîëíîñòüþ îïèñûâàòüñÿ ñ ïîìîùüþ ôîðìàëüíûõ ñèíòàêñèñà è ñåìàíòèêè✳ ✸✳ ßçûê äîëæåí íàõîäèòüñÿ â ñâîáîäíîì äîñòóïå✳ Ñëåäóåò ðàçðåøèòü ñâîáîäíóþ ðåàëèçàöèþ è ðàñïðîñòðàíåíèå ÿçûêà✳
ÏÐ➴➘➮Ñ❐❰➶➮➴
✈✐✐✐
✹✳ ßçûê äîëæåí áàçèðîâàòüñÿ íà èäåÿõ✱ êîòîðûå ïîëó÷àò øèðîêîå îäîáðåíèå✳ ✺✳ ßçûê
äîëæåí
ñîêðàòèòü
èçëèøíåå
ìíîãîîáðàçèå
ÿçûêîâ
ôóíêöèîíàëüíîãî
ïðîãðàììèðîâàíèÿ✳
❍❛s❦❡❧❧ ✾✽✿ ÿçûê è áèáëèîòåêè ✃îìèòåò ïëàíèðîâàë✱ ÷òî ❍❛s❦❡❧❧ ïîñëóæèò îñíîâîé äëÿ áóäóùåãî èññëåäîâàíèÿ â ðàçðàáîòêå ÿçûêîâ✱ è âûðàæàë íàäåæäó✱ ÷òî ïîÿâÿòñÿ ðàñøèðåíèÿ èëè âàðèàíòû ÿçûêà✱ âêëþ÷àÿ ýêñïåðèìåíòàëüíûå ôóíêöèîíàëüíûå âîçìîæíîñòè✳ ❍❛s❦❡❧❧ äåéñòâèòåëüíî íåïðåðûâíî ðàçâèâàëñÿ ñ òåõ ïîð✱ êàê áûëî îïóáëèêîâàíî åãî ïåðâîíà÷àëüíîå îïèñàíèå✳ ✃ ñåðåäèíå ✶✾✾✼ áûëî âûïîëíåíî ÷åòûðå èòåðàöèè â ðàçðàáîòêå ÿçûêà ✭ñàìàÿ ïîñëåäíÿÿ íà òîò ìîìåíò ✖ ❍❛s❦❡❧❧ ✶✳✹✮✳ ➶ ✶✾✾✼ íà ñåìèíàðå ïî ❍❛s❦❡❧❧ â ➚ìñòåðäàìå áûëî ðåøåíî✱ ÷òî íåîáõîäèì ñòàáèëüíûé âàðèàíò ❍❛s❦❡❧❧✱ ýòîò ñòàáèëüíûé âàðèàíò ÿçûêà ÿâëÿåòñÿ òåìîé íàñòîÿùåãî îïèñàíèÿ è íàçûâàåòñÿ ✏❍❛s❦❡❧❧ ✾✽✑✳ ❍❛s❦❡❧❧ ✾✽ çàäóìûâàëñÿ êàê îòíîñèòåëüíî íåçíà÷èòåëüíàÿ ìîäèôèêàöèÿ ❍❛s❦❡❧❧ ✶✳✹✱ âûïîëíåííàÿ çà ñ÷åò íåêîòîðûõ óïðîùåíèé è óäàëåíèÿ íåêîòîðûõ ïîäâîäíûõ êàìíåé✳ ❰í ïðåäíàçíà÷åí èãðàòü ðîëü ✏ñòàáèëüíîãî✑ ÿçûêà â òîì ñìûñëå✱ ÷òî ðàçðàáîò÷èêè âûïîëíÿþò ïîääåðæêó ❍❛s❦❡❧❧ ✾✽ â òî÷íîñòè ñ åãî ñïåöèôèêàöèåé✱ äëÿ îáåñïå÷åíèÿ ïðåäñêàçóåìîñòè â áóäóùåì✳
Ïåðâîíà÷àëüíîå îïèñàíèå ❍❛s❦❡❧❧ îïèñûâàëî òîëüêî ÿçûê è ñòàíäàðòíóþ áèáëèîòåêó✱ íàçâàííóþ
Pr❡❧✉❞❡✳
✃
òîìó
âðåìåíè✱
êîãäà
❍❛s❦❡❧❧
✾✽
áûë
ïðèçíàí
ñòàáèëüíîé
âåðñèåé✱ ñòàëî ÿñíî✱ ÷òî ìíîãèì ïðîãðàììàì íåîáõîäèì äîñòóï ê áîëüøîìó íàáîðó áèáëèîòå÷íûõ ôóíêöèé ✭îñîáåííî ýòî êàñàåòñÿ ââîäà ✲ âûâîäà è âçàèìîäåéñòâèÿ ñ îïåðàöèîííîé ñèñòåìîé✮✳ ➴ñëè ýòà ïðîãðàììà äîëæíà áûòü ïåðåíîñèìîé✱ íàáîð áèáëèîòåê òàêæå äîëæåí áûòü ñòàíäàðòèçèðîâàí✳ Ïîýòîìó îòäåëüíûé êîìèòåò ✭â êîòîðûé âõîäèëè íåêîòîðûå èç ÷ëåíîâ êîìèòåòà ïî ðàçðàáîòêå ÿçûêà✮ íà÷àë âíîñèòü èñïðàâëåíèÿ â áèáëèîòåêè ❍❛s❦❡❧❧ ✾✽✳ ❰ïèñàíèÿ ÿçûêà ❍❛s❦❡❧❧ ✾✽ è áèáëèîòåê áûëè îïóáëèêîâàíû â ôåâðàëå ✶✾✾✾✳
➶íåñåíèå èñïðàâëåíèé â îïèñàíèå ❍❛s❦❡❧❧ ✾✽ ×åðåç ãîä èëè äâà áûëî âûÿâëåíî ìíîãî òèïîãðàôñêèõ îøèáîê è ïîãðåøíîñòåé✳ ß âçÿëñÿ ñîáèðàòü è âûïîëíÿòü ýòè èñïðàâëåíèÿ ñî ñëåäóþùèìè öåëÿìè✿
•
➮ñïðàâèòü òèïîãðàôñêèå îøèáêè✳
•
Ðàçúÿñíèòü íåïîíÿòíûå ïåðåõîäû✳
ÏÐ➴➘➮Ñ❐❰➶➮➴
✐①
•
Ðàçðåøèòü íåîäíîçíà÷íîñòè✳
•
Ñ
íåîõîòîé
ñäåëàòü
íåáîëüøèå
èçìåíåíèÿ✱
÷òîáû
ÿçûê
ñòàë
áîëåå
ïîñëåäîâàòåëüíûì✳
Ýòà çàäà÷à✱ îêàçàëîñü íàìíîãî✱ íàìíîãî áîëåå ìàñøòàáíîé✱ ÷åì ÿ îæèäàë✳ Ïîñêîëüêó ❍❛s❦❡❧❧ âñå áîëåå øèðîêî èñïîëüçîâàëñÿ✱ åãî îïèñàíèå âíèìàòåëüíî èçó÷àëîñü âñå áîëüøèì è áîëüøèì êîëè÷åñòâîì ëþäåé✱ è ÿ âíåñ ñîòíè ✭ãëàâíûì îáðàçîì íåáîëüøèõ✮ ïîïðàâîê â ðåçóëüòàòå ýòîé îáðàòíîé ñâÿçè✳ Ïåðâîíà÷àëüíûå êîìèòåòû ïðåêðàòèëè ñâîå ñóùåñòâîâàíèå✱ êîãäà áûëî îïóáëèêîâàíî ïåðâîå îïèñàíèå ❍❛s❦❡❧❧ ✾✽✱ ïîýòîìó êàæäîå èçìåíåíèå âìåñòî ýòîãî âíîñèëîñü íà ðàññìîòðåíèå âñåãî ñïèñêà àäðåñàòîâ ❍❛s❦❡❧❧✳ Ýòîò äîêóìåíò ÿâëÿåòñÿ ðåçóëüòàòîì îïèñàííîãî ïðîöåññà óñîâåðøåíñòâîâàíèÿ✳ ❰í âêëþ÷àåò è îïèñàíèå ÿçûêà ❍❛s❦❡❧❧ ✾✽✱ è îïèñàíèå áèáëèîòåê è ñîñòàâëÿåò îôèöèàëüíóþ ñïåöèôèêàöèþ îáîèõ✳ ❰í
íå
ÿâëÿåòñÿ ó÷åáíûì ïîñîáèåì ïî ïðîãðàììèðîâàíèþ íà
❍❛s❦❡❧❧✱ êàê êðàòêèé ââîäíûé êóðñ ✏●❡♥t❧❡ ■♥tr♦❞✉❝t✐♦♥✑ ❬✻❪✱ è ïðåäïîëàãàåò íåêîòîðîå çíàêîìñòâî ÷èòàòåëÿ ñ ôóíêöèîíàëüíûìè ÿçûêàìè✳ Ïîëíûé òåêñò îáîèõ îïèñàíèé äîñòóïåí â ðåæèìå îíëàéí ✭ñì✳ íèæå ✏Ðåñóðñû ❍❛s❦❡❧❧✑✮✳
Ðàñøèðåíèÿ ❍❛s❦❡❧❧ ✾✽ ❍❛s❦❡❧❧ ïðîäîëæàåò ðàçâèâàòüñÿ è ñèëüíî ïðîäâèíóëñÿ äàëüøå ❍❛s❦❡❧❧ ✾✽✳ ❮àïðèìåð✱ íà
ìîìåíò
íàïèñàíèÿ
ýòîãî
äîêóìåíòà
èìåþòñÿ
ðåàëèçàöèè
❍❛s❦❡❧❧✱
êîòîðûå
ïîääåðæèâàþò✿
Ñèíòàêñè÷åñêèå âîçìîæíîñòè✱ âêëþ÷àÿ✿
•
ñòðàæè îáðàçöîâ❀
•
ðåêóðñèâíóþ ❞♦✲íîòàöèþ❀
•
ëåêñè÷åñêè îãðàíè÷åííûå ïåðåìåííûå òèïà❀
•
âîçìîæíîñòè äëÿ ìåòàïðîãðàììèðîâàíèÿ✳
❮îâàöèè â ñèñòåìå òèïîâ✱ âêëþ÷àÿ✿
•
êëàññû òèïîâ✱ èñïîëüçóþùèå ìíîæåñòâî ïàðàìåòðîâ❀
•
ôóíêöèîíàëüíûå çàâèñèìîñòè❀
•
ýêçèñòåíöèàëüíûå òèïû❀
•
ëîêàëüíûé óíèâåðñàëüíûé ïîëèìîðôèçì è òèïû ïðîèçâîëüíîãî ðàíãà✳
Ðàñøèðåíèÿ óïðàâëåíèÿ✱ âêëþ÷àÿ✿
•
ìîíàäè÷åñêîå ñîñòîÿíèå❀
ÏÐ➴➘➮Ñ❐❰➶➮➴
①
è
•
èñêëþ÷åíèÿ❀
•
ïàðàëëåëèçì
ìíîãîå
äðóãîå✳
❍❛s❦❡❧❧
✾✽
íå
ïðåïÿòñòâóåò
ýòèì
ðàçðàáîòêàì✳
➶ìåñòî
ýòîãî✱
îí
îáåñïå÷èâàåò ñòàáèëüíóþ êîíòðîëüíóþ òî÷êó✱ ÷òîáû òå✱ êòî õî÷åò ïèñàòü ó÷åáíèêè èëè èñïîëüçîâàòü ❍❛s❦❡❧❧ äëÿ îáó÷åíèÿ✱ ìîã îñóùåñòâèòü çàäóìàííîå✱ çíàÿ✱ ÷òî ❍❛s❦❡❧❧ ✾✽ ïðîäîëæèò ñóùåñòâîâàíèå✳
Ðåñóðñû ❍❛s❦❡❧❧ ❲❡❜✲ñàéò ❍❛s❦❡❧❧
❤tt♣✿✴✴❤❛s❦❡❧❧✳♦r❣ ïðåäîñòàâëÿåò äîñòóï êî ìíîãèì ïîëåçíûì ðåñóðñàì✱ âêëþ÷àÿ✿
•
❖♥❧✐♥❡✲âåðñèè
îïðåäåëåíèé
ÿçûêà
è
áèáëèîòåê✱
âêëþ÷àÿ
ïîëíûé
ñïèñîê
âñåõ
ðàçëè÷èé ìåæäó ❍❛s❦❡❧❧ ✾✽✱ âûïóùåííûì â ôåâðàëå ✶✾✾✾✱ è ýòîé èñïðàâëåííîé âåðñèåé✳
•
❰áó÷àþùèé ìàòåðèàë ïî ❍❛s❦❡❧❧✳
•
➘åòàëè ðàññûëêè ❍❛s❦❡❧❧✳
•
Ðåàëèçàöèè ❍❛s❦❡❧❧✳
•
➘îïîëíèòåëüíûå ñðåäñòâà è áèáëèîòåêè ❍❛s❦❡❧❧✳
•
Ïðèëîæåíèÿ ❍❛s❦❡❧❧✳
Ïðèãëàøàåì ➶àñ êîììåíòèðîâàòü✱ ïðåäëàãàòü óñîâåðøåíñòâîâàíèÿ è êðèòèêîâàòü ÿçûê èëè åãî ïðåäñòàâëåíèå â îïèñàíèè ïîñðåäñòâîì ðàññûëêè ❍❛s❦❡❧❧✳
Ïîñòðîåíèå ÿçûêà ❍❛s❦❡❧❧ ñîçäàí è ïðîäîëæàåò ïîääåðæèâàòüñÿ àêòèâíûì ñîîáùåñòâîì èññëåäîâàòåëåé è
ïðèêëàäíûõ
ïðîãðàììèñòîâ✳
Òå✱
êòî
âõîäèë
â
ñîñòàâ
êîìèòåòîâ
ïî
ÿçûêó
è
áèáëèîòåêàì✱ â ÷àñòíîñòè✱ ïîñâÿòèëè îãðîìíîå êîëè÷åñòâî âðåìåíè è ýíåðãèè ÿçûêó✳ ➮õ èìåíà✱ à òàêæå ïðèñîåäèíèâøèåñÿ ê íèì íà òîò ïåðèîä îðãàíèçàöèè ïåðå÷èñëåíû íèæå✿
ÏÐ➴➘➮Ñ❐❰➶➮➴
①✐
❆r✈✐♥❞ ✭▼■❚✮ ▲❡♥♥❛rt ❆✉❣✉stss♦♥ ✭❈❤❛❧♠❡rs ❯♥✐✈❡rs✐t②✮ ❉❛✈❡ ❇❛rt♦♥ ✭▼✐tr❡ ❈♦r♣✮ ❇r✐❛♥ ❇♦✉t❡❧ ✭❱✐❝t♦r✐❛ ❯♥✐✈❡rs✐t② ♦❢ ❲❡❧❧✐♥❣t♦♥✮ ❲❛rr❡♥ ❇✉rt♦♥ ✭❙✐♠♦♥ ❋r❛s❡r ❯♥✐✈❡rs✐t②✮ ❏♦♥ ❋❛✐r❜❛✐r♥ ✭❯♥✐✈❡rs✐t② ♦❢ ❈❛♠❜r✐❞❣❡✮ ❏♦s❡♣❤ ❋❛s❡❧ ✭▲♦s ❆❧❛♠♦s ◆❛t✐♦♥❛❧ ▲❛❜♦r❛t♦r②✮ ❆♥❞② ●♦r❞♦♥ ✭❯♥✐✈❡rs✐t② ♦❢ ❈❛♠❜r✐❞❣❡✮ ▼❛r✐❛ ●✉③♠❛♥ ✭❨❛❧❡ ❯♥✐✈❡rs✐t②✮ ❑❡✈✐♥ ❍❛♠♠♦♥❞ ❬ðåäàêòîð❪ ✭❯♥✐✈❡rs✐t② ♦❢ ●❧❛s❣♦✇✮ ❘❛❧❢ ❍✐♥③❡ ✭❯♥✐✈❡rs✐t② ♦❢ ❇♦♥♥✮ P❛✉❧ ❍✉❞❛❦ ❬ðåäàêòîð❪ ✭❨❛❧❡ ❯♥✐✈❡rs✐t②✮ ❏♦❤♥ ❍✉❣❤❡s ❬ðåäàêòîð❪ ✭❯♥✐✈❡rs✐t② ♦❢ ●❧❛s❣♦✇❀ ❈❤❛❧♠❡rs ❯♥✐✈❡rs✐t②✮ ❚❤♦♠❛s ❏♦❤♥ss♦♥ ✭❈❤❛❧♠❡rs ❯♥✐✈❡rs✐t②✮ ▼❛r❦ ❏♦♥❡s ✭❨❛❧❡ ❯♥✐✈❡rs✐t②✱ ❯♥✐✈❡rs✐t② ♦❢ ◆♦tt✐♥❣❤❛♠✱ ❖r❡❣♦♥ ●r❛❞✉❛t❡ ■♥st✐t✉t❡✮ ❉✐❝❦ ❑✐❡❜✉rt③ ✭❖r❡❣♦♥ ●r❛❞✉❛t❡ ■♥st✐t✉t❡✮ ❏♦❤♥ ▲❛✉♥❝❤❜✉r② ✭❯♥✐✈❡rs✐t② ♦❢ ●❧❛s❣♦✇❀ ❖r❡❣♦♥ ●r❛❞✉❛t❡ ■♥st✐t✉t❡✮ ❊r✐❦ ▼❡✐❥❡r ✭❯tr❡❝❤t ❯♥✐✈❡rs✐t②✮ ❘✐s❤✐②✉r ◆✐❦❤✐❧ ✭▼■❚✮ ❏♦❤♥ P❡t❡rs♦♥ ❬ðåäàêòîð❪ ✭❨❛❧❡ ❯♥✐✈❡rs✐t②✮ ❙✐♠♦♥ P❡②t♦♥ ❏♦♥❡s ❬ðåäàêòîð❪ ✭❯♥✐✈❡rs✐t② ♦❢ ●❧❛s❣♦✇❀ ▼✐❝r♦s♦❢t ❘❡s❡❛r❝❤ ▲t❞✮ ▼✐❦❡ ❘❡❡✈❡ ✭■♠♣❡r✐❛❧ ❈♦❧❧❡❣❡✮ ❆❧❛st❛✐r ❘❡✐❞ ✭❯♥✐✈❡rs✐t② ♦❢ ●❧❛s❣♦✇✮ ❈♦❧✐♥ ❘✉♥❝✐♠❛♥ ✭❯♥✐✈❡rs✐t② ♦❢ ❨♦r❦✮ P❤✐❧✐♣ ❲❛❞❧❡r ❬ðåäàêòîð❪ ✭❯♥✐✈❡rs✐t② ♦❢ ●❧❛s❣♦✇✮ ❉❛✈✐❞ ❲✐s❡ ✭■♥❞✐❛♥❛ ❯♥✐✈❡rs✐t②✮ ❏♦♥❛t❤❛♥ ❨♦✉♥❣ ✭❨❛❧❡ ❯♥✐✈❡rs✐t②✮ Òå✱ êòî ïîìå÷åíû ❬ðåäàêòîð❪✱ ðàáîòàëè â êà÷åñòâå êîîðäèíèðóþùèõ ðåäàêòîðîâ îäíîé èëè áîëåå ðåâèçèé ÿçûêà✳ ✃ðîìå òîãî✱ ìíîæåñòâî äðóãèõ ëþäåé âíåñëè ñâîé âêëàä✱ íåêîòîðûå ✖ íåáîëüøîé✱ íî ìíîãèå ✖ ñóùåñòâåííûé✳ Ýòî ñëåäóþùèå ëþäè✿ ❑r✐s ❆❡rts✱ ❍❛♥s ❆❜❡r❣✱ ❙t❡♥ ❆♥❞❡r✲ s♦♥✱ ❘✐❝❤❛r❞ ❇✐r❞✱ ❙t❡♣❤❡♥ ❇❧♦tt✱ ❚♦♠ ❇❧❡♥❦♦✱ ❉✉❦❡ ❇r✐s❝♦❡✱ P❛✉❧ ❈❛❧❧❛❣❤❛♥✱ ▼❛❣♥✉s ❈❛r❧ss♦♥✱ ▼❛r❦ ❈❛rr♦❧❧✱ ▼❛♥✉❡❧ ❈❤❛❦r❛✈❛rt②✱ ❋r❛♥❦❧✐♥ ❈❤❡♥✱ ❖❧❛❢ ❈❤✐t✐❧✱ ❈❤r✐s ❈❧❛❝❦✱ ●✉② ❈♦✉s✐♥❡❛✉✱ ❚♦♥② ❉❛✈✐❡✱ ❈r❛✐❣ ❉✐❝❦s♦♥✱ ❈❤r✐s ❉♦r♥❛♥✱ ▲❛✉r❛ ❉✉tt♦♥✱ ❈❤r✐s ❋❛s❡❧✱ P❛t ❋❛s❡❧✱ ❙✐❣❜❥♦r♥ ❋✐♥♥❡✱ ▼✐❝❤❛❡❧ ❋r②❡rs✱ ❆♥❞② ●✐❧❧✱ ▼✐❦❡ ●✉♥t❡r✱ ❈♦r❞② ❍❛❧❧✱ ▼❛r❦ ❍❛❧❧✱ ❚❤♦♠❛s ❍❛❧❧❣r❡♥✱ ▼❛tt ❍❛r❞❡♥✱ ❑❧❡♠❡♥s ❍❡♠♠✱ ❋❡r❣✉s ❍❡♥❞❡rs♦♥✱ ❉❡❛♥ ❍❡r✐♥❣t♦♥✱ ❘❛❧❢ ❍✐♥③❡✱ ❇♦❜ ❍✐r♦♠♦t♦✱ ◆✐❝ ❍♦❧t✱ ■❛♥ ❍♦❧②❡r✱ ❘❛♥❞② ❍✉❞s♦♥✱ ❆❧❡①❛♥❞❡r ❏❛❝♦❜s♦♥✱ P❛tr✐❦ ❏❛♥ss♦♥✱ ❘♦❜❡rt ❏❡s❝❤♦❢♥✐❦✱ ❖r❥❛♥ ❏♦❤❛♥s❡♥✱ ❙✐♠♦♥ ❇✳ ❏♦♥❡s✱ ❙t❡❢ ❏♦♦st❡♥✱ ▼✐❦❡ ❏♦②✱ ❙t❡✲ ❢❛♥ ❑❛❤rs✱ ❆♥tt✐✲❏✉❤❛♥✐ ❑❛✐❥❛♥❛❤♦✱ ❏❡r③② ❑❛r❝③♠❛r❝③✉❦✱ ❲♦❧❢r❛♠ ❑❛❤❧✱ ❑❡♥t ❑❛r❧ss♦♥✱ ❘✐❝❤❛r❞ ❑❡❧s❡②✱ ❙✐❛✉✲❈❤❡♥❣ ❑❤♦♦✱ ❆♠✐r ❑✐s❤♦♥✱ ❋❡❧✐❦s ❑❧✉③♥✐❛❦✱ ❏❛♥ ❑♦rt✱ ▼❛r❝✐♥ ❑♦✇❛❧✲ ❝③②❦✱ ❏♦s❡ ▲❛❜r❛✱ ❏❡❢❢ ▲❡✇✐s✱ ▼❛r❦ ▲✐❧❧✐❜r✐❞❣❡✱ ❇❥♦r♥ ▲✐s♣❡r✱ ❙❛♥❞r❛ ▲♦♦s❡♠♦r❡✱ P❛❜❧♦ ▲♦♣❡③✱ ❖❧❛❢ ▲✉❜❡❝❦✱ ■❛♥ ▲②♥❛❣❤✱ ❈❤r✐st✐❛♥ ▼❛❡❞❡r✱ ❑❡t✐❧ ▼❛❧❞❡✱ ❙✐♠♦♥ ▼❛r❧♦✇✱ ▼✐❝❤❛❡❧ ▼❛rt❡✱ ❏✐♠ ▼❛tts♦♥✱ ❏♦❤♥ ▼❡❛❝❤❛♠✱ ❙❡r❣❡② ▼❡❝❤✈❡❧✐❛♥✐✱ ●❛r② ▼❡♠♦✈✐❝❤✱ ❘❛♥❞② ▼✐❝❤❡❧s❡♥✱ ❘✐❝❦
ÏÐ➴➘➮Ñ❐❰➶➮➴
①✐✐
▼♦❤r✱ ❆♥❞② ▼♦r❛♥✱ ●r❛❡♠❡ ▼♦ss✱ ❍❡♥r✐❦ ◆✐❧ss♦♥✱ ❆rt❤✉r ◆♦r♠❛♥✱ ◆✐❝❦ ◆♦rt❤✱ ❈❤r✐s ❖❦❛s❛❦✐✱ ❇❥❛rt❡ ▼✳
Øst✈♦❧❞✱
P❛✉❧ ❖tt♦✱ ❙✈❡♥ P❛♥♥❡✱ ❉❛✈❡ P❛rr♦tt✱ ❘♦ss P❛t❡rs♦♥✱ ▲❛r♥❡
P❡❦♦✇s❦②✱ ❘✐♥✉s P❧❛s♠❡✐❥❡r✱ ■❛♥ P♦♦❧❡✱ ❙t❡♣❤❡♥ Pr✐❝❡✱ ❏♦❤♥ ❘♦❜s♦♥✱ ❆♥❞r❡❛s ❘♦ss❜❡r❣✱ ●❡♦r❣❡ ❘✉ss❡❧❧✱ P❛tr✐❝❦ ❙❛♥s♦♠✱ ▼✐❝❤❛❡❧ ❙❝❤♥❡✐❞❡r✱ ❋❡❧✐① ❙❝❤r♦❡t❡r✱ ❏✉❧✐❛♥ ❙❡✇❛r❞✱ ◆✐♠✐s❤ ❙❤❛❤✱ ❈❤r✐st✐❛♥ ❙✐❡✈❡rs✱ ▲✐❜♦r ❙❦❛r✈❛❞❛✱ ❏❛♥ ❙❦✐❜✐♥s❦✐✱ ▲❛✉r❡♥ ❙♠✐t❤✱ ❘❛♠❛♥ ❙✉♥❞❛r❡s❤✱ ❏♦s❡❢ ❙✈❡♥♥✐♥❣ss♦♥✱ ❑❡♥ ❚❛❦✉s❛❣❛✇❛✱ ❙❛t✐s❤ ❚❤❛tt❡✱ ❙✐♠♦♥ ❚❤♦♠♣s♦♥✱ ❚♦♠ ❚❤♦♠s♦♥✱ ❚♦♠♠② ❚❤♦r♥✱ ❉②❧❛♥ ❚❤✉rst♦♥✱ ▼✐❦❡ ❚❤②❡r✱ ▼❛r❦ ❚✉❧❧s❡♥✱ ❉❛✈✐❞ ❚✇❡❡❞✱ Pr❛❞❡❡♣ ❱❛r✲ ♠❛✱ ▼❛❧❝♦❧♠ ❲❛❧❧❛❝❡✱ ❑❡✐t❤ ❲❛♥s❜r♦✉❣❤✱ ❚♦♥② ❲❛r♥♦❝❦✱ ▼✐❝❤❛❡❧ ❲❡❜❜❡r✱ ❈❛r❧ ❲✐tt②✱ ❙t✉❛rt ❲r❛② è ❇♦♥♥✐❡ ❨❛♥t✐s✳ ❮àêîíåö✱ êðîìå âàæíîé îñíîâîïîëàãàþùåé ðàáîòû Ðîññåðà ✭❘♦ss❡r✮✱ ✃àððè ✭❈✉rr②✮ è äðóãèõ✱ ïîëîæåííîé â îñíîâó ëÿìáäà✲èñ÷èñëåíèÿ✱ áóäåò ïðàâèëüíûì ïðèçíàòü âëèÿíèå ìíîãèõ çàñëóæèâàþùèõ âíèìàíèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ✱ ðàçðàáîòàííûõ çà ýòè ãîäû✳ Õîòÿ òðóäíî òî÷íî îïðåäåëèòü ïðîèñõîæäåíèå ìíîãèõ èäåé✱ ñëåäóþùèå ÿçûêè áûëè îñîáåííî âàæíû✿ ▲✐s♣ ✭è åãî ñîâðåìåííûå âîïëîùåíèÿ ❈♦♠♠♦♥ ▲✐s♣ è ❙❝❤❡♠❡✮✱ ■❙❲■▼ ❐àíäèíà ✭▲❛♥❞✐♥✮✱ ❆P▲✱ ❋P❬✶❪ ➪ýêóñà ✭❇❛❝❦✉s✮✱ ▼▲ è ❙t❛♥❞❛r❞ ▼▲✱ ❍♦♣❡ è ❍♦♣❡ + ✱ ❈❧❡❛♥✱ ■❞✱ ●♦❢❡r✱ ❙✐s❛❧ è ðÿä ÿçûêîâ Òåðíåðà ✭❚✉r♥❡r✮✱ çàâåðøèâøèåñÿ ñîçäàíèåì
▼✐r❛♥❞❛ ✶ ✳ ➪åç ýòèõ ïðåäøåñòâåííèêîâ ❍❛s❦❡❧❧ áûë áû íåâîçìîæåí✳
Ñàéìîí Ïåéòîí ➘æîíñ ✭❙✐♠♦♥ P❡②t♦♥ ❏♦♥❡s✮ ✃åìáðèäæ✱ ñåíòÿáðü ✷✵✵✷
✶
▼✐r❛♥❞❛ ÿâëÿåòñÿ òîðãîâîé ìàðêîé ❘❡s❡❛r❝❤ ❙♦❢t✇❛r❡ ▲t❞✳
×àñòü ■
ßçûê ❍❛s❦❡❧❧ ✾✽
✶
➹ëàâà ✶
➶âåäåíèå ❍❛s❦❡❧❧
ÿâëÿåòñÿ
÷èñòî
ôóíêöèîíàëüíûì
ÿçûêîì
ïðîãðàììèðîâàíèÿ
îáùåãî
íàçíà÷åíèÿ✱ êîòîðûé âêëþ÷àåò ìíîãî ïîñëåäíèõ èííîâàöèé â ðàçðàáîòêå ÿçûêîâ ïðîãðàììèðîâàíèÿ✳ ñåìàíòèêó✱
❍❛s❦❡❧❧
ñòàòè÷åñêóþ
îáåñïå÷èâàåò
ïîëèìîðôíóþ
ôóíêöèè òèïèçàöèþ✱
âûñîêîãî
ïîðÿäêà✱
îïðåäåëÿåìûå
íåñòðîãóþ
ïîëüçîâàòåëåì
àëãåáðàè÷åñêèå òèïû äàííûõ✱ ñîïîñòàâëåíèå ñ îáðàçöîì✱ îïèñàíèå ñïèñêîâ✱ ìîäóëüíóþ ñèñòåìó✱ ìîíàäè÷åñêóþ ñèñòåìó ââîäà ✲ âûâîäà è áîãàòûé íàáîð ïðèìèòèâíûõ òèïîâ äàííûõ✱ âêëþ÷àÿ ñïèñêè✱ ìàññèâû✱ öåëûå ÷èñëà ïðîèçâîëüíîé è ôèêñèðîâàííîé òî÷íîñòè
è
÷èñëà
ñ
ïëàâàþùåé
òî÷êîé✳
❍❛s❦❡❧❧
ÿâëÿåòñÿ
è
êóëüìèíàöèåé✱
è
êðèñòàëëèçàöèåé ìíîãèõ ëåò èññëåäîâàíèÿ íåñòðîãèõ ôóíêöèîíàëüíûõ ÿçûêîâ✳ Ýòî îïèñàíèå îïðåäåëÿåò ñèíòàêñèñ ïðîãðàìì íà ❍❛s❦❡❧❧ è íåôîðìàëüíóþ àáñòðàêòíóþ ñåìàíòèêó äëÿ ïîíèìàíèÿ ñìûñëà òàêèõ ïðîãðàìì✳ ❒û íå ðàññìàòðèâàåì ñïîñîáû✱ êîòîðûìè ïðîãðàììû íà ❍❛s❦❡❧❧ óïðàâëÿþòñÿ✱ èíòåðïðåòèðóþòñÿ✱ êîìïèëèðóþòñÿ è ò✳ä✳✱ ïîñêîëüêó îíè çàâèñÿò îò ðåàëèçàöèè✱ âêëþ÷àÿ òàêèå âîïðîñû✱ êàê õàðàêòåð ñðåä ïðîãðàììèðîâàíèÿ è ñîîáùåíèÿ îá îøèáêàõ✱ âîçâðàùàåìûå äëÿ íåîïðåäåëåííûõ
⊥✮✳
ïðîãðàìì ✭ò✳å✳ ïðîãðàìì✱ ôîðìàëüíîå âû÷èñëåíèå êîòîðûõ ïðèâîäèò ê
✶✳✶
➶
Ñòðóêòóðà ïðîãðàììû
ýòîì
ðàçäåëå
ìû
îïèñûâàåì
àáñòðàêòíóþ
ñèíòàêñè÷åñêóþ
è
ñåìàíòè÷åñêóþ
ñòðóêòóðó ❍❛s❦❡❧❧✱ à òàêæå òî✱ êàê îíà ñîîòíîñèòñÿ ñ îðãàíèçàöèåé îñòàëüíîé ÷àñòè îïèñàíèÿ✳
✶✳ Ñàìûé
âåðõíèé
óðîâåíü
ïðîãðàììû
íà
❍❛s❦❡❧❧
ïðåäñòàâëÿåò
ñîáîé
íàáîð
ìîäóëåé✱ îïèñàííûõ â ãëàâå ✺✳ ❒îäóëè ïðåäîñòàâëÿþò ñðåäñòâî óïðàâëåíèÿ ïðîñòðàíñòâàìè èìåí è ïîâòîðíîãî èñïîëüçîâàíèÿ ïðîãðàììíîãî îáåñïå÷åíèÿ â áîëüøèõ ïðîãðàììàõ✳
✸
✹
➹❐➚➶➚ ✶✳
✷✳ ➶åðõíèé
óðîâåíü
ñóùåñòâóåò
ìîäóëÿ
íåñêîëüêî
ñîñòîèò
âèäîâ✱
âñå
èç
îáúÿâëåíèé✱
ñîâîêóïíîñòè
îíè
îïèñàíû
â
➶➶➴➘➴❮➮➴
ãëàâå
✹✳
êîòîðûõ
❰áúÿâëåíèÿ
îïðåäåëÿþò òàêèå ñóùíîñòè✱ êàê îáû÷íûå çíà÷åíèÿ✱ òèïû äàííûõ✱ êëàññû òèïîâ✱ àññîöèàòèâíîñòü è ïðèîðèòåòû îïåðàòîðîâ✳
âûðàæåíèÿ✱ îïèñàííûå â ãëàâå ✸✳ ñòàòè÷åñêèé òèï❀ âûðàæåíèÿ ëåæàò â
✸✳ ❮à ñëåäóþùåì✱ áîëåå íèçêîì✱ óðîâíå íàõîäÿòñÿ ➶ûðàæåíèå îáîçíà÷àåò
çíà÷åíèå
è èìååò
îñíîâå ïðîãðàììèðîâàíèÿ íà ❍❛s❦❡❧❧ ✏â ìàëîì✑✳ ✹✳ ❮à íèæíåì óðîâíå íàõîäèòñÿ
ëåêñè÷åñêàÿ ñòðóêòóðà
❍❛s❦❡❧❧✱ îïðåäåëåííàÿ â
ãëàâå ✷✳ ❐åêñè÷åñêàÿ ñòðóêòóðà îõâàòûâàåò êîíêðåòíîå ïðåäñòàâëåíèå ïðîãðàìì íà ❍❛s❦❡❧❧ â òåêñòîâûõ ôàéëàõ✳
➘àííîå îïèñàíèå íàïðàâëåíî ñíèçó ââåðõ ïî îòíîøåíèþ ê ñèíòàêñè÷åñêîé ñòðóêòóðå ❍❛s❦❡❧❧✳ ➹ëàâû✱
êîòîðûå
íå
óïîìÿíóòû
âûøå✱
✖
ýòî
ãëàâà
✻✱
êîòîðàÿ
îïèñûâàåò
ñòàíäàðòíûå âñòðîåííûå òèïû äàííûõ è êëàññû â ❍❛s❦❡❧❧✱ è ãëàâà ✼✱ â êîòîðîé ðàññìàòðèâàåòñÿ ñðåäñòâî ââîäà ✲ âûâîäà â ❍❛s❦❡❧❧ ✭ò✳å✳ êàê ïðîãðàììû íà ❍❛s❦❡❧❧ ñâÿçûâàþòñÿ ñî âíåøíèì ìèðîì✮✳ Òàêæå åñòü íåñêîëüêî ãëàâ✱ îïèñûâàþùèõ Pr❡❧✉❞❡✱ êîíêðåòíûé ñèíòàêñèñ✱ ãðàìîòíîå ïðîãðàììèðîâàíèå✱ ïîäðîáíîå îïèñàíèå ïðîèçâîäíûõ ýêçåìïëÿðîâ è ïñåâäîêîììåíòàðèè✱ ïîääåðæèâàåìûå áîëüøèíñòâîì êîìïèëÿòîðîâ ❍❛s✲ ❦❡❧❧✳ Ïðèìåðû ôðàãìåíòîâ ïðîãðàìì íà ❍❛s❦❡❧❧ â äàííîì òåêñòå äàíû â ìàøèíîïèñíîì øðèôòå✿
❧❡t ① ❂ ✶ ③ ❂ ①✰② ✐♥ ③✰✶ ✏➘ûðû✑ âî ôðàãìåíòàõ ïðîãðàìì✱ ïðåäñòàâëÿþùèå ñîáîé ïðîèçâîëüíûå ÷àñòè êîäà íà ❍❛s❦❡❧❧✱ íàïèñàíû â êóðñèâå✱ êàê✱ íàïðèìåð✱ â èìåíà ÿâëÿþòñÿ ìíåìîíè÷åñêèìè✱ íàïðèìåð✱ îáúÿâëåíèé ✭❞❡❝❧❛r❛t✐♦♥s✮✱
✶✳✷
t
✐❢ e1 t❤❡♥ e2 ❡❧s❡ e3 ✳ ➶îîáùå êóðñèâíûå e ✖ äëÿ âûðàæåíèé ✭❡①♣r❡ss✐♦♥s✮✱ d ✖ äëÿ
✖ äëÿ òèïîâ ✭t②♣❡s✮ è ò✳ä✳
ßäðî ❍❛s❦❡❧❧
❍❛s❦❡❧❧ çàèìñòâîâàë ìíîãèå èç óäîáíûõ ñèíòàêñè÷åñêèõ ñòðóêòóð✱ êîòîðûå ñòàëè ïîïóëÿðíûìè â ôóíêöèîíàëüíîì ïðîãðàììèðîâàíèè✳ ➶ ýòîì îïèñàíèè çíà÷åíèå òàêîãî ñèíòàêñè÷åñêîãî ñðåäñòâà äàåòñÿ òðàíñëÿöèåé â áîëåå ïðîñòûå êîíñòðóêöèè✳ ➴ñëè ýòè òðàíñëÿöèè ïîëíîñòüþ ïðèìåíèìû✱ ðåçóëüòàòîì ÿâëÿåòñÿ ïðîãðàììà✱ çàïèñàííàÿ â íåáîëüøîì ïîäìíîæåñòâå ❍❛s❦❡❧❧✱ êîòîðîå ìû íàçûâàåì Õîòÿ
ÿäðî
ôîðìàëüíî
íå
îïðåäåëåíî✱
ýòî
ïî
ÿäðîì
❍❛s❦❡❧❧✳
ñóùåñòâó
ñëåãêà
ñìÿã÷åííûé
âàðèàíò ëÿìáäà✲èñ÷èñëåíèÿ ñ ïðÿìî îáîçíà÷åííîé ñåìàíòèêîé✳ Òðàíñëÿöèÿ êàæäîé
✶✳✸✳
✺
➬❮➚×➴❮➮ß ➮ Ò➮ÏÛ
ñèíòàêñè÷åñêîé ñòðóêòóðû â ÿäðî äàåòñÿ✱ êîãäà ââîäèòñÿ ñèíòàêñèñ✳ Ýòà ìîäóëüíàÿ êîíñòðóêöèÿ îáëåã÷àåò îáúÿñíåíèå ïðîãðàìì íà ❍❛s❦❡❧❧ è ïðåäîñòàâëÿåò ïîëåçíûå ðåêîìåíäàöèè äëÿ ðàçðàáîò÷èêîâ ðåàëèçàöèé ÿçûêà✳
✶✳✸
➬íà÷åíèÿ è òèïû
Ðåçóëüòàòîì âû÷èñëåíèÿ âûðàæåíèÿ ÿâëÿåòñÿ
òèï✳
çíà÷åíèå✳ ➶ûðàæåíèå èìååò ñòàòè÷åñêèé
➬íà÷åíèÿ è òèïû íå ñìåøàíû â ❍❛s❦❡❧❧✳ Òåì íå ìåíåå✱ ñèñòåìà òèïîâ äîïóñêàåò
îïðåäåëÿåìûå ïîëüçîâàòåëåì òèïû äàííûõ ðàçëè÷íûõ âèäîâ è ðàçðåøàåò íå òîëüêî ïàðàìåòðè÷åñêèé ïîëèìîðôèçì ✭èñïîëüçóÿ òðàäèöèîííóþ ñòðóêòóðó òèïîâ Õèíäëè✲ ❒èëíåðà ✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮✮✱ íî òàêæå ✭èñïîëüçóÿ
êëàññû òèïîâ✮✳
ñïåöèàëüíûé
❰øèáêè â ❍❛s❦❡❧❧ ñåìàíòè÷åñêè ýêâèâàëåíòíû
⊥✳
ïîëèìîðôèçì✱ èëè
ïåðåãðóçêó
Ñ ôîðìàëüíîé òî÷êè çðåíèÿ îíè
íå îòëè÷èìû îò íåçàâåðøåííîãî âû÷èñëåíèÿ✱ ïîýòîìó ÿçûê íå ñîäåðæèò ìåõàíèçìà îáíàðóæåíèÿ èëè ðåàãèðîâàíèÿ íà îøèáêè✳ Òåì íå ìåíåå✱ ðåàëèçàöèè ÿçûêà âåðîÿòíî áóäóò ïûòàòüñÿ ïðåäîñòàâèòü ïîëåçíóþ èíôîðìàöèþ îá îøèáêàõ ✭ñì✳ ðàçäåë ✸✳✶✮✳
✶✳✹
Ïðîñòðàíñòâà èìåí
ïåðåìåííûõ è êîíñòðóêòîðîâ îáîçíà÷àþò çíà÷åíèÿ❀ èìåíà ïåðåìåííûõ òèïîâ✱ êîíñòðóêòîðîâ òèïîâ è êëàññîâ òèïîâ ññûëàþòñÿ íà ñóùíîñòè✱ îòíîñÿùèåñÿ ê ñèñòåìå òèïîâ❀ èìåíà ìîäóëåé ññûëàþòñÿ íà ìîäóëè✳ ➴ñòü ➴ñòü øåñòü âèäîâ èìåí â ❍❛s❦❡❧❧✿ èìåíà
äâà îãðàíè÷åíèÿ íà ïðèñâàèâàíèå èìåí✿
✶✳ ➮ìåíàìè ïåðåìåííûõ è ïåðåìåííûõ òèïîâ ÿâëÿþòñÿ èäåíòèôèêàòîðû✱ êîòîðûå íà÷èíàþòñÿ ñî ñòðî÷íûõ áóêâ èëè ñèìâîëà ïîä÷åðêèâàíèÿ❀ îñòàëüíûå ÷åòûðå âèäà èìåí ÿâëÿþòñÿ èäåíòèôèêàòîðàìè✱ êîòîðûå íà÷èíàþòñÿ ñ çàãëàâíûõ áóêâ✳ ✷✳ ➮äåíòèôèêàòîð íåëüçÿ èñïîëüçîâàòü â êà÷åñòâå èìåíè êîíñòðóêòîðà òèïà è êëàññà â îäíîé è òîé æå îáëàñòè âèäèìîñòè✳
Ýòî åäèíñòâåííûå îãðàíè÷åíèÿ❀ íàïðèìåð✱
■♥t
ìîæåò îäíîâðåìåííî ÿâëÿòüñÿ èìåíåì
ìîäóëÿ✱ êëàññà è êîíñòðóêòîðà â ïðåäåëàõ îäíîé îáëàñòè âèäèìîñòè✳
✻
➹❐➚➶➚ ✶✳
➶➶➴➘➴❮➮➴
➹ëàâà ✷
❐åêñè÷åñêàÿ ñòðóêòóðà ➶ ýòîé ãëàâå ìû îïèøåì ëåêñè÷åñêóþ ñòðóêòóðó íèæíåãî óðîâíÿ ÿçûêà ❍❛s❦❡❧❧✳ ➪îëüøèíñòâî äåòàëåé ìîæåò áûòü ïðîïóùåíî ïðè ïåðâîì ïðî÷òåíèè ýòîãî îïèñàíèÿ✳ ✷✳✶
Ñîãëàøåíèÿ îá îáîçíà÷åíèÿõ
Ýòè ñîãëàøåíèÿ îá îáîçíà÷åíèÿõ èñïîëüçóþòñÿ äëÿ ïðåäñòàâëåíèÿ ñèíòàêñèñà✿ [pattern] {pattern} (pattern) pat1 | pat2 pathpat ′ i
❢✐❜♦♥❛❝❝✐
íåîáÿçàòåëüíûé íîëü èëè áîëåå ïîâòîðåíèé ãðóïïèðîâêà âûáîð ðàçíîñòü ✖ ýëåìåíòû✱ ïîðîæäàåìûå ñ ïîìîùüþ pat ✱ çà èñêëþ÷åíèåì ýëåìåíòîâ✱ ïîðîæäàåìûõ ñ ïîìîùüþ pat ′ òåðìèíàëüíûé ñèíòàêñèñ â ìàøèíîïèñíîì øðèôòå
Ïîñêîëüêó ñèíòàêñèñ â ýòîì ðàçäåëå îïèñûâàåò ñèíòàêñèñ✱ âñå ïðîáåëüíûå ñèìâîëû âûðàæåíû ÿâíî❀ íåò íèêàêèõ íåÿâíûõ ïðîáåëîâ ìåæäó ñìåæíûìè ñèìâîëàìè✳ Ïîâñþäó èñïîëüçóåòñÿ ❇◆❋✲ïîäîáíûé ñèíòàêñèñ✱ ÷üè ïðàâèëà âûâîäà èìåþò âèä✿ ëåêñè÷åñêèé
nonterm
→
alt1 | alt2 | . . . | altn
Ïåðåâîä✿ íåòåðìèíàë
→
àëüòåðíàòèâà1
| | |
àëüòåðíàòèâà2 ✳✳✳ àëüòåðíàòèâàn
✼
✽
➹❐➚➶➚ ✷✳
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
❮åîáõîäèìî âíèìàòåëüíî îòíåñòèñü ê îòëè÷èþ ñèíòàêñèñà ìåòàëîãè÷åñêèõ ñèìâîëîâ✱ íàïðèìåð✱
|
è
[. . .]✱
îò êîíêðåòíîãî ñèíòàêñèñà òåðìèíàëîâ ✭äàííûõ â ìàøèíîïèñíîì
øðèôòå✮✱ íàïðèìåð✱
⑤
è
❬✳✳✳❪✱
õîòÿ îáû÷íî ýòî ÿñíî èç êîíòåêñòà✳
❍❛s❦❡❧❧ èñïîëüçóåò êîäèðîâêó ñèìâîëîâ ❯♥✐❝♦❞❡ ❬✶✶❪✳ Òåì íå ìåíåå✱ èñõîäíûå ïðîãðàììû â íàñòîÿùåå âðåìÿ íàïèñàíû â îñíîâíîì â êîäèðîâêå ñèìâîëîâ ❆❙❈■■ ✱ èñïîëüçóåìîé â áîëåå ðàííèõ âåðñèÿõ ❍❛s❦❡❧❧✳ Ýòîò ñèíòàêñèñ çàâèñèò îò ñâîéñòâ ñèìâîëîâ ❯♥✐❝♦❞❡✱ îïðåäåëÿåìûõ êîíñîðöèóìîì ❯♥✐✲ ❝♦❞❡✳ ❰æèäàåòñÿ✱ ÷òî êîìïèëÿòîðû ❍❛s❦❡❧❧ áóäóò èñïîëüçîâàòü íîâûå âåðñèè ❯♥✐❝♦❞❡✱ êîãäà îíè ñòàíóò äîñòóïíûìè✳
✷✳✷
❐åêñè÷åñêàÿ ñòðóêòóðà ïðîãðàììû
literal special
→ → | → →
{ lexeme | whitespace } qvarid | qconid | qvarsym | qconsym literal | special | reservedop | reservedid integer | float | char | string ✭|✮|✱|❀|❬|❪|❵|④|⑥
whitespace whitestuff whitechar newline return linefeed vertab formfeed space tab uniWhite
→ → → → → → → → → → →
whitestuff {whitestuff } whitechar | comment | ncomment newline | vertab | space | tab | uniWhite return linefeed | return | linefeed | formfeed
comment dashes opencom closecom ncomment ANYseq ANY any graphic
→ → → → → → → → →
dashes [ anyhsymboli {any} ] newline ✲✲ {✲} ④✲ ✲⑥ opencom ANYseq {ncomment ANYseq} closecom {ANY }h{ANY } ( opencom | closecom ) {ANY }i graphic | whitechar graphic | space | tab small | large | symbol | digit | special | ✿ | ✧ | ✬
small ascSmall
→ →
ascSmall | uniSmall | ❴ ❛ | ❜ | ... | ③
program lexeme
âîçâðàò êàðåòêè ïåðåâîä ñòðîêè âåðòèêàëüíàÿ òàáóëÿöèÿ ïåðåâîä ñòðàíèöû ïðîáåë ãîðèçîíòàëüíàÿ òàáóëÿöèÿ ëþáîé ïðîáåëüíûé ñèìâîë ❯♥✐❝♦❞❡
✷✳✷✳
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚ ÏÐ❰➹Ð➚❒❒Û
uniSmall
→
ëþáàÿ áóêâà ❯♥✐❝♦❞❡ íèæíåãî ðåãèñòðà
large ascLarge uniLarge symbol
→ → → →
ascLarge | uniLarge ❆ | ❇ | ... | ❩ ëþáàÿ áóêâà ❯♥✐❝♦❞❡ âåðõíåãî ðåãèñòðà èëè çàãëàâíàÿ ascSymbol | uniSymbolhspecial | ❴ | ✿ | ✧ | ✬i
ascSymbol → | uniSymbol → digit → ascDigit → uniDigit → octit → hexit →
✦|★|✩|✪|✫|✯|✰|✳|✴|❁|❂|❃|❄|@ ❭|❫|⑤|✲|⑦ ëþáîé ñèìâîë èëè çíàê ïóíêòóàöèè ❯♥✐❝♦❞❡ ascDigit | uniDigit ✵ | ✶ | ... | ✾ ëþáàÿ äåñÿòè÷íàÿ öèôðà ❯♥✐❝♦❞❡ ✵ | ✶ | ... | ✼ digit | ❆ | . . . | ❋ | ❛ | . . . | ❢
Ïåðåâîä✿
→ { ëåêñåìà | ïðîáåëüíàÿ✲ñòðîêà } ëåêñåìà → ïðîãðàììà
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé
| | | | | | |
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé êâàëèôèöèðîâàííûé✲ñèìâîë✲êîíñòðóêòîðà ëèòåðàë ñïåöèàëüíàÿ✲ëåêñåìà çàðåçåðâèðîâàííûé✲îïåðàòîð çàðåçåðâèðîâàííûé✲èäåíòèôèêàòîð
ëèòåðàë
→
öåëûé✲ëèòåðàë
| | |
ëèòåðàë✲ñ✲ïëàâàþùåé✲òî÷êîé ñèìâîëüíûé✲ëèòåðàë ñòðîêîâûé✲ëèòåðàë
→ ✭|✮|✱|❀|❬|❪|‘|④|⑥
ñïåöèàëüíàÿ✲ëåêñåìà
ïðîáåëüíàÿ✲ñòðîêà
→
ïðîáåëüíûé✲ýëåìåíò ïðîáåëüíûé✲ýëåìåíò
{ïðîáåëüíûé✲ýëåìåíò}
→
ïðîáåëüíûé✲ñèìâîë
| |
êîììåíòàðèé âëîæåííûé✲êîììåíòàðèé
ïðîáåëüíûé✲ñèìâîë íîâàÿ✲ñòðîêà
→
✾
✶✵
➹❐➚➶➚ ✷✳
| | | |
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
âåðòèêàëüíàÿ✲òàáóëÿöèÿ ïðîáåë ãîðèçîíòàëüíàÿ✲òàáóëÿöèÿ ïðîáåëüíûé✲ñèìâîë✲❯♥✐❝♦❞❡
íîâàÿ✲ñòðîêà
→
âîçâðàò✲êàðåòêè ïåðåâîä✲ñòðîêè
| | |
âîçâðàò✲êàðåòêè ïåðåâîä✲ñòðîêè ïåðåâîä✲ñòðàíèöû
êîììåíòàðèé òèðå
[
→
ëþáîé✲ñèìâîëhñèìâîëi
{ëþáîé✲ñèìâîë} ]
íîâàÿ✲ñòðîêà
→ ✲✲ {✲}
òèðå
íà÷àëî✲êîììåíòàðèÿ
→
④✲ êîíåö✲êîììåíòàðèÿ
→
✲⑥ âëîæåííûé✲êîììåíòàðèé
→
íà÷àëî✲êîììåíòàðèÿ ❐Þ➪➚ß✲ïîñëåäîâàòåëüíîñòü
{âëîæåííûé✲êîììåíòàðèé ❐Þ➪➚ß✲ïîñëåäîâàòåëüíîñòü} êîíåö✲êîììåíòàðèÿ → {❐Þ➪❰➱✲ñèìâîë}h{❐Þ➪❰➱✲ñèìâîë} ( íà÷àëî✲êîììåíòàðèÿ | êîíåö✲êîììåíòàðèÿ )
❐Þ➪➚ß✲ïîñëåäîâàòåëüíîñòü
{❐Þ➪❰➱✲ñèìâîë}i ❐Þ➪❰➱✲ñèìâîë
→
ãðàôè÷åñêèé✲ñèìâîë
|
ïðîáåëüíûé✲ñèìâîë
ëþáîé✲ñèìâîë
→
ãðàôè÷åñêèé✲ñèìâîë
| |
ïðîáåë ãîðèçîíòàëüíàÿ✲òàáóëÿöèÿ
ãðàôè÷åñêèé✲ñèìâîë
→
ìàëåíüêàÿ✲áóêâà
| áîëüøàÿ✲áóêâà | ñèìâîë | öèôðà | ñïåöèàëüíàÿ✲ëåêñåìà |✿|✧|✬ ìàëåíüêàÿ✲áóêâà
→
ìàëåíüêàÿ✲áóêâà✲❆❙❈■■
| ìàëåíüêàÿ✲áóêâà✲❯♥✐❝♦❞❡ |❴ ìàëåíüêàÿ✲áóêâà✲❆❙❈■■ → ❛ | ❜ | ... | ③
✷✳✸✳
✶✶
✃❰❒❒➴❮Ò➚Ð➮➮
áîëüøàÿ✲áóêâà
→
áîëüøàÿ✲áóêâà✲❆❙❈■■
|
áîëüøàÿ✲áóêâà✲❯♥✐❝♦❞❡
→ ❆ | ❇ | ... | ❩ ñèìâîë →ñèìâîë✲❆❙❈■■ | ñèìâîë✲❯♥✐❝♦❞❡hñïåöèàëüíàÿ✲ëåêñåìà áîëüøàÿ✲áóêâà✲❆❙❈■■
| ❴ | ✿ | ✧ | ✬i
→ ✦|★|✩|✪|✫|✯|✰|✳|✴|❁|❂|❃|❄|@ |❭ | ❫ | ⑤ | ✲ | ⑦ ñèìâîë✲❯♥✐❝♦❞❡ →
ñèìâîë✲❆❙❈■■
ëþáîé ñèìâîë èëè çíàê ïóíêòóàöèè ❯♥✐❝♦❞❡
öèôðà
→
öèôðà✲❆❙❈■■
|
öèôðà✲❯♥✐❝♦❞❡
→ ✵ | ✶ | ... | ✾ öèôðà✲❯♥✐❝♦❞❡ → öèôðà✲❆❙❈■■
ëþáàÿ äåñÿòè÷íàÿ öèôðà ❯♥✐❝♦❞❡
âîñüìèðè÷íàÿ✲öèôðà
→
✵ | ✶ | ... | ✼ → | ❆ | ... | ❋ | ❛ | ... | ❢
øåñòíàäöàòèðè÷íàÿ✲öèôðà öèôðà
❐åêñè÷åñêèé â
êàæäîé
àíàëèç
òî÷êå
äîëæåí
ñ÷èòûâàåòñÿ
èñïîëüçîâàòü íàèáîëåå
ïðàâèëî
äëèííàÿ
èç
✏ìàêñèìàëüíîãî âîçìîæíûõ
ïîòðåáëåíèÿ✑✿
ëåêñåì✱
êîòîðàÿ
lexeme (ëåêñåìû)✳ Òàêèì îáðàçîì✱ íåñìîòðÿ íà òî✱ ÷òî ❝❛s❡s òàêîâûì íå ÿâëÿåòñÿ✳ ➚íàëîãè÷íî✱ ❂ çàðåçåðâèðîâàíî✱ ❂❂ è ⑦❂ ✖ íåò✳
óäîâëåòâîðÿåò ïðàâèëó âûâîäà
❝❛s❡
ÿâëÿåòñÿ çàðåçåðâèðîâàííûì ñëîâîì✱
íåñìîòðÿ íà òî✱ ÷òî ❐þáîé âèä
whitespace (ïðîáåëüíîé✲ñòðîêè)
òàêæå ÿâëÿåòñÿ ïðàâèëüíûì ðàçäåëèòåëåì
äëÿ ëåêñåì✳ Ñèìâîëû✱ êîòîðûå íå âõîäÿò â êàòåãîðèþ
ANY (❐Þ➪❰➱✲ñèìâîë)✱
íåäîïóñòèìû â
ïðîãðàììàõ íà ❍❛s❦❡❧❧ è äîëæíû ïðèâîäèòü ê ëåêñè÷åñêîé îøèáêå✳
✷✳✸
✃îììåíòàðèè
✃îììåíòàðèè ÿâëÿþòñÿ ïðàâèëüíûìè ïðîáåëüíûìè ñèìâîëàìè✳ ❰áû÷íûé êîììåíòàðèé íà÷èíàåòñÿ ñ ïîñëåäîâàòåëüíîñòè äâóõ èëè áîëåå ñëåäóþùèõ äðóã çà äðóãîì ñèìâîëîâ òèðå ✭íàïðèìåð✱
✕✮
è ïðîñòèðàåòñÿ äî ñëåäóþùåãî ñèìâîëà
✶✷
➹❐➚➶➚ ✷✳
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
íîâîé ñòðîêè✳ Ïîñëåäîâàòåëüíîñòü òèðå íå äîëæíà ÿâëÿòüñÿ ÷àñòüþ ïðàâèëüíîé
ëåêñåìû✳ ❮àïðèìåð✱ ✏ ✕❃✑ èëè ✏ ⑤✕✑ íå ÿâëÿþòñÿ íà÷àëîì êîììåíòàðèÿ✱ ïîòîìó ÷òî îáà
îíè ÿâëÿþòñÿ ïðàâèëüíûìè ëåêñåìàìè❀ íî ✏ ✕❢♦♦✑ íà÷èíàåò êîììåíòàðèé✳ ➶ëîæåííûé
êîììåíòàðèé
ïðàâèëüíûõ
ëåêñåì✱
íà÷èíàåòñÿ
êîòîðûå
ñ
✏ ④✲✑
íà÷èíàþòñÿ
ñ
è
çàêàí÷èâàåòñÿ
✏ ④✲✑❀
✏ ✲⑥✑✳
ñëåäîâàòåëüíî✱
❮åò
íèêàêèõ
íàïðèìåð✱
✏ ④✕✲✑
íà÷èíàåò âëîæåííûé êîììåíòàðèé íåñìîòðÿ íà çàìûêàþùèå ñèìâîëû òèðå✳ Ñàì êîììåíòàðèé íå ïîäâåðãàåòñÿ ëåêñè÷åñêîìó àíàëèçó✳ ➶ìåñòî ýòîãî✱ ïåðâîå✱ íå èìåþùåå
ñîîòâåòñòâóþùåé
ïàðû
âõîæäåíèå
ñòðîêè
✏ ✲⑥✑
çàêàí÷èâàåò
âëîæåííûé
êîììåíòàðèé✳ ➶ëîæåííûå êîììåíòàðèè ìîãóò áûòü âëîæåííûìè íà ëþáóþ ãëóáèíó✿ ëþáîå âõîæäåíèå ñòðîêè ✏ ④✲✑ â ïðåäåëàõ âëîæåííîãî êîììåíòàðèÿ íà÷èíàåò íîâûé
âëîæåííûé êîììåíòàðèé✱ çàêàí÷èâàþùèéñÿ ✏ ✲⑥✑✳ ➶ ïðåäåëàõ âëîæåííîãî êîììåíòàðèÿ êàæäûé ✏ ④✲✑ ñîïîñòàâëÿåòñÿ ñ ñîîòâåòñòâóþùèì âõîæäåíèåì ✏ ✲⑥✑✳
➶ îáû÷íîì êîììåíòàðèè ïîñëåäîâàòåëüíîñòè ñèìâîëîâ ✏ ④✲✑ è ✏ ✲⑥✑ íå èìåþò íèêàêîãî ñïåöèàëüíîãî çíà÷åíèÿ✱ è âî âëîæåííîì êîììåíòàðèè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ òèðå íå èìååò íèêàêîãî ñïåöèàëüíîãî çíà÷åíèÿ✳ ➶ëîæåííûå êîììåíòàðèè òàêæå èñïîëüçóþòñÿ äëÿ óêàçàíèé êîìïèëÿòîðó✱ îáúÿñíåííûõ â ãëàâå ✶✶✳ ➴ñëè íåêîòîðûé êîä çàêîììåíòèðîâàí ñ èñïîëüçîâàíèåì âëîæåííîãî êîììåíòàðèÿ✱ òî ëþáîå âõîæäåíèå
④✲
èëè
✲⑥
â ïðåäåëàõ ñòðîêè èëè â ïðåäåëàõ êîììåíòàðèÿ äî êîíöà
ñòðîêè â ýòîì êîäå áóäåò âëèÿòü íà âëîæåííûå êîììåíòàðèè✳
✷✳✹
➮äåíòèôèêàòîðû è îïåðàòîðû
varid → conid → reservedid → | |
(small {small | large | digit | ✬ })hreservedidi large {small | large | digit | ✬ } ❝❛s❡ | ❝❧❛ss | ❞❛t❛ | ❞❡❢❛✉❧t | ❞❡r✐✈✐♥❣ | ❞♦ | ❡❧s❡ ✐❢ | ✐♠♣♦rt | ✐♥ | ✐♥❢✐① | ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥st❛♥❝❡ ❧❡t | ♠♦❞✉❧❡ | ♥❡✇t②♣❡ | ♦❢ | t❤❡♥ | t②♣❡ | ✇❤❡r❡ | ❴
Ïåðåâîä✿ èäåíòèôèêàòîð✲ïåðåìåííîé
→
(ìàëåíüêàÿ✲áóêâà {ìàëåíüêàÿ✲áóêâà | áîëüøàÿ✲áóêâà | öèôðà | ✬ })hçàðåçåðâèðîâàííûé✲èäåíòèôèêàòîði èäåíòèôèêàòîð✲êîíñòðóêòîðà → áîëüøàÿ✲áóêâà {ìàëåíüêàÿ✲áóêâà | áîëüøàÿ✲áóêâà | öèôðà | ✬ } çàðåçåðâèðîâàííûé✲èäåíòèôèêàòîð → ❝❛s❡ | ❝❧❛ss | ❞❛t❛ | ❞❡❢❛✉❧t | ❞❡r✐✈✐♥❣ | ❞♦ | ❡❧s❡ | ✐❢ | ✐♠♣♦rt | ✐♥ | ✐♥❢✐① | ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥st❛♥❝❡ | ❧❡t | ♠♦❞✉❧❡ | ♥❡✇t②♣❡ | ♦❢ | t❤❡♥ | t②♣❡ | ✇❤❡r❡ | ❴
✷✳✹✳
✶✸
➮➘➴❮Ò➮Ô➮✃➚Ò❰ÐÛ ➮ ❰Ï➴Ð➚Ò❰ÐÛ
➮äåíòèôèêàòîð ñîñòîèò èç áóêâû✱ çà êîòîðîé ñëåäóåò íîëü èëè áîëåå áóêâ✱ öèôð✱ ñèìâîëîâ ïîä÷åðêèâàíèÿ è îäèíàðíûõ êàâû÷åê✳ ➮äåíòèôèêàòîðû ëåêñè÷åñêè äåëÿòñÿ íà
äâà
áóêâû
ïðîñòðàíñòâà
èìåí
✭èäåíòèôèêàòîðû
✭ðàçäåë
✶✳✹✮✿
ïåðåìåííûõ✮✱
è
òå✱
êîòîðûå
íà÷èíàþòñÿ
ñî
ñòðî÷íîé
òå✱
êîòîðûå
íà÷èíàþòñÿ
ñ
çàãëàâíîé
áóêâû ✭èäåíòèôèêàòîðû êîíñòðóêòîðîâ✮✳ ➮äåíòèôèêàòîðû çàâèñÿò îò ðåãèñòðà áóêâ✿
♥❛♠❡✱ ♥❛▼❡
è
◆❛♠❡
✖ ýòî òðè ðàçëè÷íûõ èäåíòèôèêàòîðà ✭ïåðâûå äâà ÿâëÿþòñÿ
èäåíòèôèêàòîðàìè ïåðåìåííûõ✱ ïîñëåäíèé ✖ èäåíòèôèêàòîðîì êîíñòðóêòîðà✮✳ Ñèìâîë ïîä÷åðêèâàíèÿ ✏ ❴✑ ðàññìàòðèâàåòñÿ êàê ñòðî÷íàÿ áóêâà✱ è ìîæåò ïîÿâëÿòüñÿ
âåçäå✱ ãäå ìîæåò ïîÿâëÿòüñÿ ñòðî÷íàÿ áóêâà✳ Òåì íå ìåíåå✱ ✏ ❴✑ ñàì ïî ñåáå ÿâëÿåòñÿ çàðåçåðâèðîâàííûì èäåíòèôèêàòîðîì✱ êîòîðûé èñïîëüçóåòñÿ äëÿ îáîçíà÷åíèÿ ãðóïïû ëþáûõ î
ñèìâîëîâ
â
íåèñïîëüçîâàííûõ
äëÿ
îáðàçöàõ✳
✃îìïèëÿòîðû✱
èäåíòèôèêàòîðàõ✱
èäåíòèôèêàòîðîâ✱
íà÷èíàþùèõñÿ
êîòîðûå
ïîäàâëÿþò ñ
ñèìâîëà
âûâîäÿò
âûâîä
ïðåäóïðåæäåíèÿ
òàêèõ
ïðåäóïðåæäåíèé
ïîä÷åðêèâàíèÿ✳
Ýòî
ïîçâîëÿåò
ïðîãðàììèñòàì èñïîëüçîâàòü ✏ ❴❢♦♦✑ äëÿ ïàðàìåòðà✱ êîòîðûé✱ êàê îíè îæèäàþò✱ íå áóäåò èñïîëüçîâàòüñÿ✳
varsym → consym → reservedop →
( symbol {symbol | ✿} )hreservedop | dashesi (✿ {symbol | ✿})hreservedopi ✳✳ | ✿ | ✿✿ | ❂ | ❭ | ⑤ | ❁✲ | ✲❃ | ❅ | ⑦ | ❂❃
Ïåðåâîä✿
→ {ñèìâîë | ✿} )hçàðåçåðâèðîâàííûé✲îïåðàòîð ñèìâîë✲êîíñòðóêòîðà → (✿ {ñèìâîë | ✿})hçàðåçåðâèðîâàííûé✲îïåðàòîði çàðåçåðâèðîâàííûé✲îïåðàòîð → ✳✳ | ✿ | ✿✿ | ❂ | ❭ | ⑤ | ❁✲ | ✲❃ | ❅ | ⑦ | ❂❃ ñèìâîë✲ïåðåìåííîé
(
ñèìâîë
|
òèðåi
Ñèìâîëû îïåðàòîðîâ îáðàçóþòñÿ èç îäíîãî èëè áîëåå ñèìâîëîâ✱ â ñîîòâåòñòâèè ñ ïðèâåäåííûì âûøå îïðåäåëåíèåì✱ è ëåêñè÷åñêè äåëÿòñÿ íà äâà ïðîñòðàíñòâà èìåí ✭ðàçäåë ✶✳✹✮✿
•
Ñèìâîë îïåðàòîðà✱ íà÷èíàþùèéñÿ ñ äâîåòî÷èÿ✱ îáîçíà÷àåò êîíñòðóêòîð✳
•
Ñèìâîë îïåðàòîðà✱ íà÷èíàþùèéñÿ ñ ëþáîãî äðóãîãî ñèìâîëà✱ îáîçíà÷àåò îáû÷íûé èäåíòèôèêàòîð✳
➬àìåòüòå✱
÷òî
ñàìî
ïî
ñåáå
äâîåòî÷èå
✏ ✿✑
çàðåçåðâèðîâàíî
èñêëþ÷èòåëüíî
äëÿ
èñïîëüçîâàíèÿ â êà÷åñòâå êîíñòðóêòîðà ñïèñêîâ â ❍❛s❦❡❧❧❀ ýòî äåëàåò èõ èíòåðïðåòàöèþ åäèíîîáðàçíîé ñ äðóãèìè ÷àñòÿìè ñèíòàêñèñà ñïèñêà✱ êàê íàïðèìåð ✏ ❬❪✑ è ✏ ❬❛✱❜❪✑✳ ➬à èñêëþ÷åíèåì ñïåöèàëüíîãî ñèíòàêñèñà äëÿ ïðåôèêñíîãî îòðèöàíèÿ✱ âñå îñòàëüíûå îïåðàòîðû
ÿâëÿþòñÿ
èíôèêñíûìè✱
õîòÿ
êàæäûé
èíôèêñíûé
îïåðàòîð
ìîæíî
✶✹
➹❐➚➶➚ ✷✳
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
èñïîëüçîâàòü â ñå÷åíèè äëÿ âûïîëíåíèÿ ÷àñòè÷íîãî ïðèìåíåíèÿ îïåðàòîðîâ ✭ñì✳ ðàçäåë ✸✳✺✮✳ ➶ñå ñòàíäàðòíûå èíôèêñíûå îïåðàòîðû ÿâëÿþòñÿ ïðîñòî ïðåäîïðåäåëåííûìè ñèìâîëàìè è ìîãóò èñïîëüçîâàòüñÿ â ñâÿçûâàíèè èìåí✳ ➶ îñòàâøåéñÿ ÷àñòè îïèñàíèÿ áóäóò èñïîëüçîâàòüñÿ øåñòü ðàçëè÷íûõ âèäîâ èìåí✿ varid conid tyvar tycon tycls modid
→ → → →
ïåðåìåííûå) êîíñòðóêòîðû) ïåðåìåííûå òèïîâ) êîíñòðóêòîðû òèïîâ) êëàññû òèïîâ) ìîäóëè)
( ( ( ( ( (
varid conid conid conid
Ïåðåâîä✿ èäåíòèôèêàòîð✲ïåðåìåííîé
ïåðåìåííûå)
(
èäåíòèôèêàòîð✲êîíñòðóêòîðà
êîíñòðóêòîðû)
(
ïåðåìåííàÿ✲òèïà
→
èäåíòèôèêàòîð✲ïåðåìåííîé
ïåðåìåííûå òèïîâ)
(
êîíñòðóêòîð✲òèïà
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
êîíñòðóêòîðû òèïîâ)
(
êëàññ✲òèïà
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
êëàññû òèïîâ)
(
èäåíòèôèêàòîð✲ìîäóëÿ
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
ìîäóëè)
(
Ïåðåìåííûå è ïåðåìåííûå òèïîâ ïðåäñòàâëÿþòñÿ èäåíòèôèêàòîðàìè✱ íà÷èíàþùèìèñÿ ñ ìàëåíüêèõ áóêâ✱ à îñòàëüíûå ÷åòûðå ✖ èäåíòèôèêàòîðàìè✱ íà÷èíàþùèìèñÿ ñ áîëüøèõ áóêâ❀ òàêæå✱ ïåðåìåííûå è êîíñòðóêòîðû èìåþò èíôèêñíûå ôîðìû✱ îñòàëüíûå ÷åòûðå ✖ íåò✳ Ïðîñòðàíñòâà èìåí òàêæå ðàññìàòðèâàþòñÿ â ðàçäåëå ✶✳✹✳ ➶ îïðåäåëåííûõ îáñòîÿòåëüñòâàõ èìÿ ìîæåò áûòü ñíàáæåíî íåîáÿçàòåëüíûì êâàëèôèêàòîðîì✱ ò✳å✳ áûòü êâàëèôèöèðîâàíî✱ ïîñðåäñòâîì ïðèñîåäèíåíèÿ ê íåìó ñëåâà èäåíòèôèêàòîðà ìîäóëÿ✳ Ýòî îòíîñèòñÿ ê èìåíàì ïåðåìåííûõ✱ êîíñòðóêòîðîâ✱ êîíñòðóêòîðîâ òèïîâ è êëàññîâ òèïîâ✱ íî íå îòíîñèòñÿ ê ïåðåìåííûì òèïîâ èëè èìåíàì ìîäóëåé✳ ✃âàëèôèöèðîâàííûå èìåíà ïîäðîáíî ðàññìàòðèâàþòñÿ â ãëàâå ✺✳ qvarid
→
[modid ✳] varid
✷✳✺✳
✶✺
×➮Ñ❐❰➶Û➴ ❐➮Ò➴Ð➚❐Û
qconid qtycon qtycls qvarsym qconsym
→ → → → →
[modid [modid [modid [modid [modid
✳] ✳] ✳] ✳] ✳]
conid tycon tycls varsym consym
Ïåðåâîä✿ êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
èäåíòèôèêàòîð✲ïåðåìåííîé
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð✲òèïà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
êëàññ✲òèïà
êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
êîíñòðóêòîð✲òèïà
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
ñèìâîë✲ïåðåìåííîé
êâàëèôèöèðîâàííûé✲ñèìâîë✲êîíñòðóêòîðà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
→
ñèìâîë✲êîíñòðóêòîðà
Òàê êàê êâàëèôèöèðîâàííîå èìÿ ÿâëÿåòñÿ ëåêñåìîé✱ ïðîáåëû íåäîïóñòèìû ìåæäó êâàëèôèêàòîðîì è èìåíåì✳ Ïðèìåðû ëåêñè÷åñêîãî àíàëèçà ïðèâåäåíû íèæå✳ Ýòî èíòåðïðåòèðóåòñÿ êàê ❢✳❣ ❢ ✳ ❣ ✭òðè òîêåíà✮ ❋✳❣ ❋✳❣ ✭êâàëèôèöèðîâàííîå ❵❣✬✮ ❢✳✳ ❢ ✳✳ ✭äâà òîêåíà✮ ❋✳✳ ❋✳✳ ✭êâàëèôèöèðîâàííûé ❵✳✬✮ ❋✳ ❋ ✳ ✭äâà òîêåíà✮ ✃âàëèôèêàòîð íå èçìåíÿåò ñèíòàêñè÷åñêóþ èíòåðïðåòàöèþ èìåíè❀ íàïðèìåð✱ Pr❡❧✉❞❡✳✰ ✖ ýòî èíôèêñíûé îïåðàòîð òîé æå àññîöèàòèâíîñòè è òîãî æå ïðèîðèòåòà✱ ÷òî è îïðåäåëåíèå ✰ â Pr❡❧✉❞❡ ✭ðàçäåë ✹✳✹✳✷✮✳ ✷✳✺
×èñëîâûå ëèòåðàëû
decimal → octal → hexadecimal→
digit{digit} octit{octit} hexit{hexit}
✶✻
➹❐➚➶➚ ✷✳
integer
→ | |
decimal ✵♦ octal | ✵❖ octal ✵① hexadecimal | ✵❳ hexadecimal
float
→ |
decimal ✳ decimal [exponent] decimal exponent
exponent
→
(❡ | ❊) [✰ | ✲] decimal
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
Ïåðåâîä✿ äåñÿòè÷íûé✲ëèòåðàë
→
öèôðà④öèôðà⑥ âîñüìèðè÷íûé✲ëèòåðàë
→
âîñüìèðè÷íàÿ✲öèôðà{âîñüìèðè÷íàÿ✲öèôðà} øåñòíàäöàòèðè÷íûé✲ëèòåðàë
→
øåñòíàäöàòèðè÷íàÿ✲öèôðà{øåñòíàäöàòèðè÷íàÿ✲öèôðà}
öåëûé✲ëèòåðàë
→
äåñÿòè÷íûé✲ëèòåðàë
| | | |
✵♦ ✵❖ ✵① ✵❳
âîñüìèðè÷íûé✲ëèòåðàë âîñüìèðè÷íûé✲ëèòåðàë øåñòíàäöàòèðè÷íûé✲ëèòåðàë øåñòíàäöàòèðè÷íûé✲ëèòåðàë
ëèòåðàë✲ñ✲ïëàâàþùåé✲òî÷êîé äåñÿòè÷íûé✲ëèòåðàë
|
✳
→
äåñÿòè÷íûé✲ëèòåðàë [ýêñïîíåíòà]
äåñÿòè÷íûé✲ëèòåðàë ýêñïîíåíòà
→ (❡ | ❊) [✰ | ✲]
ýêñïîíåíòà
äåñÿòè÷íûé✲ëèòåðàë
➴ñòü äâà ðàçëè÷íûõ âèäà ÷èñëîâûõ ëèòåðàëîâ✿ öåëûå è ñ ïëàâàþùåé òî÷êîé✳ Öåëûå ëèòåðàëû ìîæíî çàäàâàòü â äåñÿòè÷íîé ✭ïî óìîë÷àíèþ✮✱ âîñüìèðè÷íîé ✭íà÷èíàåòñÿ ñ
✵♦
èëè
✵❖✮
èëè øåñòíàäöàòèðè÷íîé çàïèñè ✭íà÷èíàåòñÿ ñ
✵①
èëè
✵❳✮✳
❐èòåðàëû
ñ ïëàâàþùåé òî÷êîé âñåãäà ÿâëÿþòñÿ äåñÿòè÷íûìè✳ ❐èòåðàë ñ ïëàâàþùåé òî÷êîé äîëæåí ñîäåðæàòü öèôðû è ïåðåä✱ è ïîñëå äåñÿòè÷íîé òî÷êè❀ ýòî ãàðàíòèðóåò✱ ÷òî äåñÿòè÷íàÿ òî÷êà íå áóäåò îøèáî÷íî ïðèíÿòà çà äðóãîå èñïîëüçîâàíèå ñèìâîëà òî÷êà✳ ❰òðèöàòåëüíûå ÷èñëîâûå ëèòåðàëû ðàññìàòðèâàþòñÿ â ðàçäåëå ✸✳✹✳ Òèïèçàöèÿ ÷èñëîâûõ ëèòåðàëîâ ðàññìàòðèâàåòñÿ â ðàçäåëå ✻✳✹✳✶✳
✷✳✻✳
Ñ➮❒➶❰❐Ü❮Û➴ ➮ ÑÒÐ❰✃❰➶Û➴ ❐➮Ò➴Ð➚❐Û
✷✳✻
✶✼
Ñèìâîëüíûå è ñòðîêîâûå ëèòåðàëû
char string escape charesc ascii
cntrl gap
→ → → → → | | | → →
✬ (graphich✬ | ❭i | space | escapeh❭✫i ) ✬ ✧ {graphich✧ | ❭i | space | escape | gap} ✧ ❭ ( charesc | ascii | decimal | ♦ octal | ① hexadecimal ) ❛|❜|❢|♥|r|t|✈|❭|✧|✬|✫ ❫cntrl | ◆❯▲ | ❙❖❍ | ❙❚❳ | ❊❚❳ | ❊❖❚ | ❊◆◗ | ❆❈❑ ❇❊▲ | ❇❙ | ❍❚ | ▲❋ | ❱❚ | ❋❋ | ❈❘ | ❙❖ | ❙■ | ❉▲❊ ❉❈✶ | ❉❈✷ | ❉❈✸ | ❉❈✹ | ◆❆❑ | ❙❨◆ | ❊❚❇ | ❈❆◆ ❊▼ | ❙❯❇ | ❊❙❈ | ❋❙ | ●❙ | ❘❙ | ❯❙ | ❙P | ❉❊▲ ascLarge | @ | ❬ | ❭ | ❪ | ❫ | ❴ ❭ whitechar {whitechar } ❭
Ïåðåâîä✿
→ ✬ (ãðàôè÷åñêèé✲ñèìâîëh✬ | ❭i | ïðîáåë | ýñêåéï✲ñèìâîëh❭✫i ) ✬ ñòðîêîâûé✲ëèòåðàë → ✧ {ãðàôè÷åñêèé✲ñèìâîëh✧ | ❭i | ïðîáåë | ýñêåéï✲ñèìâîë | ðàçðûâ} ✧ ýñêåéï✲ñèìâîë → ❭ ( ñèìâîë✲ýñêåéï | ñèìâîë✲❛s❝✐✐ | äåñÿòè÷íûé✲ëèòåðàë | ♦ âîñüìèðè÷íûé✲ëèòåðàë | ① øåñòíàäöàòèðè÷íûé✲ëèòåðàë ) ñèìâîë✲ýñêåéï → ❛|❜|❢|♥|r|t|✈|❭|✧|✬|✫ ñèìâîë✲❛s❝✐✐ → ❫óïðàâëÿþùèé✲ñèìâîë | ◆❯▲ | ❙❖❍ | ❙❚❳ | ❊❚❳ | ❊❖❚ | ❊◆◗ | ❆❈❑ | ❇❊▲ | ❇❙ | ❍❚ | ▲❋ | ❱❚ | ❋❋ | ❈❘ | ❙❖ | ❙■ | ❉▲❊ | ❉❈✶ | ❉❈✷ | ❉❈✸ | ❉❈✹ | ◆❆❑ | ❙❨◆ | ❊❚❇ | ❈❆◆ | ❊▼ | ❙❯❇ | ❊❙❈ | ❋❙ | ●❙ | ❘❙ | ❯❙ | ❙P | ❉❊▲ óïðàâëÿþùèé✲ñèìâîë → áîëüøàÿ✲áóêâà✲❆❙❈■■ | @ | ❬ | ❭ | ❪ | ❫ | ❴ ðàçðûâ → ❭ ïðîáåëüíûé✲ñèìâîë {ïðîáåëüíûé✲ñèìâîë} ❭ ñèìâîëüíûé✲ëèòåðàë
Ñèìâîëüíûå ëèòåðàëû çàïèñûâàþòñÿ ìåæäó îäèíàðíûìè êàâû÷êàìè✱ êàê íàïðèìåð ✬❛✬✱ à ñòðîêè ✖ ìåæäó äâîéíûìè êàâû÷êàìè✱ êàê íàïðèìåð ✧❍❡❧❧♦✧✳ Ýñêåéï✲êîäû ìîæíî èñïîëüçîâàòü â ñèìâîëàõ è ñòðîêàõ äëÿ ïðåäñòàâëåíèÿ ñïåöèàëüíûõ ñèìâîëîâ✳ ❰áðàòèòå âíèìàíèå✱ ÷òî îäèíàðíóþ êàâû÷êó ✬ ìîæíî èñïîëüçîâàòü âíóòðè ñòðîêè êàê åñòü✱ íî äëÿ òîãî✱ ÷òîáû èñïîëüçîâàòü åå âíóòðè ñèìâîëà✱ íåîáõîäèìî çàïèñàòü ïåðåä íåé ñèìâîë îáðàòíîé êîñîé ÷åðòû ✭❭✮✳ ➚íàëîãè÷íî✱ äâîéíóþ êàâû÷êó ✧ ìîæíî èñïîëüçîâàòü âíóòðè ñèìâîëà êàê åñòü✱ íî âíóòðè ñòðîêè îíà äîëæíà ïðåäâàðÿòüñÿ ñèìâîëîì îáðàòíîé êîñîé ÷åðòû✳ ❭ âñåãäà äîëæåí ïðåäâàðÿòüñÿ ñèìâîëîì îáðàòíîé êîñîé ÷åðòû✳ ✃àòåãîðèÿ charesc (ñèìâîë✲ýñêåéï)
✶✽
➹❐➚➶➚ ✷✳
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
òàêæå âêëþ÷àåò ïåðåíîñèìûå ïðåäñòàâëåíèÿ äëÿ ñèìâîëîâ ✏òðåâîãà✑ ✭❭❛✮✱ ✏çàáîé✑ ✭❭❜✮✱
✏ïåðåâîä ñòðàíèöû✑ ✭❭❢✮✱ ✏íîâàÿ ñòðîêà✑ ✭❭♥✮✱ ✏âîçâðàò êàðåòêè✑ ✭❭r✮✱ ✏ãîðèçîíòàëüíàÿ òàáóëÿöèÿ✑ ✭❭t✮ è ✏âåðòèêàëüíàÿ òàáóëÿöèÿ✑ ✭❭✈✮✳ Ýñêåéï✲ñèìâîëû
❭❫❳✱
êàê
❭✶✸✼✱ ✶✸✼❀
òàêæå
äëÿ
êîäèðîâêè
ïðåäóñìîòðåíû✳
èñïîëüçóþòñÿ âîñüìèðè÷íûå
äëÿ
❯♥✐❝♦❞❡✱
îáîçíà÷åíèÿ
✭íàïðèìåð✱
âêëþ÷àÿ
×èñëîâûå
ñèìâîëà
❭♦✶✸✼✮
è
ñèìâîëû
óïðàâëåíèÿ✱
ýñêåéï✲ïîñëåäîâàòåëüíîñòè✱ ñ
äåñÿòè÷íûì
øåñòíàäöàòèðè÷íûå
òàêèå
òàêèå
êàê
ïðåäñòàâëåíèåì
✭íàïðèìåð✱
❭①✸✼✮
ïðåäñòàâëåíèÿ òàêæå äîïóñòèìû✳ Ñîãëàñóþùèåñÿ ñ ïðàâèëîì ✏ìàêñèìàëüíîãî ïîòðåáëåíèÿ✑✱ ÷èñëîâûå ýñêåéï✲ñèìâîëû â ñòðîêàõ ñîñòîÿò èçî âñåõ ïîñëåäîâàòåëüíûõ öèôð è ìîãóò èìåòü ïðîèçâîëüíóþ
✧❭❙❖❍✧ ïðè ðàçáîðå ❭✫ ïðåäóñìîòðåí êàê ✏ïóñòîé ñòðîê✱ êàê ✧❭✶✸✼❭✫✾✧ è ✧❭❙❖❭✫❍✧ ✭îáå à ñèìâîë ✬❭✫✬ íåäîïóñòèì✳ ➘àëüíåéøèå
äëèíó✳ ➚íàëîãè÷íî✱ åäèíñòâåííûé íåîäíîçíà÷íûé ýñêåéï✲êîä ❆❙❈■■ èíòåðïðåòèðóåòñÿ êàê ñòðîêà äëèíû ✶✳ Ýñêåéï✲ñèìâîë ñèìâîë✑✱ ÷òîáû ïîçâîëèòü ñîçäàíèå òàêèõ äëèíû äâà✮✳ Ïîýòîìó
✧❭✫✧
ýêâèâàëåíòåí ✱
ýêâèâàëåíòíîñòè ñèìâîëîâ îïðåäåëåíû â ðàçäåëå ✻✳✶✳✷✳ Ñòðîêà
ìîæåò
âêëþ÷àòü
✏ðàçðûâ✑
✖
äâå
îáðàòíûå
êîñûå
÷åðòû✱
îêðóæåííûå
ïðîáåëüíûìè ñèìâîëàìè✱ êîòîðûå èãíîðèðóþòñÿ✳ Ýòî ïîçâîëÿåò çàïèñûâàòü äëèííûå ïðîãðàììíûå ñòðîêè íà áîëåå ÷åì îäíîé ñòðîêå ôàéëà✱ äëÿ ýòîãî íàäî äîáàâëÿòü îáðàòíóþ êîñóþ ÷åðòó ✭áýêñëýø✮ â êîíåö êàæäîé ñòðîêè ôàéëà è â íà÷àëå ñëåäóþùåé✳ ❮àïðèìåð✱
✧Ýòî áýêñëýø ❭❭✱ òàê æå êàê ❭✶✸✼ ✲✲✲ ❭ ❭ ÷èñëîâîé ýñêåéï✲ñèìâîë è ❭❫❳ ✲✲✲ óïðàâëÿþùèé ñèìâîë✳✧ Ñòðîêîâûå ëèòåðàëû â äåéñòâèòåëüíîñòè ÿâëÿþòñÿ êðàòêîé çàïèñüþ äëÿ ñïèñêîâ ñèìâîëîâ ✭ñì✳ ðàçäåë ✸✳✼✮✳
✷✳✼
Ðàçìåùåíèå
➶ ❍❛s❦❡❧❧ ðàçðåøåíî îïóñêàòü ôèãóðíûå ñêîáêè è òî÷êè ñ çàïÿòîé✱ èñïîëüçóåìûå â íåñêîëüêèõ ïðàâèëàõ âûâîäà ãðàììàòèêè✱ ïîñðåäñòâîì èñïîëüçîâàíèÿ îïðåäåëåííîãî
ðàçìåùåíèÿ
òåêñòà ïðîãðàììû ñ òåì✱ ÷òîáû îòðàçèòü òó æå ñàìóþ èíôîðìàöèþ✳
Ýòî ïîçâîëÿåò èñïîëüçîâàòü è çàâèñÿùèé îò ðàçìåùåíèÿ òåêñòà✱ è íå çàâèñÿùèé îò ðàçìåùåíèÿ òåêñòà ñòèëè íàïèñàíèÿ êîäà✱ êîòîðûå ìîæíî ñâîáîäíî ñìåøèâàòü â îäíîé ïðîãðàììå✳ Ïîñêîëüêó íå òðåáóåòñÿ ðàñïîëàãàòü òåêñò îïðåäåëåííûì îáðàçîì✱ ïðîãðàììû íà ❍❛s❦❡❧❧ ìîæíî íåïîñðåäñòâåííî ãåíåðèðîâàòü äðóãèìè ïðîãðàììàìè✳ ➶ëèÿíèå
ðàçìåùåíèÿ
òåêñòà
ïðîãðàììû
íà
ñìûñë
ïðîãðàììû
íà
❍❛s❦❡❧❧
ìîæíî
ïîëíîñòüþ óñòàíîâèòü ïóòåì äîáàâëåíèÿ ôèãóðíûõ ñêîáîê è òî÷åê ñ çàïÿòîé â ìåñòàõ✱ îïðåäåëÿåìûõ ðàçìåùåíèåì✳ Ñìûñë òàêîãî äîïîëíåíèÿ ïðîãðàììû ñîñòîèò â òîì✱ ÷òîáû ñäåëàòü åå íå çàâèñèìîé îò ðàçìåùåíèÿ òåêñòà✳
✷✳✼✳
✶✾
Ð➚➬❒➴Ù➴❮➮➴
➪óäó÷è íåîôèöèàëüíî çàÿâëåííûìè✱ ôèãóðíûå ñêîáêè è òî÷êè ñ çàïÿòîé äîáàâëÿþòñÿ ñëåäóþùèì îáðàçîì✳ Ïðàâèëî ðàçìåùåíèÿ òåêñòà ✭èëè ïðàâèëî ✏âíå èãðû✑✮ âñòóïàåò â ñèëó âñÿêèé ðàç✱ êîãäà îòêðûòàÿ ôèãóðíàÿ ñêîáêà ïðîïóùåíà ïîñëå êëþ÷åâîãî
✇❤❡r❡✱ ❧❡t✱ ❞♦
ñëîâà
♦❢✳
èëè
✃îãäà
ýòî
ñëó÷àåòñÿ✱
îòñòóï
ñëåäóþùåé
ëåêñåìû
✭íåâàæíî íà íîâîé ñòðîêå èëè íåò✮ çàïîìèíàåòñÿ✱ è âñòàâëÿåòñÿ ïðîïóùåííàÿ îòêðûòàÿ ôèãóðíàÿ ñêîáêà ✭ïðîáåëüíûå ñèìâîëû✱ ïðåäøåñòâóþùèå ëåêñåìå✱ ìîãóò âêëþ÷àòü êîììåíòàðèè✮✳ ➘ëÿ êàæäîé ïîñëåäóþùåé ñòðîêè âûïîëíÿåòñÿ ñëåäóþùåå✿ åñëè îíà ñîäåðæèò òîëüêî ïðîáåëüíûå ñèìâîëû èëè áîëüøèé îòñòóï✱ ÷åì ïðåäûäóùèé ýëåìåíò✱ òî ýòî îçíà÷àåò✱ ÷òî ïðîäîëæàåòñÿ ïðåäûäóùèé ýëåìåíò ✭íè÷åãî íå äîáàâëÿåòñÿ✮❀ åñëè
ñòðîêà
èìååò
òîò
æå
îòñòóï✱
ýòî
îçíà÷àåò✱
÷òî
íà÷èíàåòñÿ
íîâûé
ýëåìåíò
✭âñòàâëÿåòñÿ òî÷êà ñ çàïÿòîé✮❀ åñëè ñòðîêà èìååò ìåíüøèé îòñòóï✱ òî ýòî îçíà÷àåò✱ ÷òî ýàêîí÷èëñÿ ñïèñîê ðàçìåùåíèÿ ✭âñòàâëÿåòñÿ çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà✮✳ ➴ñëè îòñòóï ëåêñåìû áåç ôèãóðíûõ ñêîáîê✱ êîòîðàÿ ñëåäóåò íåïîñðåäñòâåííî çà
✇❤❡r❡✱ ❧❡t✱ ❞♦
èëè
♦❢✱
ìåíüøå ÷åì èëè ðàâåí òåêóùåìó óðîâíþ óãëóáëåíèÿ✱ òî
âìåñòî íà÷àëà ðàçìåùåíèÿ âñòàâëÿåòñÿ ïóñòîé ñïèñîê ✏ ④⑥✑ è îáðàáîòêà ðàçìåùåíèÿ âûïîëíÿåòñÿ äëÿ òåêóùåãî óðîâíÿ ✭ò✳å✳ âñòàâëÿåòñÿ òî÷êà ñ çàïÿòîé èëè çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà✮✳ ➬àêðûâàþùàÿ ôèãóðíàÿ ñêîáêà òàêæå âñòàâëÿåòñÿ âñÿêèé ðàç✱ êîãäà çàêàí÷èâàåòñÿ ñèíòàêñè÷åñêàÿ êàòåãîðèÿ✱ ñîäåðæàùàÿ ñïèñîê ðàçìåùåíèÿ❀ òî åñòü
åñëè
íåïðàâèëüíàÿ
ëåêñåìà
âñòðåòèòñÿ
â
ìåñòå✱
ãäå
áûëà
áû
ïðàâèëüíîé
çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà✱ âñòàâëÿåòñÿ çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà✳ Ïðàâèëî ðàçìåùåíèÿ äîáàâëÿåò çàêðûâàþùèå ôèãóðíûå ñêîáêè✱ êîòîðûå ñîîòâåòñòâóþò òîëüêî òåì îòêðûòûì ôèãóðíûì ñêîáêàì✱ êîòîðûå áûëè äîáàâëåíû ñîãëàñíî ýòîìó ïðàâèëó❀ ÿâíàÿ
îòêðûòàÿ
ôèãóðíîé
ñêîáêå✳
ôèãóðíàÿ ➶
ñêîáêà
ïðåäåëàõ
ýòèõ
äîëæíà ÿâíûõ
ñîîòâåòñòâîâàòü îòêðûòûõ
ÿâíîé
ôèãóðíûõ
çàêðûâàþùåé
ñêîáîê✱
íèêàêàÿ
îáðàáîòêà ðàçìåùåíèÿ íå âûïîëíÿåòñÿ äëÿ êîíñòðóêöèé âíå ôèãóðíûõ ñêîáîê✱ äàæå åñëè ñòðîêà âûðàâíåíà ëåâåå ✭èìååò ìåíüøèé îòñòóï✮ áîëåå ðàííåé íåÿâíîé îòêðûòîé ôèãóðíîé ñêîáêè✳ ➶ ðàçäåëå ✾✳✸ äàíî áîëåå òî÷íîå îïðåäåëåíèå ïðàâèë ðàçìåùåíèÿ✳ Ñîãëàñíî ýòèì ïðàâèëàì✱ îòäåëüíûé ñèìâîë íîâîé ñòðîêè íà ñàìîì äåëå ìîæåò çàâåðøèòü íåñêîëüêî ñïèñêîâ ðàçìåùåíèÿ✳ Òàêæå ýòè ïðàâèëà ðàçðåøàþò✿
❢ ① ❂ ❧❡t ❛ ❂ ✶❀ ❜ ❂ ✷ ❣ ② ❂ ❡①♣✷ ✐♥ ❡①♣✶ äåëàÿ
❛✱ ❜
è
❣
÷àñòüþ îäíîãî è òîãî æå ñïèñêà ðàçìåùåíèÿ✳
➶ êà÷åñòâå ïðèìåðà íà ðè❝✳ ✷✳✶ èçîáðàæåí ✭íåñêîëüêî çàïóòàííûé✮ ìîäóëü✱ à íà ðè❝✳ ✷✳✷ ïîêàçàí ðåçóëüòàò ïðèìåíåíèÿ ê íåìó ïðàâèëà ðàçìåùåíèÿ✳ ❰áðàòèòå âíèìàíèå✱ â ÷àñòíîñòè✱ íà✿ ✭❛✮ ñòðîêó✱ íà÷èíàþùóþ
⑥⑥❀♣♦♣✱
â êîòîðîé çàâåðøåíèå ïðåäûäóùåé
ñòðîêè âûçûâàåò òðè ïðèìåíåíèÿ ïðàâèëà ðàçìåùåíèÿ✱ ñîîòâåòñòâóþùèõ ãëóáèíå ✭✸✮ âëîæåííîé èíñòðóêöèè
✇❤❡r❡✱
✇❤❡r❡✱
✭❜✮ çàêðûâàþùèå ôèãóðíûå ñêîáêè â èíñòðóêöèè
âëîæåííîé â ïðåäåëàõ êîðòåæà è
❝❛s❡✲âûðàæåíèÿ✱
âñòàâëåííûå ïîòîìó✱ ÷òî
áûë îáíàðóæåí êîíåö êîðòåæà✱ è ✭❝✮ çàêðûâàþùóþ ôèãóðíóþ ñêîáêó â ñàìîì êîíöå✱ âñòàâëåííóþ èç✲çà íóëåâîãî îòñòóïà ëåêñåìû êîíöà ôàéëà✳
✷✵
➹❐➚➶➚ ✷✳
❐➴✃Ñ➮×➴Ñ✃➚ß ÑÒÐÓ✃ÒÓÐ➚
♠♦❞✉❧❡ ❆❙t❛❝❦✭ ❙t❛❝❦✱ ♣✉s❤✱ ♣♦♣✱ t♦♣✱ s✐③❡ ✮ ✇❤❡r❡ ❞❛t❛ ❙t❛❝❦ ❛ ❂ ❊♠♣t② ⑤ ▼❦❙t❛❝❦ ❛ ✭❙t❛❝❦ ❛✮ ♣✉s❤ ✿✿ ❛ ✲❃ ❙t❛❝❦ ❛ ✲❃ ❙t❛❝❦ ❛ ♣✉s❤ ① s ❂ ▼❦❙t❛❝❦ ① s s✐③❡ ✿✿ ❙t❛❝❦ ❛ ✲❃ ■♥t s✐③❡ s ❂ ❧❡♥❣t❤ ✭st❦❚♦▲st s✮ ✇❤❡r❡ st❦❚♦▲st ❊♠♣t② ❂ ❬❪ st❦❚♦▲st ✭▼❦❙t❛❝❦ ① s✮ ❂ ①✿①s ✇❤❡r❡ ①s ❂ st❦❚♦▲st s ♣♦♣ ✿✿ ❙t❛❝❦ ❛ ✲❃ ✭❛✱ ❙t❛❝❦ ❛✮ ♣♦♣ ✭▼❦❙t❛❝❦ ① s✮ ❂ ✭①✱ ❝❛s❡ s ♦❢ r ✲❃ ✐ r ✇❤❡r❡ ✐ ① ❂ ①✮ ✲✲ ✭♣♦♣ ❊♠♣t②✮ ÿâëÿåòñÿ îøèáêîé t♦♣ ✿✿ ❙t❛❝❦ ❛ ✲❃ ❛ t♦♣ ✭▼❦❙t❛❝❦ ① s✮ ❂ ①
✲✲ ✭t♦♣ ❊♠♣t②✮ ÿâëÿåòñÿ îøèáêîé
Ðèñ✳ ✷✳✶✿ Ïðèìåð ïðîãðàììû
♠♦❞✉❧❡ ❆❙t❛❝❦✭ ❙t❛❝❦✱ ♣✉s❤✱ ♣♦♣✱ t♦♣✱ s✐③❡ ✮ ✇❤❡r❡ ④❞❛t❛ ❙t❛❝❦ ❛ ❂ ❊♠♣t② ⑤ ▼❦❙t❛❝❦ ❛ ✭❙t❛❝❦ ❛✮ ❀♣✉s❤ ✿✿ ❛ ✲❃ ❙t❛❝❦ ❛ ✲❃ ❙t❛❝❦ ❛ ❀♣✉s❤ ① s ❂ ▼❦❙t❛❝❦ ① s ❀s✐③❡ ✿✿ ❙t❛❝❦ ❛ ✲❃ ■♥t ❀s✐③❡ s ❂ ❧❡♥❣t❤ ✭st❦❚♦▲st s✮ ✇❤❡r❡ ④st❦❚♦▲st ❊♠♣t② ❂ ❬❪ ❀st❦❚♦▲st ✭▼❦❙t❛❝❦ ① s✮ ❂ ①✿①s ✇❤❡r❡ ④①s ❂ st❦❚♦▲st s ⑥⑥❀♣♦♣ ✿✿ ❙t❛❝❦ ❛ ✲❃ ✭❛✱ ❙t❛❝❦ ❛✮ ❀♣♦♣ ✭▼❦❙t❛❝❦ ① s✮ ❂ ✭①✱ ❝❛s❡ s ♦❢ ④r ✲❃ ✐ r ✇❤❡r❡ ④✐ ① ❂ ①⑥⑥✮ ✲✲ ✭♣♦♣ ❊♠♣t②✮ ÿâëÿåòñÿ îøèáêîé ❀t♦♣ ✿✿ ❙t❛❝❦ ❛ ✲❃ ❛ ❀t♦♣ ✭▼❦❙t❛❝❦ ① s✮ ❂ ① ⑥
✲✲ ✭t♦♣ ❊♠♣t②✮ ÿâëÿåòñÿ îøèáêîé
Ðèñ✳ ✷✳✷✿ Ïðèìåð ïðîãðàììû✱ äîïîëíåííîé ðàçìåùåíèåì
➹ëàâà ✸
➶ûðàæåíèÿ ➶ ýòîé ãëàâå ìû îïèøåì ñèíòàêñèñ è íåôîðìàëüíóþ ñåìàíòèêó âûðàæåíèé ❍❛s❦❡❧❧✱ âêëþ÷àÿ✱ ãäå ýòî âîçìîæíî✱ èõ òðàíñëÿöèþ â ÿäðî ❍❛s❦❡❧❧✳ ➬à èñêëþ÷åíèåì
❧❡t✲
âûðàæåíèé ýòè òðàíñëÿöèè ñîõðàíÿþò è ñòàòè÷åñêóþ✱ è äèíàìè÷åñêóþ ñåìàíòèêó✳ Ñâîáîäíûå
ïåðåìåííûå
è
êîíñòðóêòîðû✱
èñïîëüçóåìûå
âñåãäà ññûëàþòñÿ íà ñóùíîñòè✱ îïðåäåëåííûå â
Pr❡❧✉❞❡✳
â
ýòèõ
òðàíñëÿöèÿõ✱
❮àïðèìåð✱ ✏ ❝♦♥❝❛t▼❛♣✑✱
èñïîëüçóåìàÿ â òðàíñëÿöèè îïèñàíèÿ ñïèñêà ✭ðàçäåë ✸✳✶✶✮✱ îáîçíà÷àåò îïðåäåëåííóþ â
Pr❡❧✉❞❡✱
❝♦♥❝❛t▼❛♣✱
íåâçèðàÿ íà òî✱ íàõîäèòñÿ ëè èäåíòèôèêàòîð ✏ ❝♦♥❝❛t▼❛♣✑
â îáëàñòè âèäèìîñòè✱ ãäå èñïîëüçóåòñÿ îïèñàíèå ñïèñêà✱ è ✭åñëè íàõîäèòñÿ â îáëàñòè âèäèìîñòè✮ ê ÷åìó îí ïðèâÿçàí✳ ➶
ñèíòàêñèñå✱
êîòîðûé
èíäåêñèðîâàííûå ➚íàëîãè÷íî✱
ñëåäóåò
óðîâíÿìè
íåòåðìèíàëû
conop (îïåðàòîð✲êîíñòðóêòîðà) ñîîòâåòñòâåííî
äëÿ
äàëåå✱
åñòü
ïðèîðèòåòà
íåêîòîðûå
✭çàïèñàííûìè
op (îïåðàòîð)✱ ìîãóò
èìåòü
ëåâîàññîöèàòèâíîñòè✱
ñåìåéñòâà êàê
íåòåðìèíàëîâ✱
âåðõíèé
èíäåêñ✮✳
varop (îïåðàòîð✲ïåðåìåííîé) è èíäåêñ✿ áóêâó l ✱ r èëè n
äâîéíîé
ïðàâîàññîöèàòèâíîñòè
èëè
àññîöèàòèâíîñòè è óðîâåíü ïðèîðèòåòà✳ Ïåðåìåííàÿ óðîâíÿ ïðèîðèòåòà â ïðåäåëàõ îò ✵ äî ✾✱ ïåðåìåííàÿ àññîöèàòèâíîñòè
a
i
îòñóòñòâèÿ èçìåíÿåòñÿ
èçìåíÿåòñÿ â äèàïàçîíå
{l , r , n}✳
❮àïðèìåð✱
aexp
→
✭ exp i+1 qop (a,i) ✮
íà ñàìîì äåëå îáîçíà÷àåò ✸✵ ïðàâèë âûâîäà ñ ✶✵ ïîäñòàíîâêàìè äëÿ
exp exp i
lexp i
→ | → | | →
exp 0 ✿✿ [context ❂❃] type exp 0 exp i+1 [qop (n,i) exp i+1 ] lexp i rexp i (lexp i | exp i+1 ) qop (l,i) exp i+1 ✷✶
(ñèãíàòóðà
i
è ✸ äëÿ
a✳
òèïà âûðàæåíèÿ)
✷✷
➹❐➚➶➚ ✸✳
lexp 6 rexp i exp 10
fexp aexp
→ → → | | | | | →
✲ exp 7 exp i+1 qop (r,i) (rexp i | exp i+1 ) ❭ apat1 . . . apatn ✲❃ exp ❧❡t decls ✐♥ exp ✐❢ exp t❤❡♥ exp ❡❧s❡ exp ❝❛s❡ exp ♦❢ ④ alts ⑥ ❞♦ ④ stmts ⑥ fexp [fexp] aexp
→ | | | | | |
qvar gcon literal ✭ exp ✮ ✭ exp1 ✱ . . . ✱ expk ✮ ❬ exp1 ✱ . . . ✱ expk ❪ ❬ exp1 [✱ exp2 ] ✳✳ [exp3 ] ❪
| | | |
❬ ✭ ✭ ✭
exp ⑤ qual1 ✱ . . . ✱ qualn ❪ exp i+1 qop (a,i) ✮ lexp i qop (l,i) ✮ (a,i) qoph✲i exp i+1 ✮
| |
✭ qoph✲i rexp i ✮ qcon ④ fbind1 ✱ . . . ✱ fbindn ⑥
|
aexphqconi ④ fbind1 ✱ . . . ✱ fbindn ⑥
(r ,i)
➶ÛÐ➚➷➴❮➮ß
(ëÿìáäà✲àáñòðàêöèÿ, n ≥ 1 ) (❧❡t✲âûðàæåíèå) (óñëîâíîå âûðàæåíèå) (❝❛s❡✲âûðàæåíèå) (❞♦✲âûðàæåíèå) (ïðèìåíåíèå
ôóíêöèè
)
(ïåðåìåííàÿ) (îáùèé êîíñòðóêòîð) (âûðàæåíèå â ñêîáêàõ) (êîðòåæ, k ≥ 2 ) (ñïèñîê, k ≥ 1 ) (àðèôìåòè÷åñêàÿ ïîñëåäîâàòåëüíîñòü) (îïèñàíèå ñïèñêà, n ≥ 1 ) (ëåâîå ñå÷åíèå) (ëåâîå ñå÷åíèå) (ïðàâîå ñå÷åíèå) (ïðàâîå ñå÷åíèå) (èìåíîâàííàÿ êîíñòðóêöèÿ✱ n ≥ 0) (èìåíîâàííîå îáíîâëåíèå✱ n ≥ 1)
Ïåðåâîä✿ âûðàæåíèå
→
✿✿ [êîíòåêñò ❂❃] òèï (ñèãíàòóðà òèïà âûðàæåíèÿ)
âûðàæåíèå
0
0 âûðàæåíèå i âûðàæåíèå → i+1 âûðàæåíèå
|
| |
[êâàëèôèöèðîâàííûé✲îïåðàòîð(n,i)
âûðàæåíèå
i+1 ]
i ëåâîå✲ñå÷åíèå✲âûðàæåíèÿ
i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿ i ëåâîå✲ñå÷åíèå✲âûðàæåíèÿ → (ëåâîå✲ñå÷åíèå✲âûðàæåíèÿi | âûðàæåíèåi+1 ) êâàëèôèöèðîâàííûé✲îïåðàòîð(l,i) i+1 âûðàæåíèå 6 ëåâîå✲ñå÷åíèå✲âûðàæåíèÿ → 7 ✲ âûðàæåíèå i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿ →
✷✸
i+1 êâàëèôèöèðîâàííûé✲îïåðàòîð(r,i) (ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿi | âûðàæåíèåi+1 )
âûðàæåíèå âûðàæåíèå
❭ | | | | |
10
→
. . . òàêîé✲êàê✲îáðàçåön ✲❃ âûðàæåíèå (ëÿìáäà✲àáñòðàêöèÿ, n ≥ 1 ) ❧❡t ñïèñêè✲îáúÿâëåíèé ✐♥ âûðàæåíèå (❧❡t✲âûðàæåíèå) ✐❢ âûðàæåíèå t❤❡♥ âûðàæåíèå ❡❧s❡ âûðàæåíèå (óñëîâíîå âûðàæåíèå) ❝❛s❡ âûðàæåíèå ♦❢ ④ ñïèñîê✲àëüòåðíàòèâ ⑥ (❝❛s❡✲âûðàæåíèå) ❞♦ ④ ñïèñîê✲èíñòðóêöèé ⑥ (❞♦✲âûðàæåíèå) òàêîé✲êàê✲îáðàçåö1
ôóíêöèîíàëüíîå✲âûðàæåíèå
→ [ôóíêöèîíàëüíîå✲âûðàæåíèå] (ïðèìåíåíèå ôóíêöèè)
ôóíêöèîíàëüíîå✲âûðàæåíèå
âûðàæåíèå✲àðãóìåíòà
âûðàæåíèå✲àðãóìåíòà
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
(ïåðåìåííàÿ) |
îáùèé✲êîíñòðóêòîð
(îáùèé êîíñòðóêòîð) | ëèòåðàë | ✭ âûðàæåíèå ✮ (âûðàæåíèå â ñêîáêàõ) | ✭ âûðàæåíèå1 ✱ . . . ✱ âûðàæåíèåk ✮ (êîðòåæ, k ≥ 2 ) | ❬ âûðàæåíèå1 ✱ . . . ✱ âûðàæåíèåk ❪ (ñïèñîê, k ≥ 1 ) | ❬ âûðàæåíèå1 [✱ âûðàæåíèå2 ] ✳✳ [âûðàæåíèå3 ] ❪ (àðèôìåòè÷åñêàÿ ïîñëåäîâàòåëüíîñòü) | ❬ âûðàæåíèå ⑤ êâàëèôèêàòîð1 ✱ . . . ✱ êâàëèôèêàòîðn ❪ (îïèñàíèå ñïèñêà, n ≥ 1 ) | ✭ âûðàæåíèåi+1 êâàëèôèöèðîâàííûé✲îïåðàòîð(a,i) ✮ (ëåâîå ñå÷åíèå) | ✭ ëåâîå✲ñå÷åíèå✲âûðàæåíèÿi êâàëèôèöèðîâàííûé✲îïåðàòîð(l,i) ✮ (ëåâîå ñå÷åíèå) (a,i) | ✭ êâàëèôèöèðîâàííûé✲îïåðàòîðh✲i âûðàæåíèåi+1 ✮ (ïðàâîå ñå÷åíèå) (r ,i) | ✭ êâàëèôèöèðîâàííûé✲îïåðàòîðh✲i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿi ✮ (ïðàâîå ñå÷åíèå) | êâàëèôèöèðîâàííûé✲êîíñòðóêòîð ④ ñâÿçûâàíèå✲èìåíè✲ïîëÿ1 ✱ . . . ✱ ñâÿçûâàíèå✲èìåíè✲ïîëÿn ⑥
✷✹
➹❐➚➶➚ ✸✳
(èìåíîâàííàÿ |
êîíñòðóêöèÿ,
➶ÛÐ➚➷➴❮➮ß
n ≥ 0)
âûðàæåíèå✲àðãóìåíòàhêâàëèôèöèðîâàííûé✲êîíñòðóêòîði
④ ñâÿçûâàíèå✲èìåíè✲ïîëÿ1 ✱ . . . ✱ (èìåíîâàííîå îáíîâëåíèå, n ≥ 1 )
ñâÿçûâàíèå✲èìåíè✲ïîëÿn
⑥
❮åîäíîçíà÷íîñòü âûðàæåíèé✱ âêëþ÷àÿ èíôèêñíûå îïåðàòîðû✱ ðàçðåøàåòñÿ ñ ïîìîùüþ àññîöèàòèâíîñòè è ïðèîðèòåòà îïåðàòîðà ✭ñì✳ ðàçäåë ✹✳✹✳✷✮✳ Ñëåäóþùèå äðóã çà äðóãîì îïåðàòîðû áåç ñêîáîê✱ èìåþùèå îäèí è òîò æå ïðèîðèòåò✱ äîëæíû áûòü îáà ëèáî ëåâîàññîöèàòèâíûìè✱ ëèáî ïðàâîàññîöèàòèâíûìè✱ âî èçáåæàíèå ñèíòàêñè÷åñêîé îøèáêè✳ ➘ëÿ çàäàííîãî âûðàæåíèÿ áåç ñêîáîê ✏ x îïåðàòîð✱ ÷àñòü ✏ x çà èñêëþ÷åíèåì
qop (a,i)
a=b= l
y✑ èëè
èëè ✏ y
qop (b,j )
z✑
qop (a,i) y qop (b,j ) z ✑✱
ãäå
qop ✖ i = j✱
ñëåäóåò âçÿòü â ñêîáêè✱ êîãäà
a = b = r✳
❰òðèöàíèå ÿâëÿåòñÿ åäèíñòâåííûì ïðåôèêñíûì îïåðàòîðîì â ❍❛s❦❡❧❧✱ îí èìååò òîò æå ïðèîðèòåò✱ ÷òî è èíôèêñíûé îïåðàòîð
✲✱
îïðåäåëåííûé â Pr❡❧✉❞❡ ✭ñì✳ ðàçäåë ✹✳✹✳✷✱
ðèñ✳ ✹✳✶✮✳ ➹ðàììàòèêà
ÿâëÿåòñÿ
íåîäíîçíà÷íîé
ïî
îòíîøåíèþ
ê
ïðîñòðàíñòâó
ëÿìáäà✲
àáñòðàêöèé✱ ❧❡t✲âûðàæåíèé è óñëîâíûõ âûðàæåíèé✳ ❮åîäíîçíà÷íîñòü ðàçðåøàåòñÿ ñ
ïîìîùüþ
ìåòà✲ïðàâèëà✱
ñîãëàñíî
êîòîðîìó
êàæäàÿ
èç
ýòèõ
êîíñòðóêöèé
ðàññìàòðèâàåòñÿ ñëåâà íàïðàâî íàñêîëüêî ýòî âîçìîæíî✳ Ïðèìåðû èíòåðïðåòàöèè ïðè ðàçáîðå ïîêàçàíû íèæå✳ Ýòî
❢ ① ✲ ❢ ❧❡t ③ ✰ ❢ ① ❭ ①
èíòåðïðåòèðóåòñÿ êàê
✰ ❣ ② ① ✰ ② ④ ✳✳✳ ⑥ ✐♥ ① ✰ ② ❧❡t ④ ✳✳✳ ⑥ ✐♥ ① ✰ ② ② ✿✿ ■♥t ✲❃ ❛✰❜ ✿✿ ■♥t
✭❢ ①✮ ✰ ✭❣ ②✮ ✭✲ ✭❢ ①✮✮ ✰ ② ❧❡t ④ ✳✳✳ ⑥ ✐♥ ✭① ✰ ②✮ ③ ✰ ✭❧❡t ④ ✳✳✳ ⑥ ✐♥ ✭① ✰ ②✮✮ ✭❢ ① ②✮ ✿✿ ■♥t ❭ ① ✲❃ ✭✭❛✰❜✮ ✿✿ ■♥t✮
➬àìå÷àíèå îòíîñèòåëüíî ðàçáîðà✳ ➶ûðàæåíèÿ✱ êîòîðûå çàòðàãèâàþò âçàèìîäåéñòâèå àññîöèàòèâíîñòè è ïðèîðèòåòîâ ñ ïðèìåíåíèåì ìåòà✲ïðàâèëà äëÿ ❧❡t✴ëÿìáäà✱ ìîãóò îêàçàòüñÿ òðóäíûìè äëÿ ðàçáîðà✳ ❮àïðèìåð✱ âûðàæåíèå
❧❡t ① ❂ ❚r✉❡ ✐♥ ① ❂❂ ① ❂❂ ❚r✉❡ íå ìîæåò îçíà÷àòü
❧❡t ① ❂ ❚r✉❡ ✐♥ ✭① ❂❂ ① ❂❂ ❚r✉❡✮ ïîòîìó ÷òî
✭❂❂✮
ÿâëÿåòñÿ íåàññîöèàòèâíûì îïåðàòîðîì✱ ïîýòîìó âûðàæåíèå äîëæíî
áûòü èíòåðïðåòèðîâàíî òàêèì îáðàçîì✿
✭❧❡t ① ❂ ❚r✉❡ ✐♥ ✭① ❂❂ ①✮✮ ❂❂ ❚r✉❡
✸✳✶✳
✷✺
❰Ø➮➪✃➮
Òåì íå ìåíåå✱ ðåàëèçàöèè ìîãóò ïðåêðàñíî îáîéòèñü äîïîëíèòåëüíûì ïðîõîäîì ïîñëå çàâåðøåíèÿ ðàçáîðà✱ ÷òîáû îáðàáîòàòü àññîöèàòèâíîñòü è ïðèîðèòåòû îïåðàòîðîâ✱ ïîýòîìó
îíè
ìîãóò
ñïîêîéíî
ïåðåäàòü
ïðåäûäóùèé
íåïðàâèëüíûé
ðàçáîð✳
❒û
ñîâåòóåì ïðîãðàììèñòàì èçáåãàòü èñïîëüçîâàíèÿ êîíñòðóêöèé✱ ÷åé ðàçáîð çàòðàãèâàåò âçàèìîäåéñòâèå
✭îòñóòñòâèÿ✮
àññîöèàòèâíîñòè
ñ
ïðèìåíåíèåì
ìåòà✲ïðàâèëà
äëÿ
❧❡t✴ëÿìáäà✳ Ðàäè ÿñíîñòè îñòàëüíàÿ ÷àñòü ýòîãî ðàçäåëà îïèñûâàåò ñèíòàêñèñ âûðàæåíèé áåç óêàçàíèÿ èõ ïðèîðèòåòîâ✳
✸✳✶
❰øèáêè
❰øèáêè âî âðåìÿ âû÷èñëåíèÿ âûðàæåíèé✱ îáîçíà÷àåìûå êàê
⊥✱
â ïðîãðàììå íà ❍❛s✲
❦❡❧❧ íå îòëè÷èìû îò íåçàâåðøåííîãî âû÷èñëåíèÿ✳ Ïîñêîëüêó ❍❛s❦❡❧❧ ÿâëÿåòñÿ ÿçûêîì ñ íåñòðîãîé òèïèçàöèåé äàííûõ✱ âñå òèïû ❍❛s❦❡❧❧ âêëþ÷àþò
⊥✳
➘ðóãèìè ñëîâàìè✱
çíà÷åíèå ëþáîãî òèïà ìîæåò áûòü ñâÿçàíî ñ âû÷èñëåíèåì✱ êîòîðîå áóäåò çàâåðøåíî✱ êîãäà ïîòðåáóåòñÿ ðåçóëüòàò âû÷èñëåíèÿ✱ è çàâåðøèòñÿ ñ îøèáêîé✳ Ïðè ñâîåì âû÷èñëåíèè îøèáêè âûçûâàþò íåìåäëåííîå çàâåðøåíèå ïðîãðàììû è íå ìîãóò áûòü îòëîâëåíû ïîëüçîâàòåëåì✳ Pr❡❧✉❞❡ ñîäåðæèò äâå ôóíêöèè✱ êîòîðûå ñðàçó âûçûâàþò òàêèå îøèáêè✿
❡rr♦r ✿✿ ❙tr✐♥❣ ✲❃ ❛ ✉♥❞❡❢✐♥❡❞ ✿✿ ❛ ➶ûçîâ
ôóíêöèè
❡rr♦r
çàâåðøàåò
âûïîëíåíèå
ïðîãðàììû
è
âîçâðàùàåò
â
îïåðàöèîííóþ ñèñòåìó ñîîòâåòñòâóþùèé ïðèçíàê îøèáêè✳ ❰í òàêæå äîëæåí âûâåñòè íà ýêðàí ñòðîêó íåêîòîðûì✱ çàâèñÿùèì îò ñèñòåìû✱ ñïîñîáîì✳ ✃îãäà èñïîëüçóåòñÿ ôóíêöèÿ
✉♥❞❡❢✐♥❡❞✱
ñîîáùåíèå îá îøèáêå ñîçäàåòñÿ êîìïèëÿòîðîì✳
Òðàíñëÿöèè âûðàæåíèé ❍❛s❦❡❧❧ èñïîëüçóþò ìåñò✱
ãäå
ìîãëè
âîçíèêíóòü
îøèáêè
❡rr♦r
âðåìåíè
è
✉♥❞❡❢✐♥❡❞
âûïîëíåíèÿ✳
äëÿ ÿâíîãî óêàçàíèÿ Ðåàëüíîå
ïîâåäåíèå
ïðîãðàììû â ñëó÷àå âîçíèêíîâåíèÿ îøèáêè çàâèñèò îò ðåàëèçàöèè✳ Ñîîáùåíèÿ✱ ïåðåäàâàåìûå â ôóíêöèþ
❡rr♦r
ïðè ýòèõ òðàíñëÿöèÿõ✱ ÿâëÿþòñÿ ëèøü óêàçàíèÿìè✱
ðåàëèçàöèè ìîãóò âûáèðàòü ìåæäó îòîáðàæåíèåì áîëüøåé èëè ìåíüøåé èíôîðìàöèè â ñëó÷àå âîçíèêíîâåíèÿ îøèáêè✳
✸✳✷
aexp
Ïåðåìåííûå✱ êîíñòðóêòîðû✱ îïåðàòîðû è ëèòåðàëû
→ | |
qvar gcon literal
(ïåðåìåííàÿ) (îáùèé êîíñòðóêòîð)
✷✻
➹❐➚➶➚ ✸✳
gcon
→ | | |
✭✮ ❬❪ ✭✱{✱}✮ qcon
var qvar
→ →
varid | ✭ varsym ✮ qvarid | ✭ qvarsym ✮
con qcon
→ →
conid | ✭ consym ✮ qconid | ✭ gconsym ✮
varop qvarop
→ →
varsym | ❵ varid ❵ qvarsym | ❵ qvarid ❵
conop qconop
→ →
consym | ❵ conid ❵ gconsym | ❵ qconid ❵
op qop
→ →
varop | conop qvarop | qconop
gconsym
→
✿ | qconsym
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
(ïåðåìåííàÿ) |
îáùèé✲êîíñòðóêòîð
(îáùèé êîíñòðóêòîð) |
ëèòåðàë
îáùèé✲êîíñòðóêòîð
→
✭✮ | ❬❪ | ✭✱{✱}✮ | êâàëèôèöèðîâàííûé✲êîíñòðóêòîð ïåðåìåííàÿ
→
èäåíòèôèêàòîð✲ïåðåìåííîé
| ✭ ñèìâîë✲ïåðåìåííîé ✮ (ïåðåìåííàÿ) êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
→
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé
| ✭ êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé ✮ (êâàëèôèöèðîâàííàÿ ïåðåìåííàÿ)
➶ÛÐ➚➷➴❮➮ß
(ïåðåìåííàÿ) (êâàëèôèöèðîâàííàÿ ïåðåìåííàÿ) (êîíñòðóêòîð) (êâàëèôèöèðîâàííûé êîíñòðóêòîð) (îïåðàòîð ïåðåìåííîé) (êâàëèôèöèðîâàííûé îïåðàòîð ïåðåìåííîé) (îïåðàòîð êîíñòðóêòîðà) (êâàëèôèöèðîâàííûé îïåðàòîð êîíñòðóêòîðà) (îïåðàòîð) (êâàëèôèöèðîâàííûé îïåðàòîð)
✸✳✷✳
Ï➴Ð➴❒➴❮❮Û➴✱ ✃❰❮ÑÒÐÓ✃Ò❰ÐÛ✱ ❰Ï➴Ð➚Ò❰ÐÛ ➮ ❐➮Ò➴Ð➚❐Û
êîíñòðóêòîð
✷✼
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
| ✭ ñèìâîë✲êîíñòðóêòîðà ✮ ( )
êîíñòðóêòîð
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
→
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà
| ✭ ñèìâîë✲îáùåãî✲êîíñòðóêòîðà ✮ ( ) îïåðàòîð✲ïåðåìåííîé →
êâàëèôèöèðîâàííûé êîíñòðóêòîð
ñèìâîë✲ïåðåìåííîé
| ❵ èäåíòèôèêàòîð✲ïåðåìåííîé ❵ ( )
îïåðàòîð ïåðåìåííîé
êâàëèôèöèðîâàííûé✲îïåðàòîð✲ïåðåìåííîé
→
êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé
| ❵ êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé ❵ ( ) îïåðàòîð✲êîíñòðóêòîðà →
êâàëèôèöèðîâàííûé îïåðàòîð ïåðåìåííîé
ñèìâîë✲êîíñòðóêòîðà
| ❵ èäåíòèôèêàòîð✲êîíñòðóêòîðà ❵ ( )
îïåðàòîð êîíñòðóêòîðà
êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà
→
ñèìâîë✲îáùåãî✲êîíñòðóêòîðà
| ❵ êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà ❵ ( ) îïåðàòîð →
êâàëèôèöèðîâàííûé îïåðàòîð êîíñòðóêòîðà
îïåðàòîð✲ïåðåìåííîé
|
îïåðàòîð✲êîíñòðóêòîðà
îïåðàòîð)
(
êâàëèôèöèðîâàííûé✲îïåðàòîð
→
êâàëèôèöèðîâàííûé✲îïåðàòîð✲ïåðåìåííîé
|
êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà
êâàëèôèöèðîâàííûé îïåðàòîð)
(
ñèìâîë✲îáùåãî✲êîíñòðóêòîðà
✿|
→
êâàëèôèöèðîâàííûé✲ñèìâîë✲êîíñòðóêòîðà
➘ëÿ ïîääåðæêè èíôèêñíîé çàïèñè â ❍❛s❦❡❧❧ èñïîëüçóåòñÿ ñïåöèàëüíûé ñèíòàêñèñ✳ ❰ïåðàòîð ✖ ýòî ôóíêöèÿ✱ êîòîðàÿ ìîæåò áûòü ïðèìåíåíà✱ èñïîëüçóÿ èíôèêñíûé ñèíòàêñèñ ✭ðàçäåë ✸✳✹✮✱ èëè ÷àñòè÷íî ïðèìåíåíà✱ èñïîëüçóÿ ñå÷åíèÿ ✭ðàçäåë ✸✳✺✮✳ ❰ïåðàòîð ïðåäñòàâëÿåò ñîáîé ñèìâîë îïåðàòîðà✱ íàïðèìåð✱ ✰ èëè ✩✩✱ èëè îáû÷íûé èäåíòèôèêàòîð✱ çàêëþ÷åííûé â îáðàòíûå êàâû÷êè✱ íàïðèìåð✱ ❵♦♣❵✳ ➶ìåñòî ïðåôèêñíîé çàïèñè ♦♣ ① ② ìîæíî èñïîëüçîâàòü èíôèêñíóþ çàïèñü ① ❵♦♣❵ ②✳ ➴ñëè àññîöèàòèâíîñòü è ïðèîðèòåò äëÿ ❵♦♣❵ íå çàäàíû✱ òî ïî óìîë÷àíèþ èñïîëüçóåòñÿ íàèâûñøèé ïðèîðèòåò è ëåâîàññîöèàòèâíîñòü ✭ñì✳ ðàçäåë ✹✳✹✳✷✮✳ ❮àîáîðîò✱ ñèìâîë îïåðàòîðà ìîæåò áûòü ïðåîáðàçîâàí â îáû÷íûé èäåíòèôèêàòîð✱
✷✽
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
åñëè çàïèñàòü åãî â êðóãëûõ ñêîáêàõ✳ ❮àïðèìåð✱ ✭✰✮ ① ② ýêâèâàëåíòíî ① ✰ ②✱ à ❢♦❧❞r ✭✯✮ ✶ ①s ýêâèâàëåíòíî ❢♦❧❞r ✭❭① ② ✲❃ ①✯②✮ ✶ ①s✳ ➘ëÿ îáîçíà÷åíèÿ íåêîòîðûõ êîíñòðóêòîðîâ âñòðîåííûõ òèïîâ èñïîëüçóåòñÿ ñïåöèàëüíûé ñèíòàêñèñ✱ êàê ýòî âèäíî èç ãðàììàòèêè äëÿ gcon (îáùåãî✲êîíñòðóêòîðà) è literal (ëèòåðàëà)✳ ❰íè îïèñàíû â ðàçäåëå ✻✳✶✳ Öåëûé ëèòåðàë ïðåäñòàâëÿåò ñîáîé ïðèìåíåíèå ôóíêöèè ❢r♦♠■♥t❡❣❡r ê ñîîòâåòñòâóþùåìó çíà÷åíèþ òèïà ■♥t❡❣❡r✳ ➚íàëîãè÷íî✱ ëèòåðàë ñ ïëàâàþùåé òî÷êîé îáîçíà÷àåò ïðèìåíåíèå ôóíêöèè ❢r♦♠❘❛t✐♦♥❛❧ ê çíà÷åíèþ òèïà ❘❛t✐♦♥❛❧ ✭òî åñòü ❘❛t✐♦ ■♥t❡❣❡r✮✳ Öåëûé ëèòåðàë i ýêâèâàëåíòåí ❢r♦♠■♥t❡❣❡r i ✱ ãäå ❢r♦♠■♥t❡❣❡r ✖ ìåòîä êëàññà ◆✉♠ ✭ñì✳ ðàçäåë ✻✳✹✳✶✮✳ ❐èòåðàë ñ ïëàâàþùåé òî÷êîé f ýêâèâàëåíòåí ❢r♦♠❘❛t✐♦♥❛❧ ✭n ❘❛t✐♦✳✪ d ✮✱ ãäå ❢r♦♠❘❛t✐♦♥❛❧ ✖ ìåòîä êëàññà ❋r❛❝t✐♦♥❛❧✱ à ❘❛t✐♦✳✪ ñîñòàâëÿåò èç äâóõ öåëûõ ÷èñåë ðàöèîíàëüíîå ÷èñëî â ñîîòâåòñòâèè ñ îïðåäåëåíèåì✱ çàäàííûì â áèáëèîòåêå ❘❛t✐♦✳ ➴ñëè çàäàíû öåëûå ÷èñëà n è d ✱ òî n/d = f ✳ Òðàíñëÿöèÿ✿
✸✳✸
Ïðîèçâîäíûå ôóíêöèè è ëÿìáäà✲àáñòðàêöèè
→ →
fexp exp
[fexp] aexp ❭ apat1 . . . apatn ✲❃ exp
ïðèìåíåíèå ôóíêöèè) ëÿìáäà✲àáñòðàêöèÿ,
( ( n ≥ 1)
Ïåðåâîä✿
→ [ôóíêöèîíàëüíîå✲âûðàæåíèå] âûðàæåíèå✲àðãóìåíòà ( ) âûðàæåíèå → ❭ òàêîé✲êàê✲îáðàçåö1 . . . òàêîé✲êàê✲îáðàçåön ✲❃ âûðàæåíèå ( , n ≥ 1) ôóíêöèîíàëüíîå✲âûðàæåíèå
ïðèìåíåíèå ôóíêöèè ëÿìáäà✲àáñòðàêöèÿ
çàïèñûâàåòñÿ â âèäå e1 e2 ✳ Ïðèìåíåíèå ëåâîàññîöèàòèâíî✱ ïîýòîìó â ✭❢ ①✮ ② ñêîáêè ìîæíî îïóñòèòü✳ Ïîñêîëüêó e1 ìîæåò ÿâëÿòüñÿ êîíñòðóêòîðîì äàííûõ✱ âîçìîæíî ÷àñòè÷íîå ïðèìåíåíèå êîíñòðóêòîðîâ äàííûõ✳ ❐ÿìáäà✲àáñòðàêöèè çàïèñûâàþòñÿ â âèäå ❭ p1 . . . pn ✲❃ e ✱ ãäå pi ✖ îáðàçöû✳ ➶ûðàæåíèå âèäà ❭①✿①s✲❃① ñèíòàêñè÷åñêè íåïðàâèëüíî✱ åãî ìîæíî ïðàâèëüíî çàïèñàòü â âèäå ❭✭①✿①s✮✲❃①✳ ❮àáîð îáðàçöîâ äîëæåí áûòü ëèíåéíûì✿ íè îäíà ïåðåìåííàÿ íå äîëæíà ïîÿâëÿòüñÿ â íàáîðå áîëåå îäíîãî ðàçà✳ Ïðèìåíåíèå ôóíêöèè
✸✳✹✳
✷✾
ÏÐ➮❒➴❮➴❮➮➴ ❰Ï➴Ð➚Ò❰Ð❰➶
➶ûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✿
Òðàíñëÿöèÿ✿
❭ p1 . . . pn ✲❃ e
❭ x1 . . . xn ✲❃ ❝❛s❡ ✭x1 ✱ . . . ✱ xn ✮ ♦❢ ✭p1 ✱ . . . ✱ pn ✮ ✲❃ e
=
ãäå xi ✖ íîâûå èäåíòèôèêàòîðû✳ ➮ñïîëüçóÿ
ýòó
òðàíñëÿöèþ
â
êîìáèíàöèè
ñ
ñ
ñåìàíòèêîé
❝❛s❡✲âûðàæåíèé
è
ñîïîñòàâëåíèé ñ îáðàçöîì✱ îïèñàííîé â ðàçäåëå ✸✳✶✼✳✸✱ ïîëó÷èì✿ åñëè ñîïîñòàâëåíèå ñ îáðàçöîì çàâåðøèòñÿ íåóäà÷íî✱ òî ðåçóëüòàòîì áóäåò
✸✳✹
⊥✳
Ïðèìåíåíèå îïåðàòîðîâ
exp
qop
→ |
exp1 qop exp2 ✲ exp
→
qvarop | qconop
(ïðåôèêñíîå îòðèöàíèå) (êâàëèôèöèðîâàííûé îïåðàòîð)
Ïåðåâîä✿ âûðàæåíèå
→
âûðàæåíèå1 êâàëèôèöèðîâàííûé✲îïåðàòîð âûðàæåíèå2 | ✲ âûðàæåíèå
(ïðåôèêñíîå
îòðèöàíèå)
êâàëèôèöèðîâàííûé✲îïåðàòîð
→
êâàëèôèöèðîâàííûé✲îïåðàòîð✲ïåðåìåííîé
|
êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà
(êâàëèôèöèðîâàííûé Ôîðìà ê
îïåðàòîð)
e1 qop e2 ïðåäñòàâëÿåò âûðàæåíèÿì e1 è e2 ✳
Ñïåöèàëüíàÿ ôîðìà
✲e
ñîáîé èíôèêñíîå ïðèìåíåíèå áèíàðíîãî îïåðàòîðà
îáîçíà÷àåò ïðåôèêñíîå îòðèöàíèå✱ åäèíñòâåííûé ïðåôèêñíûé
îòðèöàíèÿ (e)✳
îïåðàòîð â ❍❛s❦❡❧❧✱ è ÿâëÿåòñÿ ñèíòàêñè÷åñêîé çàïèñüþ îïåðàòîð
✲
íåîáÿçàòåëüíî ññûëàåòñÿ íà îïðåäåëåíèå
✲
♥❡❣❛t❡✱
ëîêàëüíûì çíà÷åíèåì îïåðàòîðà Ïðåôèêñíûé îïåðàòîð
✲✱
îïåðàòîð
➪èíàðíûé
â Pr❡❧✉❞❡✱ îí ìîæåò áûòü
ïåðåîïðåäåëåí ñèñòåìîé ìîäóëÿ✳ Òåì íå ìåíåå✱ óíàðíûé îïåðàòîð ññûëàòüñÿ íà ôóíêöèþ
qop
✲
áóäåò âñåãäà
îïðåäåëåííóþ â Pr❡❧✉❞❡✳ ❮åò íèêàêîé ñâÿçè ìåæäó
✲
è óíàðíûì îòðèöàíèåì✳
îòðèöàíèÿ
èìååò
òîò
æå
ïðèîðèòåò✱
÷òî
è
èíôèêñíûé
îïðåäåëåííûé â Pr❡❧✉❞❡ ✭ñì✳ òàáëèöó ✹✳✶✱ ñòð✳ ✼✾✮✳ Ïîñêîëüêó
❡✶✲❡✷ ✲✱
ïðè ðàçáîðå èíòåðïðåòèðóåòñÿ êàê èíôèêñíîå ïðèìåíåíèå áèíàðíîãî îïåðàòîðà äëÿ àëüòåðíàòèâíîé èíòåðïðåòàöèè íóæíî ïèñàòü
❡✶✭✲❡✷✮✳
➚íàëîãè÷íî✱
✭✲✮
ÿâëÿåòñÿ
✸✵
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
ñèíòàêñè÷åñêîé çàïèñüþ ✭❭ ① ② ✲❃ ①✲②✮✱ êàê è ëþáîé èíôèêñíûé îïåðàòîð✱ è íå îáîçíà÷àåò ✭❭ ① ✲❃ ✲①✮ ✖ äëÿ ýòîãî íóæíî èñïîëüçîâàòü ♥❡❣❛t❡✳ Òðàíñëÿöèÿ✿
➶ûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✿ e1 op e2 ✲e
✸✳✺
= =
✭op ✮ e1 e2 ♥❡❣❛t❡ (e)
Ñå÷åíèÿ
→ | |
aexp
|
ëåâîå ñå÷åíèå) ëåâîå ñå÷åíèå) ïðàâîå ñå÷åíèå) (ïðàâîå ñå÷åíèå)
✭ exp i+1 qop (a,i) ✮ ✭ lexp i qop (l,i) ✮ (a,i) ✭ qoph✲i exp i+1 ✮ (r ,i) ✭ qoph✲i rexp i ✮
( ( (
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà → ✭ âûðàæåíèåi+1 êâàëèôèöèðîâàííûé✲îïåðàòîð(a,i)
ëåâîå ñå÷åíèå
✮
( ) | ✭ ëåâîå✲ñå÷åíèå✲âûðàæåíèÿi êâàëèôèöèðîâàííûé✲îïåðàòîð(l,i) ✮ ( ) (a,i) | ✭ êâàëèôèöèðîâàííûé✲îïåðàòîðh✲i âûðàæåíèåi+1 ✮ ( ) (r ,i) | ✭ êâàëèôèöèðîâàííûé✲îïåðàòîðh✲i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿi ✮ ( )
ëåâîå ñå÷åíèå
ïðàâîå ñå÷åíèå
ïðàâîå ñå÷åíèå
Ñå÷åíèÿ çàïèñûâàþòñÿ â âèäå ✭ op e ✮ èëè ✭ e op ✮✱ ãäå op ✖ áèíàðíûé îïåðàòîð✱ à e ✖ âûðàæåíèå✳ Ñå÷åíèÿ ïðåäñòàâëÿþò ñîáîé óäîáíûé ñèíòàêñèñ äëÿ çàïèñè ÷àñòè÷íîãî ïðèìåíåíèÿ áèíàðíûõ îïåðàòîðîâ✳ Ñèíòàêñè÷åñêèå ïðàâèëà ïðèîðèòåòîâ ïðèìåíÿþòñÿ ê ñå÷åíèÿì ñëåäóþùèì îáðàçîì✳ ✭op e ✮ äîïóñòèìî✱ åñëè è òîëüêî åñëè ✭① op e ✮ ïðè ðàçáîðå èíòåðïðåòèðóåòñÿ òàê æå✱ êàê è ✭① op ✭e ✮✮❀ àíàëîãè÷íî äëÿ ✭e op ✮✳ ❮àïðèìåð✱ ✭✯❛✰❜✮ ñèíòàêñè÷åñêè íåäîïóñòèìî✱ íî ✭✰❛✯❜✮ è ✭✯✭❛✰❜✮✮ äîïóñòèìû✳ Ïîñêîëüêó îïåðàòîð ✭✰✮ ëåâîàññîöèàòèâåí✱ ✭❛✰❜✰✮ ñèíòàêñè÷åñêè ïðàâèëüíî✱ à ✭✰❛✰❜✮ ✖ íåò✱ åãî ìîæíî ïðàâèëüíî çàïèñàòü â âèäå ✭✰✭❛✰❜✮✮✳ ➶ êà÷åñòâå äðóãîãî ïðèìåðà ðàññìîòðèì âûðàæåíèå
✭❧❡t ♥ ❂ ✶✵ ✐♥ ♥ ✰✮
✸✳✻✳
✸✶
ÓÑ❐❰➶❮Û➴ ➶ÛÐ➚➷➴❮➮ß
êîòîðîå ÿâëÿåòñÿ íåäîïóñòèìûì â ñîîòâåòñòâèè ñ ìåòà✲ïðàâèëîì äëÿ ❧❡t✴ëÿìáäà ✭ðàçäåë ✸✮✳ ➶ûðàæåíèå ✭❧❡t ♥ ❂ ✶✵ ✐♥ ♥ ✰ ①✮
ïðè ðàçáîðå èíòåðïðåòèðóåòñÿ êàê ✭❧❡t ♥ ❂ ✶✵ ✐♥ ✭♥ ✰ ①✮✮
âìåñòî ✭✭❧❡t ♥ ❂ ✶✵ ✐♥ ♥✮ ✰ ①✮
Ïîñêîëüêó ✲ èíòåðïðåòèðóåòñÿ â ãðàììàòèêå ñïåöèàëüíûì îáðàçîì✱ ✭✲ exp ✮ ÿâëÿåòñÿ íå ñå÷åíèåì✱ à ïðèìåíåíèåì ïðåôèêñíîãî îïåðàòîðà îòðèöàíèÿ✱ â ñîîòâåòñòâèè ñ îïèñàíèåì â ïðåäûäóùåì ðàçäåëå✳ Òåì íå ìåíåå✱ èìååòñÿ ôóíêöèÿ s✉❜tr❛❝t✱ îïðåäåëåííàÿ â Pr❡❧✉❞❡ òàêèì îáðàçîì✱ ÷òî ✭s✉❜tr❛❝t exp ✮ ýêâèâàëåíòíî íåäîïóñòèìîìó ðàíåå ñå÷åíèþ✳ ➘ëÿ òîé æå öåëè ìîæåò ñëóæèòü âûðàæåíèå ✭✰ ✭✲ exp ✮✮✳ ➶ûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✿
Òðàíñëÿöèÿ✿
✭op e ✮ ✭e op ✮
ãäå op ✖ áèíàðíûé îïåðàòîð✱ ÿâëÿåòñÿ ñâîáîäíîé â e ✳ ✸✳✻
e
= =
❭ x ✲❃ x op e ❭ x ✲❃ e op x
✖ âûðàæåíèå✱ à
x
✖ ïåðåìåííàÿ✱ êîòîðàÿ íå
Óñëîâíûå âûðàæåíèÿ
→
exp
✐❢ exp1 t❤❡♥ exp2 ❡❧s❡ exp3
Ïåðåâîä✿ âûðàæåíèå
✐❢
→
âûðàæåíèå1
t❤❡♥
âûðàæåíèå2
❡❧s❡
âûðàæåíèå3
èìååò âèä ✐❢ e1 t❤❡♥ e2 ❡❧s❡ e3 è âîçâðàùàåò✿ çíà÷åíèå e2 ✖ åñëè çíà÷åíèå e1 ðàâíî ❚r✉❡✱ e3 ✖ åñëè e1 ðàâíî ❋❛❧s❡✱ è ⊥ ✖ èíà÷å✳
Óñëîâíîå âûðàæåíèå
✸✷
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
➶ûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✿
Òðàíñëÿöèÿ✿
✐❢ e1 t❤❡♥ e2 ❡❧s❡ e3
=
❝❛s❡ e1 ♦❢ ④ ❚r✉❡ ✲❃ e2 ❀ ❋❛❧s❡ ✲❃ e3 ⑥
ãäå ❚r✉❡ è ❋❛❧s❡ ✖ êîíñòðóêòîðû ñ íóëåâûì ÷èñëîì àðãóìåíòîâ èç òèïà ❇♦♦❧✱ îïðåäåëåííûå â Pr❡❧✉❞❡✳ Òèï e1 äîëæåí áûòü ❇♦♦❧✱ e2 è e3 äîëæíû èìåòü òîò æå òèï✱ êîòîðûé òàêæå ÿâëÿåòñÿ òèïîì âñåãî óñëîâíîãî âûðàæåíèÿ✳ ✸✳✼
Ñïèñêè
exp aexp
→ → | → | → → → →
gcon qcon qop qconop gconsym
exp1 qop exp2 ❬ exp1 ✱ . . . ✱ expk ❪ gcon ❬❪ qcon ✭ gconsym ✮ qconop gconsym ✿
(k ≥ 1 )
Ïåðåâîä✿ âûðàæåíèå
→
âûðàæåíèå1 êâàëèôèöèðîâàííûé✲îïåðàòîð âûðàæåíèå2 âûðàæåíèå✲àðãóìåíòà →
❬
âûðàæåíèå1
✱ ... ✱
âûðàæåíèåk
❪
(k ≥ 1 ) |
îáùèé✲êîíñòðóêòîð
→ ❬❪ | êâàëèôèöèðîâàííûé✲êîíñòðóêòîð êâàëèôèöèðîâàííûé✲êîíñòðóêòîð → ✭ ñèìâîë✲îáùåãî✲êîíñòðóêòîðà ✮ êâàëèôèöèðîâàííûé✲îïåðàòîð → îáùèé✲êîíñòðóêòîð
êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà
→
ñèìâîë✲îáùåãî✲êîíñòðóêòîðà ñèìâîë✲îáùåãî✲êîíñòðóêòîðà
→
✿ Ñïèñêè çàïèñûâàþòñÿ â âèäå ❬e1 ✱ . . . ✱ ek ❪✱ ãäå k ≥ 1 ✳ ✃îíñòðóêòîðîì ñïèñêà ÿâëÿåòñÿ ✿✱ ïóñòîé ñïèñîê îáîçíà÷àåòñÿ ❬❪✳ Ñòàíäàðòíûå îïåðàöèè íàä ñïèñêàìè îïèñàíû â Pr❡✲
❧✉❞❡ ✭ñì✳ ðàçäåë ✻✳✶✳✸ è ãëàâó ✽✱ îñîáåííî ðàçäåë ✽✳✶✮✳
✸✳✽✳
✸✸
✃❰ÐÒ➴➷➮
➶ûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✿
Òðàíñëÿöèÿ✿
❬e1 ✱ . . . ✱ ek ❪ ãäå
✿
è
❬❪
➶ûðàæåíèÿ âûðàæåíèÿ
=
e1 ✿ ✭e2 ✿ ✭ . . . ✭ek ✿ ❬❪✮✮✮
✖ êîíñòðóêòîðû ñïèñêîâ✱ îïðåäåëåííûå â Pr❡❧✉❞❡ ✭ñì✳ ðàçäåë ✻✳✶✳✸✮✳
e1 ✱
ek äîëæíû áûòü îäíîãî ÿâëÿåòñÿ ❬t ❪ ✭ñì✳ ðàçäåë ✹✳✶✳✷✮✳
✃îíñòðóêòîð ✏ ✿✑
✳✳✳✳ ✱
òèïà ✭íàçîâåì åãî
t ✮✱
à òèïîì âñåãî
ïðåäíàçíà÷åí èñêëþ÷èòåëüíî äëÿ ïîñòðîåíèÿ ñïèñêà❀ êàê è
❬❪✱
îí ÿâëÿåòñÿ îáîñíîâàííîé ÷àñòüþ ñèíòàêñèñà ÿçûêà è íå ìîæåò áûòü ñêðûò èëè ïåðåîïðåäåëåí✳
❰í
ïðåäñòàâëÿåò
ñîáîé
ïðàâîàññîöèàòèâíûé
îïåðàòîð
ñ
óðîâíåì
ïðèîðèòåòà ✺ ✭ðàçäåë ✹✳✹✳✷✮✳
✸✳✽
✃îðòåæè
→ | →
aexp qcon
✭ exp1 ✱ . . . ✱ expk ✮ qcon ✭✱{✱}✮
(k ≥ 2 )
Ïåðåâîä✿
→ ✱ . . . ✱ âûðàæåíèåk ✮
âûðàæåíèå✲àðãóìåíòà
✭
âûðàæåíèå1
(k ≥ 2 ) |
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
→
✭✱{✱}✮ ✭e1 ✱ . . . ✱ ek ✮ è ìîãóò áûòü ïðîèçâîëüíîé äëèíû n îáîçíà÷àåòñÿ ✭✱✳ ✳ ✳ ✱✮✱ ãäå n − 1 çàïÿòûõ✳ ✭➼✮ ❛ ❜ ❝ îáîçíà÷àþò îäíî è òî æå çíà÷åíèå✳ Ñòàíäàðòíûå
✃îðòåæè çàïèñûâàþòñÿ â âèäå
k ≥ 2✳
✃îíñòðóêòîð äëÿ êîðòåæà ðàçìåðà
Òàêèì îáðàçîì✱
✭❛✱❜✱❝✮
è
îïåðàöèè íàä êîðòåæàìè îïèñàíû â Pr❡❧✉❞❡ ✭ñì✳ ðàçäåë ✻✳✶✳✹ è ãëàâó ✽✮✳
✭e1 ✱ . . . ✱ ek ✮ äëÿ k ≥ 2 ÿâëÿåòñÿ ýêçåìïëÿðîì êîðòåæà ðàçìåðà k ✱ â ñîîòâåòñòâèè ñ îïðåäåëåíèåì â Pr❡❧✉❞❡✱ è íå òðåáóåò òðàíñëÿöèè✳ ➴ñëè t1 ✱ ✳✳✳ ✱ tk ✖ ñîîòâåòñòâåííî òèïû e1 ✱ ✳✳✳ ✱ ek ✱ òî òèïîì êîðòåæà áóäåò ✭t1 ✱ . . . ✱ tk ✮ ✭ñì✳
Òðàíñëÿöèÿ✿
ðàçäåë ✹✳✶✳✷✮✳
✸✹
➹❐➚➶➚ ✸✳
✸✳✾
➶ÛÐ➚➷➴❮➮ß
➴äèíè÷íûå âûðàæåíèÿ è âûðàæåíèÿ â ñêîáêàõ
→ | →
aexp gcon
gcon ✭ exp ✮ ✭✮
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
→
îáùèé✲êîíñòðóêòîð
|✭
âûðàæåíèå
✮
îáùèé✲êîíñòðóêòîð
→
✭✮ ➶ûðàæåíèå âèäà
e✳
✭e ✮
ïðåäñòàâëÿåò ñîáîé ïðîñòî âûðàæåíèå â ñêîáêàõ è ýêâèâàëåíòíî
➴äèíè÷íîå âûðàæåíèå
✭✮
èìååò òèï
÷ëåí óêàçàííîãî òèïà✱ îòëè÷íûé îò
⊥✱
✭✮
✭ñì✳ ðàçäåë ✹✳✶✳✷✮✳ Ýòîò åäèíñòâåííûé
ìîæåò ðàññìàòðèâàòüñÿ êàê ✏êîðòåæ íóëåâîãî
ðàçìåðà✑ ✭ñì✳ ðàçäåë ✻✳✶✳✺✮✳
Òðàíñëÿöèÿ✿
✸✳✶✵
aexp
✭e ✮
ýêâèâàëåíòíî
e✳
➚ðèôìåòè÷åñêèå ïîñëåäîâàòåëüíîñòè
→
❬ exp1 [✱ exp2 ] ✳✳ [exp3 ] ❪
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
❬
âûðàæåíèå1
[✱
→
âûðàæåíèå2 ]
✳✳ [âûðàæåíèå3 ] ❪
➚ðèôìåòè÷åñêàÿ ïîñëåäîâàòåëüíîñòü
t✱
ãäå êàæäîå èç âûðàæåíèé
Òðàíñëÿöèÿ✿
➘ëÿ
ei
❬e1 ✱ e2 ✳✳ e3 ❪ îáîçíà÷àåò ñïèñîê çíà÷åíèé òèïà t ✱ è t ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà ❊♥✉♠✳
èìååò òèï
àðèôìåòè÷åñêèõ
ïîñëåäîâàòåëüíîñòåé
âûïîëíÿþòñÿ
ñëåäóþùèå òîæäåñòâà✿
❬ ❬ ❬ ❬
e1 ✳✳ ❪ e1 ✱e2 ✳✳ ❪ e1 ✳✳e3 ❪ e1 ✱e2 ✳✳e3 ❪
= = = =
❡♥✉♠❋r♦♠ e1 ❡♥✉♠❋r♦♠❚❤❡♥ e1 e2 ❡♥✉♠❋r♦♠❚♦ e1 e3 ❡♥✉♠❋r♦♠❚❤❡♥❚♦ e1 e2 e3
❡♥✉♠❋r♦♠✱ ❡♥✉♠❋r♦♠❚❤❡♥✱ ❡♥✉♠❋r♦♠❚♦ è ❡♥✉♠❋r♦♠❚❤❡♥❚♦ êëàññà ❊♥✉♠✱ îïðåäåëåííûå â Pr❡❧✉❞❡ ✭ñì✳ ðèñ✳ ✻✳✶✱ ñòð✳ ✶✶✷✮✳ ãäå
ÿâëÿþòñÿ ìåòîäàìè
✸✳✶✶✳
✸✺
❰Ï➮Ñ➚❮➮➴ ÑÏ➮Ñ✃➚
Ñåìàíòèêà àðèôìåòè÷åñêèõ ïîñëåäîâàòåëüíîñòåé ïîýòîìó ïîëíîñòüþ çàâèñèò îò îáúÿâëåíèÿ ýêçåìïëÿðà äëÿ òèïà t ✳ ➘ëÿ ïîëó÷åíèÿ áîëåå äåòàëüíîé èíôîðìàöèè î òîì✱ êàêèå òèïû Pr❡❧✉❞❡ ÿâëÿþòñÿ ïîäòèïàìè ❊♥✉♠ è êàêîâà èõ ñåìàíòèêà✱ ñìîòðèòå ðàçäåë ✻✳✸✳✹✳ ✸✳✶✶
❰ïèñàíèå ñïèñêà
îïèñàíèå ñïèñêà, n ≥ 1 ) ãåíåðàòîð) ëîêàëüíîå îáúÿâëåíèå) ñòðàæ)
❬ exp ⑤ qual1 ✱ . . . ✱ qualn ❪ pat ❁✲ exp ❧❡t decls exp
→ → | |
aexp qual
( ( ( (
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
❬
âûðàæåíèå
⑤
êâàëèôèêàòîð1
îïèñàíèå ñïèñêà,
(
êâàëèôèêàòîð îáðàçåö
❁✲
→
✱ ... ✱
êâàëèôèêàòîðn
❪
n ≥ 1)
→
âûðàæåíèå
ãåíåðàòîð
( ) | ❧❡t ñïèñêè✲îáúÿâëåíèé ( ) | âûðàæåíèå ( )
ëîêàëüíîå îáúÿâëåíèå
ñòðàæ
❰ïèñàíèå ñïèñêà
• • •
èìååò âèä ❬ e ⑤ q1 ✱
. . . ✱ qn ❪, n ≥ 1 ,
ãäå êâàëèôèêàòîðû qi ÿâëÿþòñÿ
èëè ãåíåðàòîðàìè âèäà p ❁✲ e ✱ ãäå p ✖ îáðàçåö ✭ñì✳ ðàçäåë ✸✳✶✼✮ òèïà t ✱ à e ✖ âûðàæåíèå òèïà ❬t ❪✱ èëè ñòðàæàìè✱ êîòîðûå ÿâëÿþòñÿ ïðîèçâîëüíûìè âûðàæåíèÿìè òèïà ❇♦♦❧✱ èëè ëîêàëüíûìè ñâÿçûâàíèÿìè èìåí✱ êîòîðûå îáåñïå÷èâàþò íîâûå îïðåäåëåíèÿ✱ èñïîëüçóåìûå â ãåíåðèðóåìîì âûðàæåíèè e èëè ïîñëåäóþùèõ ñòðàæàõ è ãåíåðàòîðàõ✳
Òàêîå îïèñàíèå ñïèñêà âîçâðàùàåò ñïèñîê ýëåìåíòîâ✱ ïîðîæäåííûé ïóòåì âû÷èñëåíèÿ e â ïîñëåäîâàòåëüíûõ îêðóæåíèÿõ✱ ñîçäàííûõ âëîæåííûì âû÷èñëåíèåì âãëóáèíó ãåíåðàòîðîâ â ñïèñêå êâàëèôèêàòîðîâ✳ Ñâÿçûâàíèå èìåí ïåðåìåííûõ ïðîèñõîäèò ñîãëàñíî ïðàâèëàì îáû÷íîãî ñîïîñòàâëåíèÿ ñ îáðàçöîì ✭ñì✳ ðàçäåë ✸✳✶✼✮✱ è åñëè ñîïîñòàâëåíèå çàâåðøèòñÿ íåóäà÷åé✱ òî ñîîòâåòñòâóþùèé ýëåìåíò ñïèñêà áóäåò ïðîñòî ïðîïóùåí✳ Òàêèì îáðàçîì✱ ❬ ① ⑤
①s ❁✲ ❬ ❬✭✶✱✷✮✱✭✸✱✹✮❪✱ ❬✭✺✱✹✮✱✭✸✱✷✮❪ ❪✱ ✭✸✱①✮ ❁✲ ①s ❪
✸✻
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
ïîðîæäàåò ñïèñîê ❬✹✱✷❪✳ ➴ñëè êâàëèôèêàòîð ÿâëÿåòñÿ ñòðàæåì✱ òî✱ äëÿ òîãî ÷òîáû ïðåäøåñòâóþùåå ñîïîñòàâëåíèå ñ îáðàçöîì çàâåðøèëîñü óñïåøíî✱ íåîáõîäèìî✱ ÷òîáû çíà÷åíèå êâàëèôèêàòîðà ðàâíÿëîñü ❚r✉❡✳ ✃àê îáû÷íî✱ ñâÿçûâàíèÿ èìåí â îïèñàíèÿõ ñïèñêîâ ìîãóò ñêðûòü ñâÿçûâàíèÿ èìåí âî âíåøíèõ îáëàñòÿõ âèäèìîñòè✱ íàïðèìåð✱ ❬ ① ⑤ ① ❁✲ ①✱ ① ❁✲ ① ❪ = ❬ ③ ⑤ ② ❁✲ ①✱ ③ ❁✲ ②❪
➘ëÿ îïèñàíèé ñïèñêîâ âûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✱ êîòîðûå ìîãóò áûòü èñïîëüçîâàíû â êà÷åñòâå òðàíñëÿöèè â ÿäðî✿ ❬ e ⑤ ❚r✉❡ ❪ ❂ ❬e ❪ ❬ e ⑤ q ❪ ❂ ❬ e ⑤ q ✱ ❚r✉❡ ❪ ❬ e ⑤ b✱ Q ❪ ❂ ✐❢ b t❤❡♥ ❬ e ⑤ Q ❪ ❡❧s❡ ❬❪ ❬ e ⑤ p ❁✲ l ✱ Q ❪ ❂ ❧❡t ♦❦ p ❂ ❬ e ⑤ Q ❪ Òðàíñëÿöèÿ✿
♦❦ ❴ ❂ ❬❪ ✐♥ ❝♦♥❝❛t▼❛♣ ♦❦ l ❧❡t decls ✐♥ ❬ e ⑤ Q ❪
❂ ãäå e ✖ âûðàæåíèÿ✱ p ✖ îáðàçöû✱ l ✖ âûðàæåíèÿ✱ çíà÷åíèÿìè êîòîðûõ ÿâëÿþòñÿ ñïèñêè✱ b ✖ áóëåâû âûðàæåíèÿ✱ decls ✖ ñïèñêè îáúÿâëåíèé✱ q ✖ êâàëèôèêàòîðû✱ à Q ✖ ïîñëåäîâàòåëüíîñòè êâàëèôèêàòîðîâ✳ ♦❦ ✖ íîâàÿ ïåðåìåííàÿ✳ Ôóíêöèÿ ❝♦♥❝❛t▼❛♣ è áóëåâî çíà÷åíèå ❚r✉❡ îïðåäåëåíû â Pr❡❧✉❞❡✳ ❬ e ⑤ ❧❡t decls ✱ Q ❪
✃àê ïîêàçûâàåò òðàíñëÿöèÿ îïèñàíèé ñïèñêîâ✱ ïåðåìåííûå✱ ñâÿçàííûå ñ ïîìîùüþ ❧❡t✱ èìåþò ïîëíîñòüþ ïîëèìîðôíûå òèïû✱ òîãäà êàê ïåðåìåííûå✱ îïðåäåëåííûå ñ ïîìîùüþ ❁✲✱ ñâÿçàíû ëÿìáäà✲âûðàæåíèåì è ïîýòîìó ìîíîìîðôíû ✭ñì✳ ðàçäåë ✹✳✺✳✹✮✳ ✸✳✶✷
▲❡t✲âûðàæåíèÿ
→
exp
❧❡t decls ✐♥ exp
Ïåðåâîä✿ âûðàæåíèå
❧❡t
→
ñïèñêè✲îáúÿâëåíèé
✐♥
âûðàæåíèå
èìåþò îáùèé âèä ❧❡t ④ d1 ❀ . . . ❀ dn ⑥ ✐♥ e è ââîäÿò âëîæåííûé✱ ëåêñè÷åñêè îãðàíè÷åííûé✱ âçàèìíî ðåêóðñèâíûé ñïèñîê îáúÿâëåíèé ✭â äðóãèõ ÿçûêàõ ❧❡t ÷àñòî íàçûâàþò ❧❡tr❡❝✮✳ ❰áëàñòüþ âèäèìîñòè îáúÿâëåíèé ÿâëÿåòñÿ âûðàæåíèå e è ïðàâàÿ ÷àñòü îáúÿâëåíèé✳ ❰áúÿâëåíèÿ îïèñàíû â ãëàâå ✹✳ Ñîïîñòàâëåíèå è ñâÿçûâàíèå îáðàçöîâ âûïîëíÿåòñÿ ëåíèâî✱ íåÿâíàÿ ⑦ äåëàåò ýòè îáðàçöû íåîïðîâåðæèìûìè✳ ❮àïðèìåð✱ ▲❡t✲âûðàæåíèÿ
✸✳✶✸✳
❈❆❙❊✲➶ÛÐ➚➷➴❮➮ß
✸✼
❧❡t ✭①✱②✮ ❂ ✉♥❞❡❢✐♥❡❞ ✐♥ e íå âûçîâåò îøèáêó âðåìåíè âûïîëíåíèÿ äî òåõ ïîð✱ ïîêà
①
èëè
②
íå áóäóò âû÷èñëåíû✳
Òðàíñëÿöèÿ✿ ➘èíàìè÷åñêàÿ ñåìàíòèêà âûðàæåíèÿ ❧❡t ④ d1 ❀ . . . ❀ dn ⑥ â e0 îõâàòûâàåòñÿ ñëåäóþùåé òðàíñëÿöèåé✿ ïîñëå óäàëåíèÿ âñåõ ñèãíàòóð òèïîâ êàæäîå îáúÿâëåíèå di òðàíñëèðóåòñÿ â óðàâíåíèå âèäà pi ❂ ei ✱ ãäå pi è ei ✖ ñîîòâåòñòâåííî îáðàçöû è âûðàæåíèÿ✱ ïðè ýòîì èñïîëüçóåòñÿ òðàíñëÿöèÿ â ðàçäåëå ✹✳✹✳✸✳ ❰äíàæäû ñäåëàâ ýòî✱ ýòè òîæäåñòâà âûïîëíÿþòñÿ✱ è ýòî ìîæíî èñïîëüçîâàòü â êà÷åñòâå òðàíñëÿöèè â ÿäðî✿ ❧❡t ④p1 ❂e1 ❀ ✳✳✳ ❀ pn ❂en ⑥ ✐♥ e0 ❂ ❧❡t ✭⑦p1 ✱ ✳✳✳ ✱⑦pn ✮ ❂ ✭e1 ✱ ✳✳✳ ✱en ✮ ✐♥ e0 ❧❡t p ❂ e1 ✐♥ e0 ❂ ❝❛s❡ e1 ♦❢ ⑦p ✲❃ e0 ãäå íè îäíà ïåðåìåííàÿ â p íå ÿâëÿåòñÿ ñâîáîäíîé â e1 ❧❡t p ❂ e1 ✐♥ e0 ❂ ❧❡t p ❂ ❢✐① ✭ ❭ ⑦p ✲❃ e1 ✮ ✐♥ e0 ãäå ❢✐① ✖ íàèìåíüøèé àññîöèàòèâíûé îïåðàòîð✳ ❰áðàòèòå âíèìàíèå íà èñïîëüçîâàíèå íåîïðîâåðæèìîãî îáðàçöà ⑦p ✳ Ýòà òðàíñëÿöèÿ íå ñîõðàíÿåò ñòàòè÷åñêóþ ñåìàíòèêó✱ ïîòîìó ÷òî èñïîëüçîâàíèå ❝❛s❡ ïðåïÿòñòâóåò ïîëíîñòüþ ïîëèìîðôíîé òèïèçàöèè ñâÿçàííûõ ïåðåìåííûõ✳ Ñòàòè÷åñêàÿ ñåìàíòèêà ñâÿçûâàíèé èìåí â ❧❡t✲âûðàæåíèÿõ îïèñàíà ðàçäåëå ✹✳✹✳✸✳
✸✳✶✸
❈❛s❡✲âûðàæåíèÿ
exp alts alt
gdpat gd
→ → → | |
❝❛s❡ exp ♦❢ ④ alts ⑥ alt1 ❀ . . . ❀ altn pat ✲❃ exp [✇❤❡r❡ decls] pat gdpat [✇❤❡r❡ decls]
→ →
gd ✲❃ exp [ gdpat ] ⑤ exp 0
(n ≥ 1 )
(ïóñòàÿ
Ïåðåâîä✿ âûðàæåíèå
❝❛s❡
→
âûðàæåíèå
♦❢ ④ ñïèñîê✲àëüòåðíàòèâ ⑥ → ❀ . . . ❀ àëüòåðíàòèâàn
ñïèñîê✲àëüòåðíàòèâ àëüòåðíàòèâà1
(n ≥ 1 ) àëüòåðíàòèâà îáðàçåö
| |
✲❃
→
âûðàæåíèå
[✇❤❡r❡
ñïèñîê✲îáúÿâëåíèé]
îáðàçåö îáðàçåö✲ñî✲ñòðàæàìè
[✇❤❡r❡
ñïèñîê✲îáúÿâëåíèé]
àëüòåðíàòèâà)
✸✽
➹❐➚➶➚ ✸✳
(ïóñòàÿ
àëüòåðíàòèâà)
îáðàçåö✲ñî✲ñòðàæàìè
✲❃
ñòðàæ ñòðàæ
⑤
➶ÛÐ➚➷➴❮➮ß
→
âûðàæåíèå
[
îáðàçåö✲ñî✲ñòðàæàìè
]
→
âûðàæåíèå
0
❈❛s❡✲âûðàæåíèå èìååò îáùèé âèä
❝❛s❡ e ♦❢ ④ p1 match1 ❀ . . . ❀ pn matchn ⑥ ãäå êàæäûé
matchi
èìååò îáùèé âèä
⑤ gi1 ✲❃ ei1 ... ⑤ gimi ✲❃ eimi ✇❤❡r❡ declsi ✭➬àìåòüòå✱ ÷òî â ñèíòàêñè÷åñêîì ïðàâèëå äëÿ
gd ✏ ⑤✑
ÿâëÿåòñÿ òåðìèíàëüíûì ñèìâîëîì✱
à íå ñèíòàêñè÷åñêèì ìåòà✲ñèìâîëîì äëÿ óêàçàíèÿ àëüòåðíàòèâ✳✮ ✃àæäàÿ àëüòåðíàòèâà
pi matchi
ñîñòîèò èç îáðàçöà
pi
è åãî ñîïîñòàâëåíèé
matchi ✳ ✃àæäîå ñîïîñòàâëåíèå✱ â gij è òåë eij ✭âûðàæåíèé✮✱ ✭declsi ✮✱ ÷üÿ îáëàñòü âèäèìîñòè
ñâîþ î÷åðåäü✱ ñîñòîèò èç ïîñëåäîâàòåëüíîñòè ïàð ñòðàæåé çà êîòîðûìè ñëåäóþò íåîáÿçàòåëüíûå ñâÿçûâàíèÿ
ðàñïðîñòðàíÿåòñÿ íàä âñåìè ñòðàæàìè è âûðàæåíèÿìè àëüòåðíàòèâû✳ ➚ëüòåðíàòèâà âèäà
pat ✲❃ exp ✇❤❡r❡ decls èíòåðïðåòèðóåòñÿ êàê êðàòêàÿ çàïèñü äëÿ
pat ⑤ ❚r✉❡ ✲❃ exp ✇❤❡r❡ decls ❈❛s❡✲âûðàæåíèå
äîëæíî
èìåòü
ïî
êðàéíåé
ìåðå
îäíó
àëüòåðíàòèâó✱
è
êàæäàÿ
àëüòåðíàòèâà äîëæíà èìåòü ïî êðàéíåé ìåðå îäíî òåëî✳ ✃àæäîå òåëî äîëæíî èìåòü îäèí è òîò æå òèï✱ è âñå âûðàæåíèå äîëæíî áûòü òîãî æå òèïà✳ ➶û÷èñëåíèå ❝❛s❡✲âûðàæåíèÿ âûïîëíÿåòñÿ ïîñðåäñòâîì ñîïîñòàâëåíèÿ âûðàæåíèÿ
e
îòäåëüíûì àëüòåðíàòèâàì✳ ➚ëüòåðíàòèâû ïðîâåðÿþòñÿ ïîñëåäîâàòåëüíî✱ ñâåðõó âíèç✳ ➴ñëè
e
ñîîòâåòñòâóåò îáðàçöó â àëüòåðíàòèâå✱ âûïîëíÿåòñÿ ñâÿçûâàíèå ïåðåìåííûõ✱
ñíà÷àëà óêàçàííûõ â îáðàçöå✱ à çàòåì ✖ ñ ïîìîùüþ
declsi
â îïåðàòîðå
✇❤❡r❡✱ ñâÿçàííîì ❚r✉❡✱
ñ ýòîé àëüòåðíàòèâîé✳ ➴ñëè çíà÷åíèå îäíîãî èç âû÷èñëÿåìûõ ñòðàæåé îêàæåòñÿ
â òîì æå îêðóæåíèè✱ ÷òî è ñòðàæ✱ áóäåò âû÷èñëåíà ñîîòâåòñòâóþùàÿ ïðàâàÿ ÷àñòü✳ ➴ñëè çíà÷åíèÿ âñåõ ñòðàæåé îêàæóòñÿ
❋❛❧s❡✱
ïðîöåññ ñîïîñòàâëåíèÿ ñ îáðàçöîì áóäåò
âîçîáíîâëåí ñî ñëåäóþùåé àëüòåðíàòèâû✳ ➴ñëè íå óäàñòñÿ ñîïîñòàâèòü íè îäèí îáðàçåö✱
✸✳✶✹✳
✸✾
❉❖✲➶ÛÐ➚➷➴❮➮ß
ðåçóëüòàòîì áóäåò ⊥✳ Ñîïîñòàâëåíèå ñ îáðàçöîì îïèñàíî â ðàçäåëå ✸✳✶✼✱ à ôîðìàëüíàÿ ñåìàíòèêà ❝❛s❡✲âûðàæåíèé ✖ â ðàçäåëå ✸✳✶✼✳✸✳ ➬àìå÷àíèå î ðàçáîðå✳ ➶ûðàæåíèå ❝❛s❡ ① ♦❢ ④ ✭❛✱❴✮ ⑤ ❧❡t ❜ ❂ ♥♦t ❛ ✐♥ ❜ ✿✿ ❇♦♦❧ ✲❃ ❛ ⑥
íåëåãêî ïðàâèëüíî èíòåðïðåòèðîâàòü ïðè ðàçáîðå✳ ❰íî èìååò åäèíñòâåííóþ îäíîçíà÷íóþ èíòåðïðåòàöèþ✱ à èìåííî✿ ❝❛s❡ ① ♦❢ ④ ✭❛✱❴✮ ⑤ ✭❧❡t ❜ ❂ ♥♦t ❛ ✐♥ ❜ ✿✿ ❇♦♦❧✮ ✲❃ ❛ ⑥
Òåì íå ìåíåå✱ âûðàæåíèå ❇♦♦❧ ✲❃ ❛ ÿâëÿåòñÿ ñèíòàêñè÷åñêè ïðàâèëüíûì òèïîì✱ è ñèíòàêñè÷åñêèå àíàëèçàòîðû ñ îãðàíè÷åííûì ïðåäâàðèòåëüíûì ïðîñìîòðîì ìîãóò âûáðàòü ýòîò íåïðàâèëüíûé âàðèàíò✱ è òîãäà ïðîãðàììà áóäåò ïðèçíàíà íåäîïóñòèìîé✳ Ïîýòîìó ìû ñîâåòóåì ïðîãðàììèñòàì èçáåãàòü èñïîëüçîâàíèÿ ñòðàæåé✱ êîòîðûå çàêàí÷èâàþòñÿ óêàçàíèåì ñèãíàòóðû òèïà✱ èìåííî ïîýòîìó gd ñîäåðæèò exp 0 ✱ à íå íå exp ✳ ✸✳✶✹
❉♦✲âûðàæåíèÿ
exp stmts stmt
→ → → | | |
❞♦✲âûðàæåíèå)
❞♦ ④ stmts ⑥ stmt1 . . . stmtn exp [❀] exp ❀ pat ❁✲ exp ❀ ❧❡t decls ❀ ❀
( (n ≥ 0 )
(ïóñòàÿ
èíñòðóêöèÿ)
Ïåðåâîä✿
→ ❞♦ ④ ñïèñîê✲èíñòðóêöèé ⑥ (❞♦✲âûðàæåíèå) ñïèñîê✲èíñòðóêöèé → èíñòðóêöèÿ1 . . . èíñòðóêöèÿn (n ≥ 0 ) èíñòðóêöèÿ → âûðàæåíèå ❀ | îáðàçåö ❁✲ âûðàæåíèå ❀ | ❧❡t ñïèñîê✲îáúÿâëåíèé ❀ |❀ (ïóñòàÿ èíñòðóêöèÿ) âûðàæåíèå
âûðàæåíèå
[❀]
ïðåäîñòàâëÿþò áîëåå óäîáíûé ñèíòàêñèñ äëÿ ìîíàäè÷åñêîãî ïðîãðàììèðîâàíèÿ✳ ❰íî ïîçâîëÿåò çàïèñàòü òàêîå âûðàæåíèå ❉♦✲âûðàæåíèÿ
✹✵
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
♣✉t❙tr ✧①✿ ✧ ❃❃ ❣❡t▲✐♥❡ ❃❃❂ ❭❧ ✲❃ r❡t✉r♥ ✭✇♦r❞s ❧✮ â áîëåå òðàäèöèîííîì âèäå✿
❞♦ ♣✉t❙tr ✧①✿ ✧ ❧ ❁✲ ❣❡t▲✐♥❡ r❡t✉r♥ ✭✇♦r❞s ❧✮
Òðàíñëÿöèÿ✿
➘ëÿ ❞♦✲âûðàæåíèé âûïîëíÿþòñÿ ñëåäóþùèå òîæäåñòâà✱ êîòîðûå✱
ïîñëå óäàëåíèÿ ïóñòûõ
Ïðîïóñêè
stmts ✱
ìîæíî èñïîëüçîâàòü â êà÷åñòâå òðàíñëÿöèè â ÿäðî✿
❞♦ ④e ⑥ ❞♦ ④e ❀stmts ⑥ ❞♦ ④p ❁✲ e ❀ stmts ⑥
❂
❞♦ ④❧❡t decls ❀ stmts ⑥
❂
✧✳✳✳✧
îáîçíà÷àþò
îøèáêå✱ ïåðåäàâàåìîå ôóíêöèè
❂ ❂
e e ❃❃ ❞♦ ④stmts ⑥ ❧❡t ♦❦ p ❂ ❞♦ ④stmts ⑥ ♦❦ ❴ ❂ ❢❛✐❧ ✧✳✳✳✧ ✐♥ e ❃❃❂ ♦❦ ❧❡t decls ✐♥ ❞♦ ④stmts ⑥
ãåíåðèðóåìîå
❢❛✐❧✱
êîìïèëÿòîðîì
ñîîáùåíèå
îá
æåëàòåëüíî äàâàÿ íåêîòîðîå óêàçàíèå
❃❃✱ ❃❃❂ è ❢❛✐❧ ▼♦♥❛❞✱ îïðåäåëåííûìè â Pr❡❧✉❞❡❀ ♦❦ ÿâëÿåòñÿ íîâûì
íà ìåñòîïîëîæåíèå îøèáêè ñîïîñòàâëåíèÿ ñ îáðàçöîì❀ ôóíêöèè ÿâëÿþòñÿ îïåðàöèÿìè â êëàññå èäåíòèôèêàòîðîì✳
✃àê ïîêàçàíî â òðàíñëÿöèè
❞♦✱
ïåðåìåííûå✱ ñâÿçàííûå
❧❡t✱
èìåþò ïîëíîñòüþ
ïîëèìîðôíûå òèïû✱ òîãäà êàê òå ïåðåìåííûå✱ êîòîðûå îïðåäåëåíû ñ ïîìîùüþ
❁✲✱
ÿâëÿþòñÿ ñâÿçàííûìè ëÿìáäà✲âûðàæåíèåì è ïîýòîìó ÿâëÿþòñÿ ìîíîìîðôíûìè✳
✸✳✶✺
Òèïû äàííûõ ñ èìåíîâàííûìè ïîëÿìè
❰áúÿâëåíèå òèïà äàííûõ ìîæåò ñîäåðæàòü íåîáÿçàòåëüíûå îïðåäåëåíèÿ èìåí ïîëåé ✭ñì✳ ðàçäåë ✹✳✷✳✶✮✳ Ýòè èìåíà ïîëåé ìîæíî èñïîëüçîâàòü äëÿ ñîçäàíèÿ✱ èçâëå÷åíèÿ è îáíîâëåíèÿ ïîëåé ñïîñîáîì✱ êîòîðûé íå çàâèñèò îò âñåé ñòðóêòóðû òèïà äàííûõ✳ Ðàçëè÷íûå òèïû äàííûõ íå ìîãóò ñîâìåñòíî èñïîëüçîâàòü îáùèå èìåíà ïîëåé â îäíîé îáëàñòè âèäèìîñòè✳ ➮ìÿ ïîëÿ ìîæíî èñïîëüçîâàòü íå áîëåå îäíîãî ðàçà â êîíñòðóêòîðå✳ ➶ ïðåäåëàõ òèïà äàííûõ✱ òåì íå ìåíåå✱ èìÿ ïîëÿ ìîæíî èñïîëüçîâàòü â áîëåå ÷åì îäíîì êîíñòðóêòîðå✱ ïðè óñëîâèè✱ ÷òî ïîëå èìååò îäèí è òîò æå òèï âî âñåõ êîíñòðóêòîðàõ✳ ➘ëÿ òîãî ÷òîáû ïðîèëëþñòðèðîâàòü ïîñëåäíåå çàìå÷àíèå✱ ðàññìîòðèì✿
❞❛t❛ ❙ ❂ ❙✶ ④ ① ✿✿ ■♥t ⑥ ⑤ ❙✷ ④ ① ✿✿ ■♥t ⑥ ✲✲ ❖❑ ❞❛t❛ ❚ ❂ ❚✶ ④ ② ✿✿ ■♥t ⑥ ⑤ ❚✷ ④ ② ✿✿ ❇♦♦❧ ⑥ ✲✲ Ï❐❰Õ❰
✸✳✶✺✳
✹✶
Ò➮ÏÛ ➘➚❮❮ÛÕ Ñ ➮❒➴❮❰➶➚❮❮Û❒➮ Ï❰❐ß❒➮
➬äåñü ❙ ÿâëÿåòñÿ äîïóñòèìûì òèïîì äàííûõ✱ à ❚ ✖ íåò✱ ïîòîìó ÷òî â ïîñëåäíåì ñëó÷àå äëÿ ② óêàçàí äðóãîé òèï✱ ïðîòèâîðå÷àùèé óêàçàííîìó ðàíåå✳ ✸✳✶✺✳✶
aexp
➮çâëå÷åíèå ïîëåé
→
qvar
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
➮ìåíà ïîëåé èñïîëüçóþòñÿ â êà÷åñòâå ñåëåêòîðíîé ôóíêöèè✳ ✃îãäà èìÿ ïîëÿ èñïîëüçóåòñÿ â êà÷åñòâå ïåðåìåííîé✱ îíî äåéñòâóåò êàê ôóíêöèÿ✱ êîòîðàÿ èçâëåêàåò ïîëå èç îáúåêòà✳ Ñåëåêòîðû ÿâëÿþòñÿ ñâÿçûâàíèÿìè âåðõíåãî óðîâíÿ✱ è ïîýòîìó îíè ìîãóò áûòü ïåðåêðûòû ëîêàëüíûìè ïåðåìåííûìè✱ íî íå ìîãóò êîíôëèêòîâàòü ñ äðóãèìè ñâÿçûâàíèÿìè âåðõíåãî óðîâíÿ ñ òåì æå èìåíåì✳ Ýòî ñîêðûòèå çàòðàãèâàåò òîëüêî ñåëåêòîðíûå ôóíêöèè✱ ïðè ñîçäàíèè çàïèñåé ✭ðàçäåë ✸✳✶✺✳✷✮ è èõ îáíîâëåíèè ✭ðàçäåë ✸✳✶✺✳✸✮ èìåíà ïîëåé íå ìîãóò áûòü ñïóòàíû ñ îáû÷íûìè ïåðåìåííûìè✳ ➮ìÿ ïîëÿ f ïðåäñòàâëÿåò ñîáîé ñåëåêòîðíóþ ôóíêöèþ â ñîîòâåòñòâèè ñ îïðåäåëåíèåì✿ f ① ❂ ❝❛s❡ ① ♦❢ ④ C1 p11 . . . p1k ✲❃ e1 ❀ . . . ❀ Cn pn1 . . . pnk ✲❃ en ⑥ ãäå âñå C1 . . . Cn ✖ êîíñòðóêòîðû òèïà äàííûõ✱ ñîäåðæàùèå ïîëå ñ èìåíåì f ✱ pij ✖ ýòî ②✱ êîãäà f èìåíóåò ñîáîé j ✲þ êîìïîíåíòó Ci ✱ èëè ❴ èíà÷å✱ à ei ✖ ýòî ②✱ êîãäà íåêîòîðîå ïîëå â Ci èìååò èìÿ f ✱ èëè ✉♥❞❡❢✐♥❡❞ èíà÷å✳ Òðàíñëÿöèÿ✿
✸✳✶✺✳✷
Ñîçäàíèå òèïîâ äàííûõ ñ èñïîëüçîâàíèåì èìåí ïîëåé
aexp
→
qcon ④ fbind1 ✱ . . . ✱ fbindn ⑥
fbind
→
qvar ❂ exp
èìåíîâàííàÿ êîíñòðóêöèÿ,
(
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
→
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
④ ñâÿçûâàíèå✲èìåíè✲ïîëÿ1 ✱ . . . ✱ ñâÿçûâàíèå✲èìåíè✲ïîëÿn ⑥ (èìåíîâàííàÿ êîíñòðóêöèÿ, n ≥ 0 ) ñâÿçûâàíèå✲èìåíè✲ïîëÿ → êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ ❂ âûðàæåíèå
n ≥ 0)
✹✷
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
✃îíñòðóêòîð ñ èìåíîâàííûìè ïîëÿìè ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ çíà÷åíèÿ✱ â êîòîðîì êîìïîíåíòû çàäàþòñÿ èìåíåì✱ à íå ïîçèöèåé✳ ➶ îòëè÷èå îò ôèãóðíûõ ñêîáîê✱ èñïîëüçóåìûõ â ñïèñêàõ îáúÿâëåíèé✱ çäåñü ïðèñóòñòâèå ôèãóðíûõ ñêîáîê íå çàâèñèò îò ðàçìåùåíèÿ òåêñòà✱ ñèìâîëû ④ è ⑥ äîëæíû èñïîëüçîâàòüñÿ ÿâíî✳ ✭Òî æå ñàìîå îòíîñèòñÿ ê îáíîâëåíèþ ïîëåé è îáðàçöàì ïîëåé✳✮ Ñîçäàíèå îáúåêòîâ ñ èñïîëüçîâàíèåì èìåí ïîëåé ïîä÷èíåíî ñëåäóþùèì îãðàíè÷åíèÿì✿ • • • •
❒îãóò èñïîëüçîâàòüñÿ òîëüêî èìåíà ïîëåé✱ îáúÿâëåííûå â çàäàííîì êîíñòðóêòîðå✳ ➮ìÿ ïîëÿ íå ìîæåò áûòü èñïîëüçîâàíî áîëåå îäíîãî ðàçà✳ Ïîëÿ✱ êîòîðûå íå èñïîëüçóþòñÿ✱ èíèöèàëèçèðóþòñÿ çíà÷åíèåì ⊥✳ ✃îãäà êàêîå✲íèáóäü èç îáÿçàòåëüíûõ ïîëåé ✭ïîëåé✱ ÷üè òèïû îáúÿâëåíû ñ ïðåôèêñîì ✦✮ îêàçûâàåòñÿ ïðîïóùåííûì âî âðåìÿ ñîçäàíèÿ îáúåêòà✱ âîçíèêàåò îøèáêà êîìïèëÿöèè✳ ❰áÿçàòåëüíûå ïîëÿ ðàññìàòðèâàþòñÿ â ðàçäåëå ✹✳✷✳✶✳
➶ûðàæåíèå ❋ ④⑥✱ ãäå ❋ ✖ êîíñòðóêòîð äàííûõ✱ ÿâëÿåòñÿ äîïóñòèìûì íåçàâèñèìî îò òîãî✱ áûëî èëè íåò ❋ îáúÿâëåíî ñ èñïîëüçîâàíèåì ñèíòàêñèñà çàïèñè ✭ïðè óñëîâèè✱ ÷òî ❋ íå èìååò îáÿçàòåëüíûõ ïîëåé✱ ñì✳ ïóíêò òðåòèé â ïðèâåäåííîì âûøå ñïèñêå✮❀ îíî îáîçíà÷àåò ❋ ⊥1 . . . ⊥n ✱ ãäå n ✖ ÷èñëî àðãóìåíòîâ ❋✳ ➶ ñâÿçûâàíèè f ❂ v ïîëå f èìåíóåò v ✳ C ④ bs ⑥ ❂ C (pick1C bs ✉♥❞❡❢✐♥❡❞) . . . (pickkC bs ✉♥❞❡❢✐♥❡❞) ãäå k ✖ ÷èñëî àðãóìåíòîâ C ✳ ➶ñïîìîãàòåëüíàÿ ôóíêöèÿ pickiC bs d îïðåäåëåíà ñëåäóþùèì îáðàçîì✿ ➴ñëè i ✲ûé êîìïîíåíò êîíñòðóêòîðà C èìååò èìÿ ïîëÿ f è åñëè f = v ïîÿâëÿåòñÿ â ñïèñêå ñâÿçûâàíèé bs ✱ òî pickiC bs d ðàâíî v ✳ ➮íà÷å pickiC bs d ðàâíî çíà÷åíèþ ïî óìîë÷àíèþ d ✳
Òðàíñëÿöèÿ✿
✸✳✶✺✳✸
❰áíîâëåíèÿ ñ èñïîëüçîâàíèåì èìåí ïîëåé
→
aexp
aexphqconi ④ fbind1 ✱ . . . ✱ fbindn ⑥
èìåíîâàííîå îáíîâëåíèå, n ≥ 1)
(
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
→
âûðàæåíèå✲àðãóìåíòàhêâàëèôèöèðîâàííûé✲êîíñòðóêòîði
④ ñâÿçûâàíèå✲èìåíè✲ïîëÿ1 ✱ . . . ✱ (èìåíîâàííîå îáíîâëåíèå, n ≥ 1 )
ñâÿçûâàíèå✲èìåíè✲ïîëÿn
⑥
✸✳✶✺✳
✹✸
Ò➮ÏÛ ➘➚❮❮ÛÕ Ñ ➮❒➴❮❰➶➚❮❮Û❒➮ Ï❰❐ß❒➮
➬íà÷åíèÿ✱ ïðèíàäëåæàùèå òèïó äàííûõ ñ èìåíîâàííûìè ïîëÿìè✱ ìîæíî îáíîâëÿòü✱ íå áîÿñü ðàçðóøèòü ñòðóêòóðó äàííûõ✳ Ïðè ýòîì ñîçäàåòñÿ íîâîå çíà÷åíèå✱ â êîòîðîì çàäàííûå çíà÷åíèÿ ïîëåé çàìåùàþò òå✱ ÷òî áûëè â ñóùåñòâóþùåì çíà÷åíèè✳ ❰áíîâëåíèÿ ïîä÷èíÿþòñÿ ñëåäóþùèì ïðàâèëàì✿ • • • •
➶ñå èìåíà äîëæíû áûòü âçÿòû èç îäíîãî òèïà äàííûõ✳ Ïî ìåíüøåé ìåðå îäèí êîíñòðóêòîð äîëæåí îïðåäåëÿòü âñå èìåíà✱ óïîìÿíóòûå â îáíîâëåíèè✳ ❮è îäíî èìÿ íå ìîæåò áûòü óïîìÿíóòî áîëåå îäíîãî ðàçà✳ ➴ñëè îáíîâëÿåìîå çíà÷åíèå íå ñîäåðæèò âñå óêàçàííûå èìåíà✱ â õîäå âûïîëíåíèÿ âîçíèêíåò îøèáêà✳
Òðàíñëÿöèÿ✿
e ④ bs ⑥
❂
➮ñïîëüçóÿ ïðåäûäóùåå îïðåäåëåíèå ôóíêöèè pick ✱ ❝❛s❡ e ♦❢ C1 v1 . . . vk1 ✲❃ C1 (pick1C1 bs v1 ) . . . (pickkC11 bs vk1 )
✳✳✳
C
C
Cj v1 . . . vkj ✲❃ Cj (pick1 j bs v1 ) . . . (pickkj j bs vkj ) ❴ ✲❃ ❡rr♦r ✧❰øèáêà îáíîâëåíèÿ✧
ãäå {C1 , . . . , Cj } ✖ íàáîð êîíñòðóêòîðîâ✱ ñîäåðæàùèõ âñå èìåíà â bs ✱ à ki ✖ ÷èñëî àðãóìåíòîâ Ci ✳ ➶îò íåêîòîðûå ïðèìåðû✱ èñïîëüçóþùèå èìåíîâàííûå ïîëÿ✿ ❞❛t❛ ❚
❂ ❈✶ ④❢✶✱❢✷ ✿✿ ■♥t⑥ ⑤ ❈✷ ④❢✶ ✿✿ ■♥t✱ ❢✸✱❢✹ ✿✿ ❈❤❛r⑥
➶ûðàæåíèå
❈✶ ④❢✶ ❂ ✸⑥ ❈✷ ④❢✶ ❂ ✶✱ ❢✹ ❂ ✬❆✬✱ ❢✸ ❂ ✬❇✬⑥ ① ④❢✶ ❂ ✶⑥
Òðàíñëÿöèÿ
❈✶ ✸ ✉♥❞❡❢✐♥❡❞ ❈✷ ✶ ✬❇✬ ✬❆✬ ❝❛s❡ ① ♦❢ ❈✶ ❴ ❢✷ ✲❃ ❈✶ ✶ ❢✷ ❈✷ ❴ ❢✸ ❢✹ ✲❃ ❈✷ ✶ ❢✸ ❢✹
Ïîëå ❢✶ ÿâëÿåòñÿ îáùèì äëÿ îáîèõ êîíñòðóêòîðîâ â ❚✳ Ýòîò ïðèìåð òðàíñëèðóåò âûðàæåíèÿ✱ èñïîëüçóþùèå êîíñòðóêòîðû✱ çàïèñûâàåìûå ñ èìåíàìè ïîëåé✱ â ýêâèâàëåíòíûå âûðàæåíèÿ✱ èñïîëüçóþùèå òå æå ñàìûå êîíñòðóêòîðû áåç èìåí ïîëåé✳ ➴ñëè íå áóäåò åäèíîãî êîíñòðóêòîðà✱ êîòîðûé îïðåäåëÿåò íàáîð èìåí ïîëåé â îáíîâëåíèè✱ òàêîãî êàê ① ④❢✷ ❂ ✶✱ ❢✸ ❂ ✬①✬⑥✱ ïðîèçîéäåò îøèáêà êîìïèëÿöèè✳
✹✹
➹❐➚➶➚ ✸✳
✸✳✶✻
➶ÛÐ➚➷➴❮➮ß
Ñèãíàòóðû òèïîâ âûðàæåíèé
exp ✿✿ [context ❂❃] type
→
exp
Ïåðåâîä✿ âûðàæåíèå
→
âûðàæåíèå
✿✿ [êîíòåêñò ❂❃]
òèï
èìåþò âèä e ✿✿ t ✱ ãäå e ✖ âûðàæåíèå✱ à t ✖ òèï ✭ðàçäåë ✹✳✶✳✷✮❀ îíè èñïîëüçóþòñÿ äëÿ ÿâíîãî óêàçàíèÿ òèïà âûðàæåíèÿ✱ â ÷àñòíîñòè✱ äëÿ òîãî ÷òîáû ðàçðåøèòü íåîäíîçíà÷íîñòü òèïîâ èç✲çà ïåðåãðóçêè ✭ñì✳ ðàçäåë ✹✳✸✳✹✮✳ ➬íà÷åíèåì âûðàæåíèÿ ÿâëÿåòñÿ çíà÷åíèå exp ✳ ✃àê è ñ îáû÷íûìè ñèãíàòóðàìè òèïîâ ✭ñì✳ ðàçäåë ✹✳✹✳✶✮✱ îáúÿâëåííûé òèï ìîæåò áûòü áîëåå ÷àñòíûì✱ ÷åì îñíîâíîé òèï✱ âûâîäèìûé èç exp ✱ íî áóäåò îøèáêîé óêàçàòü òèï✱ êîòîðûé îêàæåòñÿ áîëåå îáùèì èëè íå ñîïîñòàâèìûì ñ îñíîâíûì òèïîì✳
Ñèãíàòóðû òèïîâ âûðàæåíèé
Òðàíñëÿöèÿ✿
e ✿✿ t
✸✳✶✼
❂
❧❡t ④ v ✿✿ t ❀ v ❂ e ⑥ ✐♥ v
Ñîïîñòàâëåíèå ñ îáðàçöîì
ïîÿâëÿþòñÿ â ëÿìáäà✲àáñòðàêöèÿõ✱ îïðåäåëåíèÿõ ôóíêöèé✱ ñâÿçûâàíèÿõ ñ îáðàçöîì✱ îïèñàíèÿõ ñïèñêîâ✱ ❞♦✲âûðàæåíèÿõ è ❝❛s❡✲âûðàæåíèÿõ✳ Òåì íå ìåíåå✱ ïåðâûå ïÿòü èç íèõ â êîíå÷íîì ñ÷åòå òðàíñëèðóþòñÿ â ❝❛s❡✲âûðàæåíèÿ✱ ïîýòîìó äîñòàòî÷íî îãðàíè÷èòüñÿ îïðåäåëåíèåì ñåìàíòèêè ñîïîñòàâëåíèÿ ñ îáðàçöîì äëÿ ❝❛s❡✲âûðàæåíèé✳ ❰áðàçöû
✸✳✶✼✳✶
❰áðàçöû
❰áðàçöû èìåþò ñëåäóþùèé ñèíòàêñèñ✿ pat pat i
lpat i lpat 6 rpat i
→ | → | | → → →
var ✰ integer pat 0 pat i+1 [qconop (n,i) pat i+1 ] lpat i rpat i (lpat i | pat i+1 ) qconop (l,i) pat i+1 ✲ (integer | float) pat i+1 qconop (r,i) (rpat i | pat i+1 )
îáðàçåö óïîðÿäî÷èâàíèÿ)
(
(
îòðèöàòåëüíûé ëèòåðàë)
✸✳✶✼✳
✹✺
Ñ❰Ï❰ÑÒ➚➶❐➴❮➮➴ Ñ ❰➪Ð➚➬Ö❰❒
pat 10
→ |
apat gcon apat1 . . . apatk
(÷èñëî
àðãóìåíòîâ
êîíñòðóêòîðà
gcon = k,
k ≥ 1) → |
apat
var [ @ apat] gcon
|
qcon ④ fpat1 ✱ . . . ✱ fpatk ⑥
| | | |
literal ❴ ✭ pat ✮ ✭ pat1 ✱ . . . ✱ patk ✮
|
❬ pat1 ✱ . . . ✱ patk ❪
|
⑦ apat
(ëþáûå ñèìâîëû) (îáðàçåö â ñêîáêàõ) (îáðàçåö êîðòåæà, k ≥ 2) (îáðàçåö ñïèñêà, k ≥ 1) (íåîïðîâåðæèìûé îáðàçåö)
qvar ❂ pat
→
fpat
(✏òàêîé êàê✑✲îáðàçåö) (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà gcon = 0) (èìåíîâàííûé îáðàçåö, k ≥ 0)
Ïåðåâîä✿ îáðàçåö
→
ïåðåìåííàÿ
(îáðàçåö 0 îáðàçåö i îáðàçåö → i+1 îáðàçåö
✰
öåëûé✲ëèòåðàë
óïîðÿäî÷èâàíèÿ)
|
| |
[êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà(n,i)
i+1 îáðàçåö ]
i ëåâûé✲îáðàçåö
i ïðàâûé✲îáðàçåö i ëåâûé✲îáðàçåö → (ëåâûé✲îáðàçåöi | îáðàçåöi+1 ) êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà(l,i) i+1 îáðàçåö 6 ëåâûé✲îáðàçåö →
✲ (öåëûé✲ëèòåðàë | ëèòåðàë✲ñ✲ïëàâàþùåé✲òî÷êîé) (îòðèöàòåëüíûé ëèòåðàë) i ïðàâûé✲îáðàçåö → i+1 (r,i) îáðàçåö êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà i i+1 (ïðàâûé✲îáðàçåö | îáðàçåö ) 10 îáðàçåö → òàêîé✲êàê✲îáðàçåö
|
îáùèé✲êîíñòðóêòîð òàêîé✲êàê✲îáðàçåö1
...
òàêîé✲êàê✲îáðàçåök
✹✻
➹❐➚➶➚ ✸✳
(÷èñëî
àðãóìåíòîâ êîíñòðóêòîðà
òàêîé✲êàê✲îáðàçåö ïåðåìåííàÿ
(✏òàêîé
[@
gcon = k , k ≥ 1 )
→
òàêîé✲êàê✲îáðàçåö]
êàê✑✲îáðàçåö)
|
îáùèé✲êîíñòðóêòîð
|
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
(÷èñëî
➶ÛÐ➚➷➴❮➮ß
àðãóìåíòîâ êîíñòðóêòîðà
gcon = 0 )
④ îáðàçåö✲ñ✲èìåíåì1 ✱ . . . ✱ îáðàçåö✲ñ✲èìåíåìk ⑥ (èìåíîâàííûé îáðàçåö, k ≥ 0 ) | ëèòåðàë |❴ (ëþáûå ñèìâîëû) | ✭ îáðàçåö ✮ (îáðàçåö â ñêîáêàõ) | ✭ îáðàçåö1 ✱ . . . ✱ îáðàçåök ✮ (îáðàçåö êîðòåæà, k ≥ 2 ) | ❬ îáðàçåö1 ✱ . . . ✱ îáðàçåök ❪ (îáðàçåö ñïèñêà, k ≥ 1 ) | ⑦ òàêîé✲êàê✲îáðàçåö (íåîïðîâåðæèìûé îáðàçåö) →
îáðàçåö✲ñ✲èìåíåì
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
❂
îáðàçåö
×èñëî àðãóìåíòîâ êîíñòðóêòîðà äîëæíî ñîîòâåòñòâîâàòü ÷èñëó îáðàçöîâ✱ ñâÿçàííûõ ñ íèì❀ íåëüçÿ ñîïîñòàâëÿòü ÷àñòè÷íî ïðèìåíåííûé êîíñòðóêòîð✳ ➶ñå
îáðàçöû
ïîÿâëÿòüñÿ
äîëæíû
áîëåå
❢ ✭①✱①✮ ❂ ① ❰áðàçöû âèäà
var
îäíîãî
áûòü ðàçà✳
ëèíåéíûìè ❮àïðèìåð✱
✿
íè
îäíà
ñëåäóþùåå
ïåðåìåííàÿ
îïðåäåëåíèå
íå
ìîæåò
íåäîïóñòèìî✿
✲✲ ➬➚ÏÐ➴Ù➴❮❰❀ ① äâàæäû èñïîëüçóåòñÿ â îáðàçöå
var ❅pat
íàçûâàþòñÿ ✏òàêèìè êàê✑✲îáðàçöàìè✱ è ïîçâîëÿþò èñïîëüçîâàòü
â êà÷åñòâå èìåíè äëÿ çíà÷åíèÿ✱ ñîïîñòàâëÿåìîãî
pat ✳
❮àïðèìåð✱
❝❛s❡ ❡ ♦❢ ④ ①s❅✭①✿r❡st✮ ✲❃ ✐❢ ①❂❂✵ t❤❡♥ r❡st ❡❧s❡ ①s ⑥ ýêâèâàëåíòåíî
❧❡t ④ ①s ❂ ❡ ⑥ ✐♥ ❝❛s❡ ①s ♦❢ ④ ✭①✿r❡st✮ ✲❃ ✐❢ ①❂❂✵ t❤❡♥ r❡st ❡❧s❡ ①s ⑥
❰áðàçöû âèäà
❴
îáîçíà÷àþò ãðóïïû ëþáûõ ñèìâîëîâ è ïîëåçíû✱ êîãäà íåêîòîðàÿ
÷àñòü îáðàçöà íå èñïîëüçóåòñÿ â ïðàâîé ÷àñòè✳ Ýòî êàê åñëè áû èäåíòèôèêàòîð✱ íå èñïîëüçóåìûé ãäå✲ëèáî â äðóãîì ìåñòå✱ áûë ïîìåùåí íà ñâîå ìåñòî✳ ❮àïðèìåð✱
✸✳✶✼✳
Ñ❰Ï❰ÑÒ➚➶❐➴❮➮➴ Ñ ❰➪Ð➚➬Ö❰❒
❝❛s❡ ❡ ♦❢ ④ ❬①✱❴✱❴❪ ✲❃
✹✼
✐❢ ①❂❂✵ t❤❡♥ ❚r✉❡ ❡❧s❡ ❋❛❧s❡ ⑥
ýêâèâàëåíòíî ❝❛s❡ ❡ ♦❢ ④ ❬①✱②✱③❪ ✲❃
✸✳✶✼✳✷
✐❢ ①❂❂✵ t❤❡♥ ❚r✉❡ ❡❧s❡ ❋❛❧s❡ ⑥
❮åôîðìàëüíàÿ ñåìàíòèêà ñîïîñòàâëåíèÿ ñ îáðàçöîì
❰áðàçöû ñîïîñòàâëÿþòñÿ çíà÷åíèÿì✳ Ïîïûòêà ñîïîñòàâèòü îáðàçåö ìîæåò èìåòü îäèí èç òðåõ ðåçóëüòàòîâ✿ ïîòåðïåòü íåóäà÷ó✱ èìåòü óñïåõ✱ ïðè ýòîì êàæäàÿ ïåðåìåííàÿ â îáðàçöå ñâÿçûâàåòñÿ ñ ñîîòâåòñòâóþùèì çíà÷åíèåì✱ èëè áûòü îòêëîíåíà ✭ò✳å✳ âåðíóòü ⊥✮✳ Ñîïîñòàâëåíèå ñ îáðàçöîì âûïîëíÿåòñÿ ñëåâà íàïðàâî è èçâíå âîâíóòðü✱ â ñîîòâåòñòâèè ñî ñëåäóþùèìè ïðàâèëàìè✿ ✶✳ Ñîïîñòàâëåíèå îáðàçöà var çíà÷åíèþ v âñåãäà èìååò óñïåõ è ñâÿçûâàåò var ñ v ✳ ✷✳ Ñîïîñòàâëåíèå îáðàçöà ⑦apat çíà÷åíèþ v âñåãäà èìååò óñïåõ✳ Ñâîáîäíûå ïåðåìåííûå â apat ñâÿçûâàþòñÿ ñ ñîîòâåòñòâóþùèìè çíà÷åíèÿìè✱ åñëè ñîïîñòàâëåíèå apat ñ v çàâåðøèòñÿ óñïåøíî✱ èëè ñ ⊥✱ åñëè ñîïîñòàâëåíèå apat ñ v ïîòåðïèò íåóäà÷ó èëè áóäåò îòêëîíåíî✳ ✭Ñâÿçûâàíèå íå ïîäðàçóìåâàåò âû÷èñëåíèå✳✮ Ñ òî÷êè çðåíèÿ îïåðàöèé✱ ýòî îçíà÷àåò✱ ÷òî íèêàêîå ñîïîñòàâëåíèå íå áóäåò ñäåëàíî ñ îáðàçöîì ⑦apat äî òåõ ïîð✱ ïîêà îäíà èç ïåðåìåííûõ â apat íå áóäåò èñïîëüçîâàíà✳ ➶ ýòîò ìîìåíò âåñü îáðàçåö ñîïîñòàâëÿåòñÿ çíà÷åíèþ✱ è åñëè ñîïîñòàâëåíèå ïîòåðïèò íåóäà÷ó èëè áóäåò îòêëîíåíî✱ òàê âûïîëíÿåòñÿ âñå âû÷èñëåíèå✳ ✸✳ Ñîïîñòàâëåíèå îáðàçöà ❴ ëþáîìó çíà÷åíèþ âñåãäà èìååò óñïåõ✱ ïðè ýòîì íèêàêèõ ñâÿçûâàíèé íå ïðîèñõîäèò✳ ✹✳ Ñîïîñòàâëåíèå îáðàçöà con pat çíà÷åíèþ✱ ãäå con ✖ êîíñòðóêòîð✱ îïðåäåëåííûé ñ ïîìîùüþ ♥❡✇t②♣❡✱ çàâèñèò îò çíà÷åíèÿ✿ • ➴ñëè çíà÷åíèå èìååò âèä con v ✱ òî pat ñîïîñòàâëÿåòñÿ v ✳ • ➴ñëè çíà÷åíèåì ÿâëÿåòñÿ ⊥✱ òî pat ñîïîñòàâëÿåòñÿ ⊥✳ Òî åñòü êîíñòðóêòîðû✱ ñâÿçàííûå ñ ♥❡✇t②♣❡✱ ñëóæàò òîëüêî äëÿ òîãî✱ ÷òîáû èçìåíèòü òèï çíà÷åíèÿ✳ ✺✳ Ñîïîñòàâëåíèå îáðàçöà con pat1 . . . patn çíà÷åíèþ✱ ãäå con ✖ êîíñòðóêòîð✱ îïðåäåëåííûé ñ ïîìîùüþ ❞❛t❛✱ çàâèñèò îò çíà÷åíèÿ✿ • ➴ñëè çíà÷åíèå èìååò âèä con v1 . . . vn ✱ ÷àñòè îáðàçöà ñîïîñòàâëÿþòñÿ ñëåâà íàïðàâî êîìïîíåíòàì çíà÷åíèÿ äàííûõ✱ åñëè âñå ñîïîñòàâëåíèÿ
✹✽
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
çàâåðøàòñÿ óñïåøíî✱ ðåçóëüòàòîì âñåãî ñîïîñòàâëåíèÿ áóäåò óñïåõ❀ ïåðâàÿ æå íåóäà÷à èëè îòêëîíåíèå ïðèâåäóò ê òîìó✱ ÷òî ñîïîñòàâëåíèå ñ îáðàçöîì ñîîòâåòñòâåííî ïîòåðïèò íåóäà÷ó èëè áóäåò îòêëîíåíî✳
•
➴ñëè çíà÷åíèå èìååò âèä
con ′ v1 . . . vm ✱
ãäå
con
✖ êîíñòðóêòîð✱ îòëè÷íûé
′ îò con ✱ ñîïîñòàâëåíèå ïîòåðïèò íåóäà÷ó✳
•
➴ñëè çíà÷åíèå ðàâíî
⊥✱
ñîïîñòàâëåíèå áóäåò îòêëîíåíî✳
✻✳ Ñîïîñòàâëåíèå ñ êîíñòðóêòîðîì✱ èñïîëüçóþùèì èìåíîâàííûå ïîëÿ✱ ✖ ýòî òî æå ñàìîå✱ ÷òî è ñîïîñòàâëåíèå ñ îáû÷íûì êîíñòðóêòîðîì✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî ïîëÿ ñîïîñòàâëÿþòñÿ â òîì ïîðÿäêå✱ â êîòîðîì îíè ïåðå÷èñëåíû ✭íàçâàíû✮ â ñïèñêå ïîëåé✳ ➶ñå ïåðå÷èñëåííûå ïîëÿ äîëæíû áûòü îáúÿâëåíû êîíñòðóêòîðîì✱ ïîëÿ íå ìîãóò áûòü íàçâàíû áîëåå îäíîãî ðàçà✳ Ïîëÿ✱ êîòîðûå íå íàçâàíû â îáðàçöå✱ èãíîðèðóþòñÿ ✭ñîïîñòàâëÿþòñÿ ñ
❴✮✳
✼✳ Ñîïîñòàâëåíèå ÷èñëîâîãî✱ ñèìâîëüíîãî èëè ñòðîêîâîãî ëèòåðàëà
v
èìååò óñïåõ✱ åñëè
v ❂❂ k ✱
ãäå
❂❂
k
çíà÷åíèþ
ïåðåãðóæåí íà îñíîâàíèè òèïà îáðàçöà✳
Ñîïîñòàâëåíèå áóäåò îòêëîíåíî✱ åñëè ýòà ïðîâåðêà áóäåò îòêëîíåíà✳ ➮íòåðïðåòàöèÿ
÷èñëîâûõ
ëèòåðàëîâ
â
òî÷íîñòè
îïèñàíà
â
ðàçäåëå
✸✳✷✱
òî
❢r♦♠■♥t❡❣❡r èëè ❢r♦♠❘❛t✐♦♥❛❧ ïðèìåíÿåòñÿ ê ❘❛t✐♦♥❛❧ ✭ñîîòâåòñòâåííî✮ äëÿ ïðåîáðàçîâàíèÿ åãî
åñòü ïåðåãðóæåííàÿ ôóíêöèÿ
■♥t❡❣❡r
ëèòåðàëó òèïà
èëè
ê ñîîòâåòñòâóþùåìó òèïó✳
n ✰k ✲îáðàçöà ✭ãäå n ✖ ïåðåìåííàÿ✱ à k ✖ ïîëîæèòåëüíûé öåëûé v èìååò óñïåõ✱ åñëè x ❃❂ k ✱ ïðè ýòîì n ñâÿçûâàåòñÿ ñ x ✲ k ✱ íåóäà÷ó èíà÷å✳ Ñíîâà✱ ôóíêöèè ❃❂ è ✲ ÿâëÿþòñÿ ïåðåãðóæåííûìè â
✽✳ Ñîïîñòàâëåíèå
ëèòåðàë✮ çíà÷åíèþ è òåðïèò
çàâèñèìîñòè îò òèïà îáðàçöà✳ Ñîïîñòàâëåíèå áóäåò îòêëîíåíî✱ åñëè ñðàâíåíèå áóäåò îòêëîíåíî✳ ➮íòåðïðåòàöèÿ
ëèòåðàëà
k
ÿâëÿåòñÿ
òî÷íî
òàêîé
æå✱
êàê
è
äëÿ
÷èñëîâûõ
ëèòåðàëîâ✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî äîïóñòèìû òîëüêî öåëûå ëèòåðàëû✳ ✾✳ Ñîïîñòàâëåíèå ✏òàêîãî êàê✑✲îáðàçöà ñîïîñòàâëåíèÿ
apat
ñ
v
apat
ñ
v✱
var ❅apat
çíà÷åíèþ
v
var
ñ
äîïîëíåííîãî ñâÿçûâàíèåì
ÿâëÿåòñÿ ðåçóëüòàòîì
v✳
➴ñëè ñîïîñòàâëåíèå
ïîòåðïèò íåóäà÷ó èëè áóäåò îòêëîíåíî✱ òàêîé æå ðåçóëüòàò áóäåò ó
ñîïîñòàâëåíèÿ ñ îáðàçöîì✳
Ïîìèìî î÷åâèäíûõ îãðàíè÷åíèé ñòàòè÷åñêèõ òèïîâ ✭íàïðèìåð✱ ñòàòè÷åñêîé îøèáêîé ÿâëÿåòñÿ ñîïîñòàâëåíèå ñèìâîëà ñ áóëåâñêèì çíà÷åíèåì✮✱ âûïîëíÿþòñÿ ñëåäóþùèå îãðàíè÷åíèÿ ñòàòè÷åñêèõ êëàññîâ✿
•
Öåëî÷èñëåííûé ëèòåðàëüíûé îáðàçåö ìîæíî ñîïîñòàâèòü òîëüêî çíà÷åíèþ êëàññà
◆✉♠✳ •
❐èòåðàëüíûé îáðàçåö ñ ïëàâàþùåé òî÷êîé ìîæíî ñîïîñòàâèòü òîëüêî çíà÷åíèþ â êëàññå
❋r❛❝t✐♦♥❛❧✳
• n ✰k ✲îáðàçåö
ìîæíî ñîïîñòàâèòü òîëüêî çíà÷åíèþ â êëàññå
■♥t❡❣r❛❧✳
✸✳✶✼✳
✹✾
Ñ❰Ï❰ÑÒ➚➶❐➴❮➮➴ Ñ ❰➪Ð➚➬Ö❰❒
❒íîãèå ëþäè ñ÷èòàþò✱ ÷òî n ✰k ✲îáðàçöû íå ñëåäóåò èñïîëüçîâàòü✳ Ýòè îáðàçöû ìîãóò áûòü óäàëåíû èëè èçìåíåíû â áóäóùèõ âåðñèÿõ ❍❛s❦❡❧❧✳ ➮íîãäà ïîëåçíî ðàçëè÷àòü äâà âèäà îáðàçöîâ✳ Ñîïîñòàâëåíèå ñ íåîïðîâåðæèìûì îáðàçöîì íå ÿâëÿåòñÿ ñòðîãèì✿ îáðàçåö ñîïîñòàâëÿåòñÿ✱ äàæå åñëè ñîïîñòàâëÿåìîå çíà÷åíèå ðàâíî ⊥✳ Ñîïîñòàâëåíèå ñ îïðîâåðæèìûì îáðàçöîì ÿâëÿåòñÿ ñòðîãèì✿ åñëè ñîïîñòàâëÿåìîå çíà÷åíèå ðàâíî ⊥✱ ñîïîñòàâëåíèå áóäåò îòêëîíåíî✳ ❮åîïðîâåðæèìûìè ÿâëÿþòñÿ ñëåäóþùèå îáðàçöû✿ ïåðåìåííàÿ✱ ñèìâîë ïîä÷åðêèâàíèÿ✱ N apat ✱ ãäå N ✖ êîíñòðóêòîð✱ îïðåäåëåííûé ñ ïîìîùüþ ♥❡✇t②♣❡✱ à apat ✖ íåîïðîâåðæèìûé îáðàçåö ✭ñì✳ ðàçäåë ✹✳✷✳✸✮✱ var ❅apat ✱ ãäå apat ✖ íåîïðîâåðæèìûé îáðàçåö✱ è îáðàçöû âèäà ⑦apat ✭íåçàâèñèìî îò òîãî✱ ÿâëÿåòñÿ ëè apat íåîïðîâåðæèìûì îáðàçöîì èëè íåò✮✳ ➶ñå îñòàëüíûå îáðàçöû ÿâëÿþòñÿ îïðîâåðæèìûìè✳ Ïðèâåäåì íåñêîëüêî ïðèìåðîâ✿ ✶✳ ➴ñëè îáðàçåö ❬✬❛✬✱✬❜✬❪ ñîïîñòàâëÿåòñÿ ❬✬①✬✱⊥❪✱ òî ñîïîñòàâëåíèå ✬❛✬ ñ ✬①✬ ïîòåðïèò íåóäà÷ó✱ è âñå ñîïîñòàâëåíèå çàâåðøèòñÿ íåóäà÷åé✳ ❮î åñëè ❬✬❛✬✱✬❜✬❪ ñîïîñòàâëÿåòñÿ ❬⊥✱✬①✬❪✱ òî ïîïûòêà ñîïîñòàâèòü ✬❛✬ ñ ⊥ ïðèâåäåò ê òîìó✱ ÷òî âñå ñîïîñòàâëåíèå áóäåò îòêëîíåíî✳ ✷✳ Ýòè ïðèìåðû äåìîíñòðèðóþò ñîïîñòàâëåíèå îïðîâåðæèìûõ è íåîïðîâåðæèìûõ îáðàçöîâ✿ ✭❭ ⑦✭①✱②✮ ✲❃ ✵✮ ⊥ ✭❭ ✭①✱②✮ ✲❃ ✵✮ ⊥ ✭❭ ⑦❬①❪ ✲❃ ✵✮ ❬❪ ✭❭ ⑦❬①❪ ✲❃ ①✮ ❬❪
⇒ ⇒ ⇒ ⇒
✵ ⊥ ✵ ⊥
✭❭ ⑦❬①✱⑦✭❛✱❜✮❪ ✲❃ ①✮ ❬✭✵✱✶✮✱⊥❪ ✭❭ ⑦❬①✱ ✭❛✱❜✮❪ ✲❃ ①✮ ❬✭✵✱✶✮✱⊥❪ ✭❭ ✭①✿①s✮ ✲❃ ①✿①✿①s✮ ⊥ ✭❭ ⑦✭①✿①s✮ ✲❃ ①✿①✿①s✮ ⊥
⇒ ⇒
⇒ ⇒
✭✵✱✶✮ ⊥
⊥ ⊥✿⊥✿⊥
✸✳ Ðàññìîòðèì ñëåäóþùèå îáúÿâëåíèÿ✿ ♥❡✇t②♣❡ ◆ ❂ ◆ ❇♦♦❧ ❞❛t❛ ❉ ❂ ❉ ✦❇♦♦❧
Ýòè ïðèìåðû ïîêàçûâàþò ðàçëè÷èå ìåæäó òèïàìè✱ îïðåäåëåííûìè ñ ïîìîùüþ ❞❛t❛ è ♥❡✇t②♣❡✱ ïðè ñîïîñòàâëåíèè ñ îáðàçöîì✿ ✭❭ ✭◆ ❚r✉❡✮ ✲❃ ❚r✉❡✮ ⊥ ✭❭ ✭❉ ❚r✉❡✮ ✲❃ ❚r✉❡✮ ⊥ ✭❭ ⑦✭❉ ❚r✉❡✮ ✲❃ ❚r✉❡✮ ⊥
⇒ ⇒ ⇒
⊥ ⊥ ❚r✉❡
➘îïîëíèòåëüíûå ïðèìåðû âû íàéäåòå â ðàçäåëå ✹✳✷✳✸✳
✺✵
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
❰áðàçöû âåðõíåãî óðîâíÿ â ❝❛s❡✲âûðàæåíèÿõ è íàáîð îáðàçöîâ âåðõíåãî óðîâíÿ â ñâÿçûâàíèÿõ èìåí ôóíêöèé èëè îáðàçöàõ ìîãóò èìåòü íîëü èëè áîëåå ñâÿçàííûõ ñ íèìè ñòðàæåé✳ Ñòðàæ ✖ ýòî áóëåâî âûðàæåíèå✱ êîòîðîå âû÷èñëÿåòñÿ òîëüêî ïîñëå òîãî✱ êàê âñå àðãóìåíòû áûëè óñïåøíî ñîïîñòàâëåíû✱ è✱ äëÿ òîãî ÷òîáû âñå ñîïîñòàâëåíèå ñ îáðàçöîì èìåëî óñïåõ✱ çíà÷åíèåì ýòîãî âûðàæåíèÿ äîëæíî áûòü èñòèíà✳ ❰êðóæåíèåì ñòðàæà ÿâëÿåòñÿ òî æå îêðóæåíèå✱ ÷òî è äëÿ ïðàâîé ÷àñòè àëüòåðíàòèâû ❝❛s❡✲âûðàæåíèÿ✱ îïðåäåëåíèÿ ôóíêöèè èëè ñâÿçûâàíèÿ ñ îáðàçöîì✱ ê êîòîðîìó îí ïðèêðåïëåí✳ Ñåìàíòèêà ñòðàæà èìååò î÷åâèäíîå âëèÿíèå íà õàðàêòåðèñòèêè ñòðîãîñòè ôóíêöèè èëè ❝❛s❡✲âûðàæåíèÿ✳ ➶ ÷àñòíîñòè✱ èç✲çà ñòðàæà ìîæåò áûòü âû÷èñëåí èíîé íåîïðîâåðæèìûé îáðàçåö ✳ ❮àïðèìåð✱ â
❢ ✿✿ ✭■♥t✱■♥t✱■♥t✮ ✲❃ ❬■♥t❪ ✲❃ ■♥t ❢ ⑦✭①✱②✱③✮ ❬❛❪ ⑤ ✭❛ ❂❂ ②✮ ❂ ✶ è ❛✱ è ② áóäóò âû÷èñëåíû ñ ïîìîùüþ ❂❂ â ñòðàæå✳
✸✳✶✼✳✸
Ôîðìàëüíàÿ ñåìàíòèêà ñîïîñòàâëåíèÿ ñ îáðàçöîì
Ñåìàíòèêà âñåõ êîíñòðóêöèé ñîïîñòàâëåíèÿ ñ îáðàçöîì✱ îòëè÷íûõ îò ❝❛s❡✲âûðàæåíèé✱ îïðåäåëåíà ñ ïîìîùüþ òîæäåñòâ✱ êîòîðûå óñòàíàâëèâàþò ñâÿçü ýòèõ êîíñòðóêöèé ñ ❝❛s❡ ✲âûðàæåíèÿìè✳ ➶ ñâîþ î÷åðåäü✱ ñåìàíòèêà ñàìèõ ❝❛s❡✲âûðàæåíèé çàäàíà â âèäå ïîñëåäîâàòåëüíîñòåé òîæäåñòâ íà ðèñ✳ ✸✳✶✕✸✳✷✳ ❐þáàÿ ðåàëèçàöèÿ äîëæíà îáåñïå÷èâàòü âûïîëíåíèå ýòèõ òîæäåñòâ❀ ïðè ýòîì íå îæèäàåòñÿ✱ ÷òî îíà áóäåò èñïîëüçîâàòü èõ íåïîñðåäñòâåííî✱ ïîñêîëüêó ýòî ìîãëî áû ïðèâåñòè ê ãåíåðàöèè äîâîëüíî íåýôôåêòèâíîãî êîäà✳ ❮à ðèñ✳ ✸✳✶ ✲ ✸✳✷✿ e ✱ e ′ è ei ✖ âûðàæåíèÿ✱ g è gi ✖ áóëåâû âûðàæåíèÿ✱ p è pi ✖ îáðàçöû✱ v ✱ x è xi ✖ ïåðåìåííûå✱ K è K ′ ✖ êîíñòðóêòîðû àëãåáðàè÷åñêèõ òèïîâ äàííûõ ✭❞❛t❛✮ ✭âêëþ÷àÿ êîíñòðóêòîðû êîðòåæåé✮✱ à N ✖ êîíñòðóêòîð ♥❡✇t②♣❡✳ Ïðàâèëî ✭❜✮ ñîîòâåòñòâóåò îñíîâíîìó ❝❛s❡✲âûðàæåíèþ èñõîäíîãî ÿçûêà✱ íåçàâèñèìî îò òîãî✱ âêëþ÷àåò ëè îíî ñòðàæåé✿ åñëè ñòðàæè íå óêàçàíû✱ òî â ôîðìàõ matchi âìåñòî ñòðàæåé gi,j áóäåò ïîäñòàâëåíî ❚r✉❡✳ Ïîñëåäóþùèå òîæäåñòâà óïðàâëÿþò ïîëó÷åííûì ❝❛s❡✲âûðàæåíèåì âñå áîëåå è áîëåå ïðîñòîé ôîðìû✳ Ïðàâèëî ✭❤✮ íà ðèñ✳ ✸✳✷ çàòðàãèâàåò ïåðåãðóæåííûé îïåðàòîð ❂❂❀ èìåííî ýòî ïðàâèëî îïðåäåëÿåò ñìûñë ñîïîñòàâëåíèÿ îáðàçöà ñ ïåðåãðóæåííûìè êîíñòàíòàìè✳ ➶ñå ýòè òîæäåñòâà ñîõðàíÿþò ñòàòè÷åñêóþ ñåìàíòèêó✳ Ïðàâèëà ✭❞✮✱ ✭❡✮✱ ✭❥✮✱ ✭q✮ è ✭s✮ èñïîëüçóþò ëÿìáäó✱ à íå ❧❡t❀ ýòî óêàçûâàåò íà òî✱ ÷òî ïåðåìåííûå✱ ñâÿçàííûå ñ ïîìîùüþ ❝❛s❡✱ ÿâëÿþòñÿ ìîíîìîðôíûìè ✭ðàçäåë ✹✳✶✳✹✮✳
✸✳✶✼✳
Ñ❰Ï❰ÑÒ➚➶❐➴❮➮➴ Ñ ❰➪Ð➚➬Ö❰❒
✭❛✮ ❝❛s❡ e ♦❢ ④ alts ⑥ = ✭❭v ✲❃ ãäå v ✖ íîâàÿ ïåðåìåííàÿ ✭❜✮ ❝❛s❡ v ♦❢ ④ p1 match1 ❀ . . .
❝❛s❡ v ♦❢ ④ alts ⑥✮ e
❀ pn matchn ⑥ ❝❛s❡ v ♦❢ ④ p1 match1 ❀ ❴ ✲❃ . . . ❝❛s❡ v ♦❢ ④ pn matchn ❀ ❴ ✲❃ ❡rr♦r ✧❮åò ñîïîñòàâëåíèé✧ ⑥. . .⑥ ãäå êàæäîå matchi èìååò âèä✿ ⑤ gi,1 ✲❃ ei,1 ❀ . . . ❀ ⑤ gi,mi ✲❃ ei,mi ✇❤❡r❡ ④ declsi ⑥
=
✭❝✮
✭❞✮ ✭❡✮ ✭❢✮
❝❛s❡ v ♦❢ ④ p ⑤ g1 ✲❃ e1 ❀ . . . ⑤ gn ✲❃ en ✇❤❡r❡ ④ decls ⑥ ❴ ✲❃ e′ ⑥ = ❝❛s❡ e′ ♦❢ ④y ✲❃ ✭ãäå y ✖ íîâàÿ ïåðåìåííàÿ✮ ❝❛s❡ v ♦❢ ④ p ✲❃ ❧❡t ④ decls ⑥ ✐♥ ✐❢ g1 t❤❡♥ e1 . . . ❡❧s❡ ✐❢ gn t❤❡♥ en ❡❧s❡ y ❀ ❴ ✲❃ y ⑥⑥ ❝❛s❡ v ♦❢ ④ ⑦p ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ✭❭x1 . . . xn ✲❃ e ✮ ✭❝❛s❡ v ♦❢ ④ p✲❃ x1 ⑥✮ . . . ✭❝❛s❡ v ♦❢ ④ p ✲❃ xn ⑥✮ ãäå x1 , . . . , xn ✖ ïåðåìåííûå â p ❝❛s❡ v ♦❢ ④ x❅p ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ v ♦❢ ④ p ✲❃ ✭ ❭ x ✲❃ e ✮ v ❀ ❴ ✲❃ e′ ⑥ ❝❛s❡ v ♦❢ ④ ❴ ✲❃ e❀ ❴ ✲❃ e′ ⑥ = e
Ðèñ✳ ✸✳✶✿ Ñåìàíòèêà ❝❛s❡✲âûðàæåíèé✱ ÷àñòü ✶
✺✶
✺✷
✭❣✮
✭❤✮ ✭✐✮ ✭❥✮ ✭❦✮ ✭❧✮ ✭♠✮
✭♥✮ ✭♦✮ ✭♣✮ ✭q✮ ✭r✮ ✭s✮
➹❐➚➶➚ ✸✳
➶ÛÐ➚➷➴❮➮ß
❝❛s❡ v ♦❢ ④ K p1 . . . pn ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ v ♦❢ ④ K x1 . . . xn ✲❃ ❝❛s❡ x1 ♦❢ ④ p1 ✲❃ . . . ❝❛s❡ xn ♦❢ ④ pn ✲❃ e ❀ ❴ ✲❃ e′ ⑥ . . . ❴ ✲❃ e′ ⑥ ′ ❴ ✲❃ e ⑥ ïî ìåíüøåé ìåðå îäèí èç p1 , . . . , pn íå ÿâëÿåòñÿ ïåðåìåííîé❀ x1 , . . . , xn ✖ íîâûå ïåðåìåííûå ❝❛s❡ v ♦❢ ④ k ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ✐❢ ✭v ❂❂k✮ t❤❡♥ e ❡❧s❡ e′ ãäå k ✖ ÷èñëîâîé✱ ñèìâîëüíûé èëè ñòðîêîâûé ëèòåðàë ❝❛s❡ v ♦❢ ④ x ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ v ♦❢ ④ x ✲❃ e ⑥ ❝❛s❡ v ♦❢ ④ x ✲❃ e ⑥ = ✭ ❭ x ✲❃ e ✮ v ❝❛s❡ N v ♦❢ ④ N p ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ v ♦❢ ④ p ✲❃ e❀ ❴ ✲❃ e′ ⑥ ãäå N ✖ êîíñòðóêòîð ♥❡✇t②♣❡ ❝❛s❡ ⊥ ♦❢ ④ N p ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ ⊥ ♦❢ ④ p ✲❃ e ⑥ ãäå N ✖ êîíñòðóêòîð ♥❡✇t②♣❡ ❝❛s❡ v ♦❢ ④ K ④ f1 ❂ p1 ✱ f2 ❂ p2 ✱ . . . ⑥ ✲❃ e ❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ e′ ♦❢ ④ y ✲❃ ❝❛s❡ v ♦❢ ④ K ④ f1 ❂ p1 ⑥ ✲❃ ❝❛s❡ v ♦❢ ④ K ④ f2 ❂ p2 ✱ . . . ⑥ ✲❃ e ❀ ❴ ✲❃ y ⑥❀ ❴ ✲❃ y ⑥⑥ ãäå f1 ✱ f2 ✱ . . . ✖ ïîëÿ êîíñòðóêòîðà K ✱ y✖ íîâàÿ ïåðåìåííàÿ ❝❛s❡ v ♦❢ ④ K ④ f ❂ p ⑥ ✲❃ e ❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ v ♦❢ ④ K p1 . . . pn ✲❃ e ❀ ❴ ✲❃ e′ ⑥ ãäå pi ðàâíî p✱ åñëè f èìåíóåò i✲óþ êîìïîíåíòó K ✱ ❴ èíà÷å ❝❛s❡ v ♦❢ ④ K ④⑥ ✲❃ e ❀ ❴ ✲❃ e′ ⑥ = ❝❛s❡ v ♦❢ ④ K ❴ . . . ❴ ✲❃ e ❀ ❴ ✲❃ e′ ⑥ ❝❛s❡ ✭K ′ e1 . . . em ✮ ♦❢ ④ K x1 . . . xn ✲❃ e❀ ❴ ✲❃ e′ ⑥ = e′ ãäå K è K ′ ✖ ðàçëè÷íûå êîíñòðóêòîðû ❞❛t❛ ñîîòâåòñòâåííî ñ n ❝❛s❡ ✭K e1 . . . en ✮ ♦❢ ④ K x1 . . . xn ✲❃ e❀ ❴ ✲❃ e ⑥ = ✭❭x1 . . . xn ✲❃ e✮ e1 . . . en ãäå K ✖ êîíñòðóêòîð ❞❛t❛ ñ n àðãóìåíòàìè ′
❝❛s❡ ⊥ ♦❢ ④ K x1 . . . xn ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ⊥ ãäå K ✖ êîíñòðóêòîð ❞❛t❛ ñ n àðãóìåíòàìè ❝❛s❡ v ♦❢ ④ x✰k ✲❃ e❀ ❴ ✲❃ e′ ⑥ = ✐❢ v ❃❂ k t❤❡♥ ✭❭x ✲❃ e✮ ✭v ✲k ✮ ❡❧s❡ e′ ãäå k ✖ ÷èñëîâîé ëèòåðàë
Ðèñ✳ ✸✳✷✿ Ñåìàíòèêà ❝❛s❡✲âûðàæåíèé✱ ÷àñòü ✷
è m àðãóìåíòàìè
➹ëàâà ✹
❰áúÿâëåíèÿ è ñâÿçûâàíèÿ èìåí ➶ ýòîé ãëàâå ìû îïèøåì ñèíòàêñèñ è íåôîðìàëüíóþ ñåìàíòèêó
îáúÿâëåíèé
→ | → | |
♠♦❞✉❧❡ modid [exports] ✇❤❡r❡ body body ④ impdecls ❀ topdecls ⑥ ④ impdecls ⑥ ④ topdecls ⑥
topdecls topdecl
→ → | | | | | |
topdecl1 ❀ . . . ❀ topdecln (n ≥ 1 ) t②♣❡ simpletype ❂ type ❞❛t❛ [context ❂❃] simpletype ❂ constrs [deriving] ♥❡✇t②♣❡ [context ❂❃] simpletype ❂ newconstr [deriving] ❝❧❛ss [scontext ❂❃] tycls tyvar [✇❤❡r❡ cdecls] ✐♥st❛♥❝❡ [scontext ❂❃] qtycls inst [✇❤❡r❡ idecls] ❞❡❢❛✉❧t ✭type1 ✱ . . . ✱ typen ✮ (n ≥ 0 ) decl
decls decl
→ → |
④ decl1 ❀ . . . ❀ decln ⑥ gendecl (funlhs | pat 0 ) rhs
(n ≥ 0 )
cdecls
→
④ cdecl1 ❀ . . . ❀ cdecln ⑥
(n ≥ 0 )
cdecl
→ |
gendecl (funlhs | var ) rhs
idecls idecl
→ → |
④ idecl1 ❀ . . . ❀ idecln ⑥ (funlhs | var ) rhs
module body
(n ≥ 0 ) (ïóñòî) ✺✸
❍❛s❦❡❧❧✳
✺✹
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
gendecl
→ | |
vars ✿✿ [context ❂❃] type fixity [integer ] ops
(ñèãíàòóðà òèïà) (✐♥❢✐①✲îáúÿâëåíèå) (ïóñòîå îáúÿâëåíèå)
ops vars fixity
→ → →
op1 ✱ . . . ✱ opn var1 ✱ . . . ✱ varn ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥❢✐①
(n ≥ 1 ) (n ≥ 1 )
Ïåðåâîä✿
→ ♠♦❞✉❧❡ èäåíòèôèêàòîð✲ìîäóëÿ [ñïèñîê✲ýêñïîðòà] ✇❤❡r❡ òåëî | òåëî òåëî → ④ ñïèñîê✲îáúÿâëåíèé✲èìïîðòà ❀ ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ ⑥ | ④ ñïèñîê✲îáúÿâëåíèé✲èìïîðòà ⑥ | ④ ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ ⑥ ìîäóëü
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ1
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿn
(n ≥ 1 ) → t②♣❡ ïðîñòîé✲òèï ❂ òèï | ❞❛t❛ [êîíòåêñò ❂❃] ïðîñòîé✲òèï ❂ ñïèñîê✲êîíñòðóêöèé [❞❡r✐✈✐♥❣✲èíñòðóêöèÿ] | ♥❡✇t②♣❡ [êîíòåêñò ❂❃] ïðîñòîé✲òèï ❂ íîâàÿ✲êîíñòðóêöèÿ [❞❡r✐✈✐♥❣✲èíñòðóêöèÿ] | ❝❧❛ss [ïðîñòîé✲êîíòåêñò ❂❃] êëàññ✲òèïà ïåðåìåííàÿ✲òèïà [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé✲êëàññîâ] | ✐♥st❛♥❝❡ [ïðîñòîé✲êîíòåêñò ❂❃] êâàëèôèöèðîâàííûé✲êëàññ✲òèïà ýêçåìïëÿð [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé✲ýêçåìïëÿðîâ] | ❞❡❢❛✉❧t ✭òèï1 ✱ . . . ✱ òèïn ✮ (n ≥ 0 ) | îáúÿâëåíèå
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé
④
îáúÿâëåíèå1
îáúÿâëåíèån
⑥
(n ≥ 0 ) →
îáúÿâëåíèå
îáùåå✲îáúÿâëåíèå
| (ëåâàÿ✲÷àñòü✲ôóíêöèè |
0 îáðàçåö ) ïðàâàÿ✲÷àñòü
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲êëàññîâ
④
îáúÿâëåíèå✲êëàññà1
(n ≥ 0 )
îáúÿâëåíèå✲êëàññàn
⑥
✺✺
→
îáúÿâëåíèå✲êëàññà
îáùåå✲îáúÿâëåíèå
| (ëåâàÿ✲÷àñòü✲ôóíêöèè |
ïåðåìåííàÿ) ïðàâàÿ✲÷àñòü
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲ýêçåìïëÿðîâ
④
îáúÿâëåíèå✲ýêçåìïëÿðà1
îáúÿâëåíèå✲ýêçåìïëÿðàn
⑥
(n ≥ 0 ) → (ëåâàÿ✲÷àñòü✲ôóíêöèè | | (ïóñòî)
îáúÿâëåíèå✲ýêçåìïëÿðà
îáùåå✲îáúÿâëåíèå
→
✿✿ [êîíòåêñò ❂❃]
ñïèñîê✲ïåðåìåííûõ
(ñèãíàòóðà |
ïåðåìåííàÿ) ïðàâàÿ✲÷àñòü
òèï
òèïà)
àññîöèàòèâíîñòü [öåëûé✲ëèòåðàë] ñïèñîê✲îïåðàòîðîâ
(✐♥❢✐①✲îáúÿâëåíèå) | (ïóñòîå
îáúÿâëåíèå)
→ ✱ . . . ✱ îïåðàòîðn
ñïèñîê✲îïåðàòîðîâ îïåðàòîð1
(n ≥ 1 ) → ✱ ... ✱
ñïèñîê✲ïåðåìåííûõ ïåðåìåííàÿ1
ïåðåìåííàÿn
(n ≥ 1 ) → ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥❢✐①
àññîöèàòèâíîñòü
❰áúÿâëåíèÿ â ñèíòàêñè÷åñêîé êàòåãîðèè äîïóñòèìû
òîëüêî
íà
âåðõíåì
decls (ñïèñîê✲îáúÿâëåíèé)
óðîâíå
ìîæíî
topdecls (ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ) ìîäóëÿ
èñïîëüçîâàòü
❍❛s❦❡❧❧ èëè
íà
✭ñì✳
âëîæåííûõ îáëàñòÿõ âèäèìîñòè ✭ò✳å✳ â ïðåäåëàõ êîíñòðóêöèé ➘ëÿ
îïèñàíèÿ
ïîëüçîâàòåëåì
ìû
ðàçäåëèëè
òèïîâ
äàííûõ✱
ãëàâó
âåðõíåì
îáúÿâëåíèÿ
íà
òðè
ñîñòîÿùóþ
èç
îáúÿâëåíèé
❧❡t
ãðóïïû✿
✺✮✱
òîãäà
óðîâíå✱
èëè
êàê
èëè
âî
✇❤❡r❡✮✳
ãðóïïó
îïðåäåëÿåìûõ
t②♣❡✱ ♥❡✇t②♣❡
è
❞❛t❛
✭ðàçäåë ✹✳✷✮✱ ãðóïïó êëàññîâ òèïîâ è ïåðåãðóçîê îïåðàòîðîâ✱ ñîñòîÿùóþ èç îáúÿâëåíèé
❝❧❛ss✱ ✐♥st❛♥❝❡
è
❞❡❢❛✉❧t
✭ðàçäåë ✹✳✸✮✱ è ãðóïïó âëîæåííûõ îáúÿâëåíèé✱ ñîñòîÿùóþ
èç ñâÿçûâàíèé çíà÷åíèé✱ ñèãíàòóð òèïîâ è ✐♥❢✐①✲îáúÿâëåíèé ✭ðàçäåë ✹✳✹✮✳ ➶ ❍❛s❦❡❧❧ åñòü íåñêîëüêî ïðèìèòèâíûõ òèïîâ äàííûõ✱ êîòîðûå ÿâëÿþòñÿ ✏çàøèòûìè✑ ✭òàêèå êàê öåëûå ÷èñëà è ÷èñëà ñ ïëàâàþùåé òî÷êîé✮✱ íî áîëüøèíñòâî ✏âñòðîåííûõ✑ òèïîâ äàííûõ îïðåäåëåíî ñ ïîìîùüþ îáû÷íîãî êîäà íà ❍❛s❦❡❧❧ ñ èñïîëüçîâàíèåì îáû÷íûõ îáúÿâëåíèé ðàçäåëå ✻✳✶✳
t②♣❡ è ❞❛t❛✳ Ýòè ✏âñòðîåííûå✑
òèïû äàííûõ ïîäðîáíî îïèñàíû â
✺✻
➹❐➚➶➚ ✹✳
✹✳✶
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❰áçîð òèïîâ è êëàññîâ
❍❛s❦❡❧❧
èñïîëüçóåò
òðàäèöèîííóþ
ñèñòåìó
ïîëèìîðôíûõ
òèïîâ
Õèíäëè✲❒èëíåðà
✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮ äëÿ òîãî✱ ÷òîáû îáåñïå÷èòü ñòàòè÷åñêóþ ñåìàíòèêó òèïîâ ❬✸✱ ✺❪✱ íî ñèñòåìà òèïîâ áûëà ðàñøèðåíà ñ ïîìîùüþ
êëàññîâ òèïîâ ✭èëè ïðîñòî êëàññîâ✮✱ êîòîðûå ïåðåãðóæåííûå ôóíêöèè✳
îáåñïå÷èâàþò ñòðóêòóðèðîâàííûé ñïîñîá ââåñòè ❰áúÿâëåíèå
❝❧❛ss ✭ðàçäåë ✹✳✸✳✶✮ ââîäèò íîâûé êëàññ òèïà è ïåðåãðóæåííûå îïåðàöèè✱
êîòîðûå äîëæíû ïîääåðæèâàòüñÿ ëþáûì òèïîì✱ êîòîðûé ÿâëÿåòñÿ ýêçåìïëÿðîì ýòîãî êëàññà✳ ❰áúÿâëåíèå
✐♥st❛♥❝❡
✭ðàçäåë ✹✳✸✳✷✮ îáúÿâëÿåò✱ ÷òî òèï ÿâëÿåòñÿ
ýêçåìïëÿðîì ìåòîäàìè
êëàññà è âêëþ÷àåò îïðåäåëåíèÿ ïåðåãðóæåííûõ îïåðàöèé✱ íàçûâàåìûõ
êëàññà✱
èíñòàíöèðîâàííûõ íà íàçâàííîì òèïå✳
❮àïðèìåð✱ ïðåäïîëîæèì✱ ÷òî ìû õîòèì ïåðåãðóçèòü îïåðàöèè
■♥t
è
❋❧♦❛t✳
❒û ââîäèì íîâûé êëàññ òèïîâ✱ íàçâàííûé
❝❧❛ss ◆✉♠ ❛ ✇❤❡r❡ ✭✰✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ ♥❡❣❛t❡ ✿✿ ❛ ✲❃ ❛
✭✰✮
è
♥❡❣❛t❡
➬àòåì ìû ìîæåì îáúÿâèòü
è
♥❡❣❛t❡
íà òèïàõ
✲✲ óïðîùåííîå îáúÿâëåíèå êëàññà ◆✉♠ ✲✲ ✭✃ëàññ ◆✉♠ îïðåäåëåí â Pr❡❧✉❞❡✮
Ýòî îáúÿâëåíèå ìîæíî òîëêîâàòü òàê✿ ✏òèï åñòü ìåòîäû êëàññà
◆✉♠✿
✭✰✮
■♥t
è
❛
ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà
◆✉♠✱
åñëè
çàäàííûõ òèïîâ✱ îïðåäåëåííûå íà ýòîì òèïå✳✑
❋❧♦❛t
ýêçåìïëÿðàìè ýòîãî êëàññà✿
✐♥st❛♥❝❡ ◆✉♠ ■♥t ✇❤❡r❡ ✲✲ óïðîùåííûé ýêçåìïëÿð ◆✉♠ ■♥t ① ✰ ② ❂ ❛❞❞■♥t ① ② ♥❡❣❛t❡ ① ❂ ♥❡❣❛t❡■♥t ① ✐♥st❛♥❝❡ ◆✉♠ ❋❧♦❛t ✇❤❡r❡ ✲✲ óïðîùåííûé ýêçåìïëÿð ◆✉♠ ❋❧♦❛t ① ✰ ② ❂ ❛❞❞❋❧♦❛t ① ② ♥❡❣❛t❡ ① ❂ ♥❡❣❛t❡❋❧♦❛t ① ãäå ïðåäïîëàãàåòñÿ✱ ÷òî â
äàííîì
ñëó÷àå✱
❛❞❞■♥t✱ ♥❡❣❛t❡■♥t✱ ❛❞❞❋❧♦❛t
ôóíêöèè✱
íî
âîîáùå
ìîãóò
è
♥❡❣❛t❡❋❧♦❛t
áûòü
ëþáûìè
✖ ïðèìèòèâíûå✱ îïðåäåëÿåìûìè
ïîëüçîâàòåëåì ôóíêöèÿìè✳ Ïåðâîå ñâåðõó îáúÿâëåíèå ìîæíî òîëêîâàòü òàê✿ ✏ ■♥t ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà êëàññà✮ äëÿ
✭✰✮
è
♥❡❣❛t❡✳
◆✉♠ â ñîîòâåòñòâèè ñ ýòèìè îïðåäåëåíèÿìè ✭ò✳å✳ ìåòîäàìè
✑
➪îëüøåå êîëè÷åñòâî ïðèìåðîâ êëàññîâ òèïîâ ìîæíî íàéòè â ðàáîòàõ ➘æîíñà ✭❏♦♥❡s✮ ❬✼❪ èëè Óîäëåðà è ➪ëîòòà ✭❲❛❞❧❡r è ❇❧♦tt✮ ❬✶✷❪✳ Òåðìèí ✏êëàññ òèïà✑ èñïîëüçîâàëñÿ äëÿ îïèñàíèÿ ñèñòåìû òèïîâ â èñõîäíîì ÿçûêå ❍❛s❦❡❧❧ ✶✳✵✱ à òåðìèí ✏êîíñòðóêòîð êëàññà✑ ✖ äëÿ îïèñàíèÿ ðàñøèðåíèÿ èñõîäíûõ êëàññîâ òèïîâ✳ ➪îëüøå íåò íèêàêîé ïðè÷èíû èñïîëüçîâàòü äâà ðàçëè÷íûõ òåðìèíà✿ â ýòîì îïèñàíèè ✏êëàññ òèïà✑ âêëþ÷àåò è êëàññû òèïîâ èñõîäíîãî ÿçûêà ❍❛s❦❡❧❧✱ è êîíñòðóèðóåìûå êëàññû✱ ââåäåííûå ➘æîíñîì ✭❏♦♥❡s✮✳
✹✳✶✳
✺✼
❰➪➬❰Ð Ò➮Ï❰➶ ➮ ✃❐➚ÑÑ❰➶
✹✳✶✳✶
➶èäû
➘ëÿ òîãî ÷òîáû ãàðàíòèðîâàòü èõ äîïóñòèìîñòü✱ âûðàæåíèÿ ñ òèïàìè ðàçäåëåíû íà êëàññû ðàçëè÷íûõ âèäîâ✳ ✃àæäûé âèä èìååò îäíó èç äâóõ âîçìîæíûõ ôîðì✿ Ñèìâîë ∗ ïðåäñòàâëÿåò âèä✱ ê êîòîðîìó îòíîñÿòñÿ âñå êîíñòðóêòîðû òèïîâ ñ íóëåâûì ÷èñëîì àðãóìåíòîâ✳ ➴ñëè κ1 è κ2 ÿâëÿþòñÿ âèäàìè✱ òî κ1 → κ2 ✖ âèä✱ ê êîòîðîìó îòíîñÿòñÿ òèïû✱ ó êîòîðûõ òèï ïðèíèìàåìîãî àðãóìåíòà îòíîñèòñÿ ê âèäó κ1✱ à òèï âîçâðàùàåìîãî çíà÷åíèÿ ✖ ê âèäó κ2✳
• •
Ïðàâèëüíîñòü âûðàæåíèé ñ òèïàìè ïðîâåðÿåòñÿ ñ ïîìîùüþ âûâîäà âèäà ïîäîáíî òîìó✱ êàê ïðàâèëüíîñòü âûðàæåíèé ñî çíà÷åíèÿìè ïðîâåðÿåòñÿ ñ ïîìîùüþ âûâîäà òèïà✳ ❰äíàêî✱ â îòëè÷èå îò òèïîâ✱ âèäû ÿâëÿþòñÿ ïîëíîñòüþ íåÿâíûìè è íå ÿâëÿþòñÿ âèäèìîé ÷àñòüþ ÿçûêà✳ ➶ûâîä âèäîâ ðàññìàòðèâàåòñÿ â ðàçäåëå ✹✳✻✳ ✹✳✶✳✷
Ñèíòàêñèñ òèïîâ
òèï ôóíêöèè)
type
→
btype [✲❃ type]
(
btype
→
[btype] atype
(
atype
→ | | | |
gtycon tyvar ✭ type1 ✱ . . . ✱ typek ✮ ❬ type ❪ ✭ type ✮
( ( (
→ | | | |
qtycon ✭✮ ❬❪ ✭✲❃✮ ✭✱{✱}✮
( ( ( (
gtycon
Ïåðåâîä✿ òèï
→
❜✲òèï
[✲❃
òèï]
òèï ôóíêöèè)
(
→ [❜✲òèï]
❜✲òèï
❛✲òèï
íàëîæåíèå òèïîâ)
òèï êîðòåæà, k ≥ 2 ) òèï ñïèñêà) êîíñòðóêòîð â ñêîáêàõ)
òèï îáúåäèíåíèÿ) êîíñòðóêòîð ñïèñêà) êîíñòðóêòîð ôóíêöèè) êîíñòðóêòîðû êîðòåæåé)
✺✽
➹❐➚➶➚ ✹✳
(íàëîæåíèå ❛✲òèï
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
òèïîâ)
→
îáùèé✲êîíñòðóêòîð✲òèïà
| ïåðåìåííàÿ✲òèïà | ✭ òèï1 ✱ . . . ✱ òèïk ✮ (òèï êîðòåæà, k ≥ 2 ) | ❬ òèï ❪ (òèï ñïèñêà) | ✭ òèï ✮ (êîíñòðóêòîð â ñêîáêàõ) îáùèé✲êîíñòðóêòîð✲òèïà
→
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð✲òèïà
| ✭✮ (òèï îáúåäèíåíèÿ) | ❬❪ (êîíñòðóêòîð ñïèñêà) | ✭✲❃✮ (êîíñòðóêòîð ôóíêöèè) | ✭✱{✱}✮ (êîíñòðóêòîðû êîðòåæåé) Ñèíòàêñèñ äëÿ âûðàæåíèé ñ òèïàìè â ❍❛s❦❡❧❧ îïèñàí âûøå✳ Ïîäîáíî òîìó✱ êàê çíà÷åíèÿ äàííûõ ïîñòðîåíû ñ èñïîëüçîâàíèåì êîíñòðóêòîðîâ äàííûõ✱ çíà÷åíèÿ òèïîâ ïîñòðîåíû èç êîíñòðóêòîðîâ òèïîâ✳ ✃àê è ñ êîíñòðóêòîðàìè äàííûõ✱ èìåíà êîíñòðóêòîðîâ òèïîâ íà÷èíàþòñÿ ñ çàãëàâíûõ áóêâ✳ ➶ îòëè÷èå îò êîíñòðóêòîðîâ äàííûõ✱ èíôèêñíûå êîíñòðóêòîðû òèïîâ íå äîïóñêàþòñÿ ✭îòëè÷íûå îò
✭✲❃✮✮✳
❰ñíîâíûìè âèäàìè âûðàæåíèé ñ òèïàìè ÿâëÿþòñÿ ñëåäóþùèå✿ ✶✳ Ïåðåìåííûå òèïîâ✱ êîòîðûå îáîçíà÷àþòñÿ èäåíòèôèêàòîðàìè✱ íà÷èíàþùèìèñÿ ñî ñòðî÷íîé áóêâû✳ ➶èä✱ ê êîòîðîìó îòíîñèòñÿ ïåðåìåííàÿ✱ îïðåäåëÿåòñÿ íåÿâíî èç êîíòåêñòà✱ â êîòîðîì îíà ïîÿâèëàñü✳ ✷✳ ✃îíñòðóêòîðû
òèïîâ✳
➪îëüøèíñòâî
êîíñòðóêòîðîâ
òèïîâ
îáîçíà÷àþòñÿ
èäåíòèôèêàòîðàìè✱ íà÷èíàþùèìèñÿ ñ çàãëàâíîé áóêâû✳ ❮àïðèìåð✿
• ❈❤❛r✱ ■♥t✱ ■♥t❡❣❡r✱ ❋❧♦❛t✱ ❉♦✉❜❧❡ îòíîñÿòñÿ ê âèäó ∗✳ • ▼❛②❜❡
è
■❖
ÿâëÿþòñÿ
è
❇♦♦❧
êîíñòðóêòîðàìè
ÿâëÿþòñÿ êîíñòàíòàìè òèïîâ è òèïîâ
ðàññìàòðèâàþòñÿ êàê òèïû✱ îòíîñÿùèåñÿ ê âèäó
•
❰áúÿâëåíèÿ
ñ
îäíèì
àðãóìåíòîì
è
∗ → ∗✳
❞❛t❛ ❚ ✳✳✳ èëè ♥❡✇t②♣❡ ❚ ✳✳✳ äîáàâëÿþò â ñïèñîê òèïîâ ❚✳ ➶èä✱ ê êîòîðîìó îòíîñèòñÿ òèï ❚✱ îïðåäåëÿåòñÿ ñ
êîíñòðóêòîð òèïà
ïîìîùüþ âûâîäà âèäà✳
✹✳✶✳
✺✾
❰➪➬❰Ð Ò➮Ï❰➶ ➮ ✃❐➚ÑÑ❰➶
➘ëÿ êîíñòðóêòîðîâ îïðåäåëåííûõ âñòðîåííûõ òèïîâ ïðåäóñìîòðåí ñïåöèàëüíûé ñèíòàêñèñ✿
•
Òðèâèàëüíûé òèï îáîçíà÷àåòñÿ
✭✮
è îòíîñèòñÿ ê âèäó
∗✳
❰í îáîçíà÷àåò òèï
✏êîðòåæ ñ íóëåâûì ÷èñëîì àðãóìåíòîâ✑ è èìååò ðîâíî îäíî çíà÷åíèå✱ êîòîðîå òàêæå îáîçíà÷àåòñÿ
✭✮
✭ñì✳ ðàçäåëû ✸✳✾ è ✻✳✶✳✺✮✳
✭✲❃✮
•
Òèï ôóíêöèè îáîçíà÷àåòñÿ
•
Òèï ñïèñêà îáîçíà÷àåòñÿ
•
Òèïû êîðòåæåé îáîçíà÷àþòñÿ
❬❪
∗ → ∗ → ∗✱ ∗ → ∗ → ∗ → ∗ ➮ñïîëüçîâàíèå êîíñòàíò
✭✲❃✮
è
è îòíîñèòñÿ ê âèäó
è îòíîñèòñÿ ê âèäó
✭✱✮✱ ✭➼✮
∗ → ∗✳
è òàê äàëåå✳ ❰íè îòíîñÿòñÿ ê âèäàì
è òàê äàëåå ✳
❬❪
áîëåå ïîäðîáíî îïèñàíî íèæå✳
✸✳ ❮àëîæåíèå òèïîâ✳ ➴ñëè
t1
✖ òèï✱ îòíîñÿùèéñÿ ê âèäó
κ1 ✱
òî
t1 t 2
îòíîñÿùèéñÿ ê âèäó âèäó
∗ → ∗ → ∗✳
κ1 → κ 2 ✱
à
t2
✖ òèï✱
ÿâëÿåòñÿ âûðàæåíèåì ñ òèïîì✱ îòíîñÿùèìñÿ ê
κ2 ✳
✹✳ Òèï â ñêîáêàõ âèäà
✭t ✮
èäåíòè÷åí òèïó
t✳
■❖ ❛ ìîæíî âîñïðèíèìàòü êàê ïðèìåíåíèå êîíñòàíòû ■❖ ê ❛✳ Ïîñêîëüêó êîíñòðóêòîð òèïà ■❖ îòíîñèòñÿ ê âèäó ∗ → ∗✱ èç ýòîãî ñëåäóåò✱ ÷òî è ïåðåìåííàÿ ❛✱ è âñå âûðàæåíèå ■❖ ❛ äîëæíî îòíîñèòüñÿ ê âèäó ∗✳ ➶îîáùå✱ ïðîöåññ
❮àïðèìåð✱ âûðàæåíèå òèïà ïåðåìåííîé
âûâîäà âèäà ✭ñì✳ ðàçäåë ✹✳✻✮ íåîáõîäèì äëÿ òîãî✱ ÷òîáû óñòàíîâèòü ñîîòâåòñòâóþùèå âèäû äëÿ îïðåäåëÿåìûõ ïîëüçîâàòåëåì òèïîâ äàííûõ✱ ñèíîíèìîâ òèïîâ è êëàññîâ✳ Ïîääåðæèâàåòñÿ ñïåöèàëüíûé ñèíòàêñèñ✱ êîòîðûé ïîçâîëÿåò çàïèñûâàòü âûðàæåíèÿ ñ îïðåäåëåííûìè òèïàìè ñ èñïîëüçîâàíèåì áîëåå òðàäèöèîííîãî ñòèëÿ✿
✶✳ Òèï ôóíêöèè èìååò âèä t1
✲❃ t2
ÿâëÿþòñÿ ïðàâîàññîöèàòèâíûìè îïåðàöèÿìè✳ îçíà÷àåò
✭✲❃✮ t1 t2 ✳ Ñòðåëêè ôóíêöèé ❮àïðèìåð✱ ■♥t ✲❃ ■♥t ✲❃ ❋❧♦❛t
è ýêâèâàëåíòåí òèïó
■♥t ✲❃ ✭■♥t ✲❃ ❋❧♦❛t✮✳
êîðòåæà èìååò âèä ✭t1 ✱ . . . ✱ tk ✮✱ ãäå k ≥ 2 ✱ è ýêâèâàëåíòåí òèïó ✭✱✳ ✳ ✳ ✱✮ t1 . . . tk ✱ ãäå èìåþòñÿ k − 1 çàïÿòûõ ìåæäó êðóãëûìè ñêîáêàìè✳ ❰í îáîçíà÷àåò òèï k ✲êîðòåæåé✱ ó êîòîðûõ ïåðâàÿ êîìïîíåíòà èìååò òèï t1 ✱ âòîðàÿ êîìïîíåíòà ✖ òèï t2 è òàê äàëåå ✭ñì✳ ðàçäåëû ✸✳✽ è ✻✳✶✳✹✮✳
✷✳ Òèï
✸✳ Òèï ñïèñêà èìååò âèä ýëåìåíòàìè òèïà
t
❬t ❪ è ýêâèâàëåíòåí òèïó ❬❪ t ✳ ❰í îáîçíà÷àåò òèï ñïèñêîâ ñ
✭ñì✳ ðàçäåëû ✸✳✼ è ✻✳✶✳✸✮✳
Ýòè ñïåöèàëüíûå ñèíòàêñè÷åñêèå ôîðìû âñåãäà îáîçíà÷àþò êîíñòðóêòîðû âñòðîåííûõ òèïîâ äëÿ ôóíêöèé✱ êîðòåæåé è ñïèñêîâ✱ íåçàâèñèìî îò òîãî✱ ÷òî íàõîäèòñÿ â îáëàñòè âèäèìîñòè✳ ➚íàëîãè÷íî✱ ïðåôèêñíûå êîíñòðóêòîðû òèïîâ
✭✲❃✮✱ ❬❪✱ ✭✮✱ ✭✱✮
è òàê
äàëåå âñåãäà îáîçíà÷àþò êîíñòðóêòîðû âñòðîåííûõ òèïîâ❀ èõ íåëüçÿ íè èñïîëüçîâàòü ñ êâàëèôèêàòîðàìè✱ íè óêàçûâàòü â ñïèñêàõ èìïîðòà èëè ýêñïîðòà ✭ãëàâà ✺✮✳ ✭❰òñþäà ñïåöèàëüíîå ïðàâèëî âûâîäà
gtycon (îáùåãî✲êîíñòðóêòîðà✲òèïà)✱
îïèñàííîå âûøå✳✮
✻✵
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❮åñìîòðÿ íà òî✱ ÷òî ó òèïîâ ñïèñêîâ è êîðòåæåé ñïåöèàëüíûé ñèíòàêñèñ✱ èõ ñåìàíòèêà ✖ òàêàÿ æå✱ êàê è ó ýêâèâàëåíòíûõ îïðåäåëÿåìûõ ïîëüçîâàòåëåì àëãåáðàè÷åñêèõ òèïîâ äàííûõ✳ ❰òìåòèì✱ ÷òî âûðàæåíèÿ è òèïû èìåþò ñîãëàñóþùèéñÿ ñèíòàêñèñ✳ ➴ñëè ti ✖ òèï âûðàæåíèÿ èëè îáðàçöà ei ✱ òî âûðàæåíèÿ ✭❭ e1 ✲❃ e2 ✮✱ ❬e1 ❪ è ✭e1 , e2 ✮ èìåþò ñîîòâåòñòâåííî òèïû ✭t1 ✲❃ t2 ✮✱ ❬t1 ❪ è ✭t1 , t2 ✮✳ ➬à îäíèì èñêëþ÷åíèåì ✭ïåðåìåííîé òèïà â îáúÿâëåíèè êëàññà ✭ðàçäåë ✹✳✸✳✶✮✮✱ âñå ïåðåìåííûå òèïîâ â âûðàæåíèè ñ òèïàìè ❍❛s❦❡❧❧ ïðåäïîëàãàþòñÿ ñòîÿùèìè ïîä êâàíòîðîì âñåîáùíîñòè❀ êâàíòîð âñåîáùíîñòè ❬✸❪ íå óêàçûâàåòñÿ ÿâíî✱ äëÿ ýòîãî íåò ñïåöèàëüíîãî ñèíòàêñèñà✳ ❮àïðèìåð✱ âûðàæåíèå ❛ ✲❃ ❛ îáîçíà÷àåò òèï ∀ a. a → a ✳ Òåì íå ìåíåå✱ äëÿ ÿñíîñòè✱ ìû ÷àñòî çàïèñûâàåì êâàíòîðû ÿâíî ïðè îáñóæäåíèè òèïîâ ïðîãðàìì íà ❍❛s❦❡❧❧✳ ✃îãäà ìû çàïèñûâàåì òèï ñ ÿâíûì èñïîëüçîâàíèåì êâàíòîðà✱ îáëàñòü äåéñòâèÿ êâàíòîðà ∀ (äëÿ âñåõ) ïðîñòèðàåòñÿ âïðàâî íàñêîëüêî âîçìîæíî✱ íàïðèìåð✱ ∀ a. a → a îçíà÷àåò ∀ a. (a → a)✳ ✹✳✶✳✸
Ñèíòàêñèñ óòâåðæäåíèé êëàññîâ è êîíòåêñòîâ
→ | → | → → →
context class qtycls tycls tyvar
class ✭ class1 ✱ . . . ✱ classn ✮ qtycls tyvar qtycls ✭ tyvar atype1 . . . atypen ✮ [ modid ✳ ] tycls conid varid
(n ≥ 0 ) (n ≥ 1 )
Ïåðåâîä✿ êîíòåêñò
→
êëàññ
| ✭ êëàññ1 ✱ . . . ✱ (n ≥ 0 ) êëàññ →
êëàññn
✮
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà ïåðåìåííàÿ✲òèïà
|
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
✭
ïåðåìåííàÿ✲òèïà ❛✲òèï1
(n ≥ 1 ) êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
[
èäåíòèôèêàòîð✲ìîäóëÿ
êëàññ✲òèïà
✳]
→
êëàññ✲òèïà
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà ïåðåìåííàÿ✲òèïà
→
èäåíòèôèêàòîð✲ïåðåìåííîé
...
❛✲òèïn
✮
✹✳✶✳
❰➪➬❰Ð Ò➮Ï❰➶ ➮ ✃❐➚ÑÑ❰➶
✻✶
Óòâåðæäåíèå êëàññà èìååò âèä qtycls tyvar è óêàçûâàåò íà òî✱ ÷òî òèï tyvar ÿâëÿåòñÿ
ýëåìåíòîì êëàññà qtycls ✳ ➮äåíòèôèêàòîð êëàññà íà÷èíàåòñÿ ñ çàãëàâíîé áóêâû✳ ✃îíòåêñò ñîñòîèò èç íóëÿ èëè áîëåå óòâåðæäåíèé êëàññà è èìååò îáùèé âèä ✭ C1 u1 , . . . , Cn un ✮
ãäå C1 , . . . , Cn ✖ èäåíòèôèêàòîðû êëàññà✱ è êàæäûé èç u1 , . . . , un ÿâëÿåòñÿ èëè ïåðåìåííîé òèïà✱ èëè ïðèìåíåíèåì ïåðåìåííîé òèïà ê îäíîìó èëè áîëåå òèïàì✳ ➶íåøíèå êðóãëûå ñêîáêè ìîæíî îïóñòèòü ïðè n = 1 ✳ ➶îîáùå✱ ìû èñïîëüçóåì cx äëÿ îáîçíà÷åíèÿ êîíòåêñòà è ìû çàïèñûâàåì cx ❂❃ t äëÿ óêàçàíèÿ òîãî✱ ÷òî òèï t îãðàíè÷åí êîíòåêñòîì cx ✳ ✃îíòåêñò cx äîëæåí ñîäåðæàòü òîëüêî ïåðåìåííûå òèïîâ✱ óïîìÿíóòûå â t ✳ ➘ëÿ óäîáñòâà ìû çàïèñûâàåì cx ❂❃ t ✱ äàæå åñëè êîíòåêñò cx ïóñò✱ õîòÿ â ýòîì ñëó÷àå êîíêðåòíûé ñèíòàêñèñ íå ñîäåðæèò ❂❃✳ ✹✳✶✳✹
Ñåìàíòèêà òèïîâ è êëàññîâ
➶ ýòîì ðàçäåëå ìû äàäèì íåôîðìàëüíûå äåòàëè ñèñòåìû òèïîâ✳ ✭Óîäëåð ✭❲❛❞❧❡r✮ è ➪ëîòò ✭❇❧♦tt✮ ❬✶✷❪ è ➘æîíñ ✭❏♦♥❡s✮ ❬✼❪ ðàññìàòðèâàþò ñîîòâåòñòâåííî êëàññû òèïîâ è êîíñòðóèðóåìûå êëàññû áîëåå ïîäðîáíî✳✮ Ñèñòåìà òèïîâ â ❍❛s❦❡❧❧ ïðèïèñûâàåò òèï êàæäîìó âûðàæåíèþ â ïðîãðàììå✳ ➶îîáùå✱ òèï èìååò âèä ∀ u. cx ⇒ t ✱ ãäå u ✖ íàáîð ïåðåìåííûõ òèïîâ u1 , . . . , un ✳ ➶ ëþáîì òàêîì òèïå ëþáàÿ èç ñòîÿùèõ ïîä êâàíòîðîì âñåîáùíîñòè ïåðåìåííûõ òèïîâ ui ✱ êîòîðàÿ ÿâëÿåòñÿ ñâîáîäíîé â cx ✱ äîëæíà òàêæå áûòü ñâîáîäíîé â t ✳ ✃ðîìå òîãî✱ êîíòåêñò cx äîëæåí èìåòü âèä✱ îïèñàííûé âûøå â ðàçäåëå ✹✳✶✳✸✳ ➶ êà÷åñòâå ïðèìåðà ïðèâåäåì íåêîòîðûå äîïóñòèìûå òèïû✿ ❊q ❛ ❂❃ ❛ ✲❃ ❛ ✭❊q ❛✱ ❙❤♦✇ ❛✱ ❊q ❜✮ ❂❃ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❙tr✐♥❣ ✭❊q ✭❢ ❛✮✱ ❋✉♥❝t♦r ❢✮ ❂❃ ✭❛ ✲❃ ❜✮ ✲❃ ❢ ❛ ✲❃ ❢ ❜ ✲❃ ❇♦♦❧
➶ òðåòüåì òèïå îãðàíè÷åíèå ❊q ✭❢ ❛✮ íå ìîæåò áûòü óïðîùåíî✱ ïîòîìó ÷òî ❢ ñòîèò ïîä êâàíòîðîì âñåîáùíîñòè✳ Òèï âûðàæåíèÿ e çàâèñèò îò îêðóæåíèÿ òèïà✱ êîòîðîå çàäàåò òèïû äëÿ ñâîáîäíûõ ïåðåìåííûõ â e ✱ è îêðóæåíèÿ êëàññà✱ êîòîðîå îáúÿâëÿåò✱ êàêèå òèïû ÿâëÿþòñÿ ýêçåìïëÿðàìè êàêèõ êëàññîâ ✭òèï ñòàíîâèòñÿ ýêçåìïëÿðîì êëàññà òîëüêî ïîñðåäñòâîì íàëè÷èÿ îáúÿâëåíèÿ ✐♥st❛♥❝❡ èëè èíñòðóêöèè ❞❡r✐✈✐♥❣✮✳ Òèïû ñâÿçàíû ïðÿìûì ïîðÿäêîì îáîáùåíèÿ ✭óêàçàí íèæå✮❀ íàèáîëåå îáùèé òèï✱ ñ òî÷íîñòüþ äî ýêâèâàëåíòíîñòè✱ ïîëó÷åííûé ïîñðåäñòâîì îáîáùåíèÿ✱ êîòîðûé ìîæíî ïðèñâîèòü êîíêðåòíîìó âûðàæåíèþ ✭â çàäàííîì îêðóæåíèè✮✱ íàçûâàåòñÿ åãî îñíîâíûì òèïîì✳ ➶ ñèñòåìå òèïîâ â ÿçûêå ❍❛s❦❡❧❧✱ êîòîðàÿ ÿâëÿåòñÿ ðàñøèðåíèåì ñèñòåìû Õèíäëè✲❒èëíåðà ✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮✱ ìîæíî âûâåñòè îñíîâíîé òèï âñåõ âûðàæåíèé✱ âêëþ÷àÿ íàäëåæàùåå èñïîëüçîâàíèå ïåðåãðóæåííûõ ìåòîäîâ êëàññà ✭õîòÿ✱ êàê îïèñàíî â ðàçäåëå ✹✳✸✳✹✱ ïðè ýòîì ìîãóò âîçíèêíóòü îïðåäåëåííûå íåîäíîçíà÷íûå ïåðåãðóçêè✮✳
✻✷
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
Ïîýòîìó èñïîëüçîâàíèå ÿâíûõ óêàçàíèé òèïîâ ✭íàçûâàåìûå
ñèãíàòóðàìè òèïîâ✮
îáû÷íî ÿâëÿåòñÿ íåîáÿçàòåëüíûì ✭ñì✳ ðàçäåëû ✸✳✶✻ è ✹✳✹✳✶✮✳ Òèï
∀ u. cx1 ⇒ t1
ÿâëÿåòñÿ
ñóùåñòâóåò ïîäñòàíîâêà
• t2 •
èäåíòè÷íî
➶ñÿêèé
ðàç✱
S
áîëåå îáùèì ÷åì
òèï
ñ îáëàñòüþ îïðåäåëåíèÿ
∀ w . cx2 ⇒ t2 ✱ u ✱ òàêàÿ ÷òî✿
åñëè è òîëüêî åñëè
S (t1 )✳ êîãäà
cx2
âûïîëíÿåòñÿ
â
îêðóæåíèè
êëàññà✱
S (cx1 )
òàêæå
âûïîëíÿåòñÿ✳ ➬íà÷åíèå òèïà
∀ u. cx ⇒ t ìîæíî èíñòàíöèðîâàòü íà òèïàõ s ✱ åñëè è cx [s/u]✳ ❮àïðèìåð✱ ðàññìîòðèì ôóíêöèþ ❞♦✉❜❧❡✿
òîëüêî åñëè
âûïîëíÿåòñÿ êîíòåêñò
❞♦✉❜❧❡ ① ❂ ① ✰ ①
❞♦✉❜❧❡ ÿâëÿåòñÿ ∀ a. ◆✉♠ a ⇒ a → a ✳ ❞♦✉❜❧❡ ìîæíî ïðèìåíÿòü ê çíà÷åíèÿì òèïà ■♥t ✭èíñòàíöèðîâàíèå a ê ■♥t✮✱ òàê êàê âûïîëíÿåòñÿ ◆✉♠ ■♥t✱ ïîòîìó ÷òî ■♥t ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà ◆✉♠✳ ❰äíàêî ❞♦✉❜❧❡ îáû÷íî íåëüçÿ ïðèìåíÿòü ê çíà÷åíèÿì òèïà ❈❤❛r✱ ïîòîìó ÷òî ❈❤❛r îáû÷íî íå ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà ◆✉♠✳ Ïîëüçîâàòåëü ìîæåò ïðåäïî÷åñòü îáúÿâèòü òàêîé ýêçåìïëÿð✱ â ýòîì ñëó÷àå ❞♦✉❜❧❡ ìîæíî äåéñòâèòåëüíî ïðèìåíèòü ê ❈❤❛r✳ ❮àèáîëåå îáùèì òèïîì äëÿ
✹✳✷
➶
Òèïû äàííûõ✱ îïðåäåëÿåìûå ïîëüçîâàòåëåì
ýòîì
ðàçäåëå
ìû
îïèøåì
àëãåáðàè÷åñêèå
ïåðåèìåíîâàííûå òèïû äàííûõ ✭îáúÿâëåíèÿ
t②♣❡✮✳ ✹✳✷✳✶
topdecl
äàííûõ
✭îáúÿâëåíèÿ
❞❛t❛✮✱
è ñèíîíèìû òèïîâ ✭îáúÿâëåíèÿ
Ýòè îáúÿâëåíèÿ ìîæíî èñïîëüçîâàòü òîëüêî íà âåðõíåì óðîâíå ìîäóëÿ✳
❰áúÿâëåíèÿ àëãåáðàè÷åñêèõ òèïîâ äàííûõ
→
simpletype → constrs constr
òèïû
♥❡✇t②♣❡✮
→ →
|
❞❛t❛ [context ❂❃] simpletype ❂ constrs [deriving] tycon tyvar1 . . . tyvark
(k ≥ 0 )
constr1 ⑤ . . . ⑤ constrn con [✦] atype1 . . . [✦] atypek
(n ≥ 1 ) (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà con = k, k ≥ 0) (èíôèêñíûé îïåðàòîð conop)
(btype | ✦ atype) conop (btype | ✦ atype)
✹✳✷✳
Ò➮ÏÛ ➘➚❮❮ÛÕ✱ ❰ÏÐ➴➘➴❐ß➴❒Û➴ Ï❰❐Ü➬❰➶➚Ò➴❐➴❒
fielddecl
| →
con ④ fielddecl1 ✱ . . . ✱ fielddecln ⑥ vars ✿✿ (type | ✦ atype)
deriving dclass
→ →
❞❡r✐✈✐♥❣ (dclass | ✭dclass1 ✱ . . . ✱ dclassn ✮) (n ≥ 0 ) qtycls
✻✸
(n ≥ 0 )
Ïåðåâîä✿
→ ❞❛t❛ [êîíòåêñò ❂❃] ïðîñòîé✲òèï ❂ [❞❡r✐✈✐♥❣✲èíñòðóêöèÿ]
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
ïðîñòîé✲òèï
ñïèñîê✲êîíñòðóêöèé
→
êîíñòðóêòîð✲òèïà ïåðåìåííàÿ✲òèïà1
...
ïåðåìåííàÿ✲òèïàk
(k ≥ 0 ) → ⑤ ... ⑤
ñïèñîê✲êîíñòðóêöèé êîíñòðóêöèÿ1
êîíñòðóêöèÿn
(n ≥ 1 ) êîíñòðóêöèÿ
→
[✦] ❛✲òèï1 . . . [✦] ❛✲òèïk ( con = k , k ≥ 0 ) | (❜✲òèï | ✦ ❛✲òèï) îïåðàòîð✲êîíñòðóêòîðà (❜✲òèï | ✦ ❛✲òèï) ( conop) |êîíñòðóêòîð ④ îáúÿâëåíèå✲ïîëÿ1 ✱ . . . ✱ îáúÿâëåíèå✲ïîëÿn ⑥ (n ≥ 0 ) îáúÿâëåíèå✲ïîëÿ → ñïèñîê✲ïåðåìåííûõ ✿✿ (òèï | ✦ ❛✲òèï) êîíñòðóêòîð
÷èñëî àðãóìåíòîâ êîíñòðóêòîðà
èíôèêñíûé îïåðàòîð
→ ❞❡r✐✈✐♥❣ (ïðîèçâîäíûé✲êëàññ | ✭ïðîèçâîäíûé✲êëàññ1 ✱ . . . ✱ ïðîèçâîäíûé✲êëàññn ✮) (n ≥ 0 ) ïðîèçâîäíûé✲êëàññ →
❞❡r✐✈✐♥❣✲èíñòðóêöèÿ
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
Ïðèîðèòåò äëÿ constr (êîíñòðóêöèè) ✖ òîò æå✱ ÷òî è äëÿ âûðàæåíèé✿ ïðèìåíåíèå îáû÷íîãî êîíñòðóêòîðà èìååò áîëåå âûñîêèé ïðèîðèòåò✱ ÷åì ïðèìåíåíèå èíôèêñíîãî êîíñòðóêòîðà ✭òàêèì îáðàçîì✱ ❛ ✿ ❋♦♦ ❛ èíòåðïðåòèðóåòñÿ ïðè ðàçáîðå êàê ❛ ✿ ✭❋♦♦ ❛✮✮✳ ❰áúÿâëåíèå àëãåáðàè÷åñêîãî òèïà äàííûõ èìååò âèä✿ ❞❛t❛ cx ❂❃ T u1 . . . uk ❂ K1 t11 . . . t1k1 ⑤ · · · ⑤ Kn tn1 . . . tnkn
✻✹
ãäå
➹❐➚➶➚ ✹✳
cx
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
êîíñòðóêòîð òèïà T ñ îäíîé êîíñòðóêòîðàìè äàííûõ K1 , . . . , Kn ✳ ➶ ýòîì îïèñàíèè
✖ êîíòåêñò✳ Ýòî îáúÿâëåíèå ââîäèò íîâûé
èëè áîëåå ñîñòàâëÿþùèìè
íåóòî÷íåííûé òåðìèí ✏êîíñòðóêòîð✑ âñåãäà îçíà÷àåò ✏êîíñòðóêòîð äàííûõ✑✳ Òèïû êîíñòðóêòîðîâ äàííûõ çàäàþòñÿ ñëåäóþùèì îáðàçîì✿
Ki :: ∀ u1 . . . uk . cxi ⇒ ti1 → · · · → tiki → (T u1 . . . uk ) ãäå
cxi
✖ íàèáîëüøåå ïîäìíîæåñòâî
cx
✱ êîòîðîå ñîäåðæèò òîëüêî òå ïåðåìåííûå òèïîâ✱
êîòðûå ÿâëÿþòñÿ ñâîáîäíûìè â òèïàõ ti1 , áûòü ðàçëè÷íûìè è ìîãóò ïîÿâëÿòüñÿ â ïîÿâèòñÿ â
cx
. . . , tiki ✳ Ïåðåìåííûå òèïîâ u1 ✱ ✳✳✳✱ uk äîëæíû cx è tij ❀ åñëè ëþáàÿ äðóãàÿ ïåðåìåííàÿ òèïà
èëè â ïðàâîé ÷àñòè ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ❮îâàÿ êîíñòàíòà
κ1 → . . . → κk → ∗✱ ãäå âèäû κi ✱ ê êîòîðûì îòíîñÿòñÿ ui ✱ óñòàíàâëèâàþòñÿ ñ ïîìîùüþ âûâîäû âèäà✱ îïèñàííîãî â ðàçäåëå ✹✳✻✳ Ýòî îçíà÷àåò✱ ÷òî T ìîæíî èñïîëüçîâàòü â âûðàæåíèÿõ ñ òèïàìè ñ ëþáûì ÷èñëîì àðãóìåíòîâ îò 0 äî k ✳
òèïà
T
îòíîñèòñÿ ê âèäó
ïåðåìåííûå àðãóìåíòîâ
❮àïðèìåð✱ îáúÿâëåíèå
❞❛t❛ ❊q ❛ ❂❃ ❙❡t ❛ ❂ ◆✐❧❙❡t ⑤ ❈♦♥s❙❡t ❛ ✭❙❡t ❛✮ ââîäèò êîíñòðóêòîð òèïà è
❈♦♥s❙❡t
❙❡t✱ êîòîðûé îòíîñèòñÿ ê âèäó ∗ → ∗✱ è êîíñòðóêòîðû ◆✐❧❙❡t
ñ òèïàìè
◆✐❧❙❡t :: ∀ a. ❙❡t a ❈♦♥s❙❡t :: ∀ a. ❊q a ⇒ a → ❙❡t a → ❙❡t a ➶ äàííîì ïðèìåðå ïåðåãðóæåííûé òèï äëÿ
❈♦♥s❙❡t
ãàðàíòèðóåò✱ ÷òî
ïðèìåíèòü òîëüêî ê çíà÷åíèÿì òèïà✱ êîòîðûé ÿâëÿåòñÿ Ñîïîñòàâëåíèå ñ îáðàçöîì
❈♦♥s❙❡t
❈♦♥s❙❡t
ýêçåìïëÿðîì
òàêæå ïðèâîäèò ê îãðàíè÷åíèþ
❊q ❛✳
ìîæíî
êëàññà
❊q✳
❮àïðèìåð✿
❢ ✭❈♦♥s❙❡t ❛ s✮ ❂ ❛ Ôóíêöèÿ
❢ èìååò óñòàíîâëåííûé ñ ïîìîùüþ âûâîäà òèï ❊q ❛ ❂❃ ❙❡t ❛ ✲❃ ❛✳ ✃îíòåêñò ❞❛t❛ âîîáùå íå èìååò íèêàêîãî äðóãîãî ðåçóëüòàòà✳
â îáúÿâëåíèè ➶èäèìîñòü
êîíñòðóêòîðîâ
òèïîâ
äàííûõ
✭ò✳å✳
✏àáñòðàêòíîñòü✑
òèïà
äàííûõ✮
âíå
ìîäóëÿ✱ â êîòîðîì îïðåäåëåí òèï äàííûõ✱ óïðàâëÿåòñÿ ïîñðåäñòâîì óêàçàíèÿ èìåíè òèïà äàííûõ â ñïèñêå ýêñïîðòà✱ îïèñàííîì â ðàçäåëå ✺✳✽✳ ❮åîáÿçàòåëüíàÿ â îáúÿâëåíèè
ýêçåìïëÿðàì
➮ìåíîâàííûå ïîëÿ êîìïîíåíòàìè✳ êàê
ñ
❞❛t❛
÷àñòü
❞❡r✐✈✐♥❣
äîëæíà îòíîñèòüñÿ ê
ïðîèçâîäíûì
è îïèñàíà â ðàçäåëå ✹✳✸✳✸✳
✃
✃îíñòðóêòîð äàííûõ ñ
ýòèì
àðãóìåíòàìè
êîìïîíåíòàì
êîíñòðóêòîðà
òèïîâ äàííûõ ïîëåçíî ïðèñâàèâàòü
â
îáû÷íî
k
àðãóìåíòàìè ñîçäàåò îáúåêò ñ
îáðàùàþòñÿ
âûðàæåíèÿõ
èìåíà ïîëåé
èëè
èñõîäÿ îáðàçöàõ✳
èç
k
èõ
ïîçèöèé✱
➘ëÿ
áîëüøèõ
êîìïîíåíòàì îáúåêòà äàííûõ✳ Ýòî
✹✳✷✳
✻✺
Ò➮ÏÛ ➘➚❮❮ÛÕ✱ ❰ÏÐ➴➘➴❐ß➴❒Û➴ Ï❰❐Ü➬❰➶➚Ò➴❐➴❒
ïîçâîëÿåò ññûëàòüñÿ íà îïðåäåëåííîå ïîëå íåçàâèñèìî îò åãî ðàçìåùåíèÿ â ïðåäåëàõ êîíñòðóêòîðà✳ ❰ïðåäåëåíèå
êîíñòðóêòîðà
â
îáúÿâëåíèè
êîíñòðóêòîðà✱ èñïîëüçóÿ ñèíòàêñèñ çàïèñè ✭❈
❞❛t❛ ìîæåò ïðèñâîèòü ④ ✳✳✳ ⑥✮✳ ✃îíñòðóêòîðû✱
èìåíà
ïîëÿì
èñïîëüçóþùèå
èìåíà ïîëåé✱ ìîæíî ñâîáîäíî ñìåøèâàòü ñ êîíñòðóêòîðàìè áåç íèõ✳ ✃îíñòðóêòîð ñî
ñâÿçàííûìè
èìåíàìè
ïîëåé
ìîæíî
ïî✲ïðåæíåìó
èñïîëüçîâàòü
êàê
îáû÷íûé
êîíñòðóêòîð❀ èñïîëüçîâàíèå èìåí ïðîñòî ÿâëÿåòñÿ êðàòêîé çàïèñüþ äëÿ îïåðàöèé✱ èñïîëüçóþùèõ ëåæàùèé â îñíîâå ïîçèöèîííûé êîíñòðóêòîð✳ ➚ðãóìåíòû ïîçèöèîííîãî êîíñòðóêòîðà íàõîäÿòñÿ â òîì æå ïîðÿäêå✱ ÷òî è èìåíîâàííûå ïîëÿ✳ ❮àïðèìåð✱ îáúÿâëåíèå
❞❛t❛ ❈ ❂ ❋ ④ ❢✶✱❢✷ ✿✿ ■♥t✱ ❢✸ ✿✿ ❇♦♦❧ ⑥ îïðåäåëÿåò òèï è êîíñòðóêòîð✱ èäåíòè÷íûé òîìó✱ êîòîðûé ñîîòâåòñòâóåò îïðåäåëåíèþ
❞❛t❛ ❈ ❂ ❋ ■♥t ■♥t ❇♦♦❧ ❰ïåðàöèè✱ èñïîëüçóþùèå èìåíà ïîëåé✱ îïèñàíû â ðàçäåëå ✸✳✶✺✳ ❰áúÿâëåíèå
❞❛t❛ ìîæåò
èñïîëüçîâàòü òî æå ñàìîå èìÿ ïîëÿ âî ìíîæåñòâå êîíñòðóêòîðîâ äî òåõ ïîð✱ ïîêà òèï ïîëÿ✱ ïîñëå ðàñêðûòèÿ ñèíîíèìîâ✱ îñòàåòñÿ îäíèì è òåì æå âî âñåõ ñëó÷àÿõ✳ ❰äíî è òî æå èìÿ íå ìîãóò ñîâìåñòíî èñïîëüçîâàòü íåñêîëüêî òèïîâ â îáëàñòè âèäèìîñòè✳ ➮ìåíà ïîëåé ñîâìåñòíî èñïîëüçóþò ïðîñòðàíñòâî èìåí âåðõíåãî óðîâíÿ âìåñòå ñ îáû÷íûìè ïåðåìåííûìè è ìåòîäàìè êëàññà è íå äîëæíû êîíôëèêòîâàòü ñ äðóãèìè èìåíàìè âåðõíåãî óðîâíÿ â îáëàñòè âèäèìîñòè✳
❋ ④⑥
❰áðàçåö
ñîîòâåòñòâóåò
ëþáîìó
❋
íåçàâèñèìî îò òîãî✱ áûë îáúÿâëåí
Ôëàæêè
ñòðîãîñòè
➶ñÿêèé
çíà÷åíèþ✱
ïîñòðîåííîìó
êîíñòðóêòîðîì
❋✱
ñ èñïîëüçîâàíèåì ñèíòàêñèñà çàïèñè èëè íåò✳
ðàç✱
êîãäà
ïðèìåíÿåòñÿ
êîíñòðóêòîð
äàííûõ✱
êàæäûé àðãóìåíò êîíñòðóêòîðà âû÷èñëÿåòñÿ✱ åñëè è òîëüêî åñëè ñîîòâåòñòâóþùèé òèï
â
îáúÿâëåíèè
àëãåáðàè÷åñêîãî
òèïà
äàííûõ
èìååò
ôëàæîê
ñòðîãîñòè✱
îáîçíà÷àåìûé âîñêëèöàòåëüíûì çíàêîì ✏ ✦✑✳ Ñ òî÷êè çðåíèÿ ëåêñèêè✱ ✏ ✦✑ ✖ îáû÷íûé
varsym (ñèìâîë✲ïåðåìåííîé)✱
à íå
reservedop (çàðåçåðâèðîâàííûé✲îïåðàòîð)✱
îí èìååò
ñïåöèàëüíîå çíà÷åíèå òîëüêî â êîíòåêñòå òèïîâ àðãóìåíòîâ îáúÿâëåíèÿ ❞❛t❛✳
❰áúÿâëåíèå âèäà
Òðàíñëÿöèÿ✿
❞❛t❛ cx ❂❃ T u1 . . . uk ❂ . . . ⑤ K s1 . . . sn ⑤ . . . ãäå êàæäûé
si
èìååò âèä
✦ti
èëè ti ✱ çàìåùàåò êàæäîå âõîæäåíèå
K
â âûðàæåíèè íà
✭❭ x1 . . . xn ✲❃ ( ((K op1 x1 ) op2 x2 ) . . . ) opn xn ) ãäå
opi
✖ íåñòðîãîå ïðèìåíåíèå ôóíêöèè
ïðèìåíåíèå ôóíêöèè ñ îáðàçöîì â
K
✩✦
✩✱
åñëè
✭ñì✳ ðàçäåë ✻✳✷✮✱ åñëè
íå âëèÿþò ôëàæêè ñòðîãîñòè✳
si
si
ti ✱ à opi ✖ ñòðîãîå ✦ ti ✳ ❮à ñîïîñòàâëåíèå
èìååò âèä
èìååò âèä
✻✻
➹❐➚➶➚ ✹✳
✹✳✷✳✷
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❰áúÿâëåíèå ñèíîíèìîâ òèïîâ
t②♣❡ simpletype ❂ type tycon tyvar1 . . . tyvark
topdecl → simpletype →
(k ≥ 0 )
Ïåðåâîä✿ îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
t②♣❡
ïðîñòîé✲òèï
ïðîñòîé✲òèï
❂
→
òèï
→
êîíñòðóêòîð✲òèïà ïåðåìåííàÿ✲òèïà1
...
ïåðåìåííàÿ✲òèïàk
(k ≥ 0 )
❰áúÿâëåíèå ñèíîíèìà òèïà ââîäèò íîâûé òèï✱ êîòîðûé ýêâèâàëåíòåí ñòàðîìó òèïó✳ ❰áúÿâëåíèå èìååò âèä t②♣❡ T u1 . . . uk ❂ t
è ââîäèò êîíñòðóêòîð íîâîãî òèïà ✖ T ✳ Òèï (T t1 . . . tk ) ýêâèâàëåíòåí òèïó ✳ Ïåðåìåííûå òèïà u1 ✱ ✳✳✳ ✱ uk äîëæíû áûòü ðàçëè÷íûìè è íàõîäÿòñÿ â îáëàñòè âèäèìîñòè òîëüêî íàä t ❀ åñëè ëþáàÿ äðóãàÿ ïåðåìåííàÿ òèïà ïîÿâèòñÿ â t ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ✃îíñòðóêòîð íîâîãî òèïà T îòíîñèòñÿ ê âèäó κ1 → . . . → κk → κ✱ ãäå âèäû κi ✱ ê êîòîðûì îòíîñÿòñÿ àðãóìåíòû ui ✱ è κ â ïðàâîé ÷àñòè t óñòàíàâëèâàþòñÿ ñ ïîìîùüþ âûâîäà âèäà✱ îïèñàííîãî â ðàçäåëå ✹✳✻✳ ❮àïðèìåð✱ ñëåäóþùåå îïðåäåëåíèå ìîæíî èñïîëüçîâàòü äëÿ òîãî✱ ÷òîáû îáåñïå÷èòü àëüòåðíàòèâíûé ñïîñîá çàïèñè êîíñòðóêòîðà òèïà ñïèñîê✿
t[t1 /u1 , . . . , tk /uk ]
t②♣❡ ▲✐st ❂ ❬❪
Ñèìâîëû êîíñòðóêòîðîâ òèïîâ T ✱ ââåäåííûå ñ ïîìîùüþ îáúÿâëåíèé ñèíîíèìîâ òèïîâ✱ íåëüçÿ ïðèìåíÿòü ÷àñòè÷íî❀ åñëè èñïîëüçîâàòü T áåç ïîëíîãî ÷èñëà àðãóìåíòîâ ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ Õîòÿ ðåêóðñèâíûå è âçàèìíî ðåêóðñèâíûå òèïû äàííûõ äîïóñòèìû✱ ýòî íå òàê äëÿ ñèíîíèìîâ òèïîâ✱ ïîêà íå âìåøàþòñÿ àëãåáðàè÷åñêèå òèïû äàííûõ✳ ❮àïðèìåð✱ t②♣❡ ❘❡❝ ❛ ❂ ❬❈✐r❝ ❛❪ ❞❛t❛ ❈✐r❝ ❛ ❂ ❚❛❣ ❬❘❡❝ ❛❪
äîïóñòèìû✱ òîãäà êàê t②♣❡ ❘❡❝ ❛ t②♣❡ ❈✐r❝ ❛
❂ ❬❈✐r❝ ❛❪ ❂ ❬❘❡❝ ❛❪
✲✲ íåïðàâèëüíî ✲✲ íåïðàâèëüíî
✖ íåò✳ ➚íàëîãè÷íî✱ t②♣❡ ❘❡❝ ❛ ❂ ❬❘❡❝ ❛❪ íåäîïóñòèì✳ Ñèíîíèìû òèïîâ ïðåäñòàâëÿþò ñîáîé óäîáíûé✱ íî ñòðîãî ñèíòàêñè÷åñêèé ìåõàíèçì✱ êîòîðûé äåëàåò ñèãíàòóðû áîëåå ÷èòàáåëüíûìè✳ Ñèíîíèì è åãî îïðåäåëåíèå ✖ ïîëíîñòüþ âçàèìîçàìåíÿåìû✱ çà èñêëþ÷åíèåì òèïà ýêçåìïëÿðà â îáúÿâëåíèè ✐♥st❛♥❝❡ ✭ðàçäåë ✹✳✸✳✷✮✳
✹✳✷✳
Ò➮ÏÛ ➘➚❮❮ÛÕ✱ ❰ÏÐ➴➘➴❐ß➴❒Û➴ Ï❰❐Ü➬❰➶➚Ò➴❐➴❒
✹✳✷✳✸
✻✼
Ïåðåèìåíîâàíèÿ òèïîâ äàííûõ
♥❡✇t②♣❡ [context ❂❃] simpletype ❂ newconstr [deriving] con atype con ④ var ✿✿ type ⑥ tycon tyvar1 . . . tyvark (k ≥ 0 )
topdecl → newconstr → | simpletype →
Ïåðåâîä✿ îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
→
♥❡✇t②♣❡ [êîíòåêñò ❂❃] ïðîñòîé✲òèï ❂ [❞❡r✐✈✐♥❣✲èíñòðóêöèÿ] íîâàÿ✲êîíñòðóêöèÿ →
íîâàÿ✲êîíñòðóêöèÿ
êîíñòðóêòîð ❛✲òèï
|
êîíñòðóêòîð
ïðîñòîé✲òèï
④
ïåðåìåííàÿ
✿✿
òèï
⑥
→
êîíñòðóòîð✲òèïà ïåðåìåííàÿ✲òèïà1
...
ïåðåìåííàÿ✲òèïàk
(k ≥ 0 )
❰áúÿâëåíèå âèäà
♥❡✇t②♣❡ cx ❂❃ T u1 . . . uk ❂ N t
ââîäèò íîâûé òèï✱ êîòîðûé èìååò òî æå ñàìîå ïðåäñòàâëåíèå✱ ÷òî è ñóùåñòâóþùèé òèï✳ Òèï ✭T u1 . . . uk ✮ ïåðåèìåíîâûâàåò òèï äàííûõ t ✳ ❰í îòëè÷àåòñÿ îò ñèíîíèìà òèïà òåì✱ ÷òî ñîçäàåò îòäåëüíûé òèï✱ êîòîðûé äîëæåí ÿâíî ïðèâîäèòüñÿ ê èñõîäíîìó òèïó èëè îáðàòíî✳ Òàêæå✱ â îòëè÷èå îò ñèíîíèìîâ òèïà✱ ♥❡✇t②♣❡ ìîæåò èñïîëüçîâàòüñÿ äëÿ îïðåäåëåíèÿ ðåêóðñèâíûõ òèïîâ✳ ✃îíñòðóêòîð N â âûðàæåíèè ïðèâîäèò çíà÷åíèå òèïà t ê òèïó ✭T u1 . . . uk ✮✳ ➮ñïîëüçîâàíèå N â îáðàçöå ïðèâîäèò çíà÷åíèå òèïà ✭T u1 . . . uk ✮ ê òèïó t ✳ Ýòè ïðèâåäåíèÿ òèïîâ ìîãóò áûòü ðåàëèçîâàíû áåç íàêëàäíûõ ðàñõîäîâ âðåìåíè âûïîëíåíèÿ✱ ♥❡✇t②♣❡ íå ìåíÿåò ëåæàùåå â îñíîâå ïðåäñòàâëåíèå îáúåêòà✳ ❮îâûå ýêçåìïëÿðû ✭ñì✳ ðàçäåë ✹✳✸✳✷✮ ìîæíî îïðåäåëèòü äëÿ òèïà✱ îïðåäåëåííîãî ñ ïîìîùüþ ♥❡✇t②♣❡✱ íî íåëüçÿ îïðåäåëèòü äëÿ ñèíîíèìà òèïà✳ Òèï✱ ñîçäàííûé ñ ïîìîùüþ ♥❡✇t②♣❡✱ îòëè÷àåòñÿ îò àëãåáðàè÷åñêîãî òèïà äàííûõ òåì✱ ÷òî ïðåäñòàâëåíèå àëãåáðàè÷åñêîãî òèïà äàííûõ èìååò äîïîëíèòåëüíûé óðîâåíü íåïðÿìîãî äîñòóïà✳ Ýòî îòëè÷èå ìîæåò ñäåëàòü äîñòóï ê ïðåäñòàâëåíèþ ìåíåå ýôôåêòèâíûì✳ Ðàçëè÷èå îòðàæåíî â ðàçëè÷íûõ ïðàâèëàõ äëÿ ñîïîñòàâëåíèÿ ñ îáðàçöîì ✭ñì✳ ðàçäåë ✸✳✶✼✮✳ ➶ îòëè÷èå îò àëãåáðàè÷åñêîãî òèïà äàííûõ✱ êîíñòðóêòîð íîâîãî òèïà äàííûõ N ÿâëÿåòñÿ íåïîâûøåííûì✱ òàê ÷òî N ⊥ ✖ òî æå ñàìîå✱ ÷òî è ⊥✳ Ñëåäóþùèå ïðèìåðû ðàçúÿñíÿþò ðàçëè÷èÿ ìåæäó ❞❛t❛ ✭àëãåáðàè÷åñêèìè òèïàìè äàííûõ✮✱ t②♣❡ ✭ñèíîíèìàìè òèïîâ✮ è ♥❡✇t②♣❡ ✭ïåðåèìåíîâàííûìè òèïàìè✮✳ Ïðè äàííûõ îáúÿâëåíèÿõ
✻✽
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❞❛t❛ ❉✶ ❂ ❉✶ ■♥t ❞❛t❛ ❉✷ ❂ ❉✷ ✦■♥t t②♣❡ ❙ ❂ ■♥t ♥❡✇t②♣❡ ◆ ❂ ◆ ■♥t ❞✶ ✭❉✶ ✐✮ ❂ ✹✷ ❞✷ ✭❉✷ ✐✮ ❂ ✹✷ s ✐ ❂ ✹✷ ♥ ✭◆ ✐✮ ❂ ✹✷ ✭ ❞✶ ⊥ ✮✱ ✭ ❞✷ ⊥ ✮ è ✭❞✷ ✭❉✷ ⊥ ✮ ✮ ýêâèâàëåíòíû ⊥✱ ïîñêîëüêó ✭ ♥ ⊥ ✮✱ ✭ ♥ ✭ ◆ ⊥ ✮ ✮✱ ✭ ❞✶ ✭ ❉✶ ⊥ ✮ ✮ è ✭ s ⊥ ✮ ýêâèâàëåíòíû ✹✷✳ ➶ ÷àñòíîñòè✱ ✭ ◆ ⊥ ✮ ýêâèâàëåíòíî ⊥✱ òîãäà êàê ✭ ❉✶ ⊥ ✮ íåýêâèâàëåíòíî ⊥✳
âûðàæåíèÿ
❮åîáÿçàòåëüíàÿ
÷àñòü
❞❡r✐✈✐♥❣
êîìïîíåíòà ❞❡r✐✈✐♥❣ îáúÿâëåíèÿ ➶ îáúÿâëåíèè
♥❡✇t②♣❡
îáúÿâëåíèÿ
❞❛t❛
♥❡✇t②♣❡
òðàêòóåòñÿ
♥❡✇t②♣❡ ❆❣❡ ❂ ❆❣❡ ④ ✉♥❆❣❡ ✿✿ ■♥t ⑥ ââîäèò â îáëàñòü âèäèìîñòè è êîíñòðóêòîð✱ è äåñòðóêòîð✿
❆❣❡ ✿✿ ■♥t ✲❃ ❆❣❡ ✉♥❆❣❡ ✿✿ ❆❣❡ ✲❃ ■♥t
✃ëàññû òèïîâ è ïåðåãðóçêà
✹✳✸✳✶
❰áúÿâëåíèÿ êëàññîâ
→ → | simpleclass → cdecls → cdecl → | topdecl scontext
æå✱
êàê
è
ìîæíî èñïîëüçîâàòü ñèíòàêñèñ äëÿ èìåíîâàíèÿ ïîëåé✱ õîòÿ✱
êîíå÷íî✱ ìîæåò áûòü òîëüêî îäíî ïîëå✳ Òàêèì îáðàçîì✱
✹✳✸
òàê
✭ñì✳ ðàçäåë ✹✳✸✳✸✮✳
❝❧❛ss [scontext ❂❃] tycls tyvar [✇❤❡r❡ cdecls] simpleclass ✭ simpleclass1 ✱ . . . ✱ simpleclassn ✮ (n ≥ 0 ) qtycls tyvar ④ cdecl1 ❀ . . . ❀ cdecln ⑥ (n ≥ 0 ) gendecl (funlhs | var ) rhs
Ïåðåâîä✿
→ ❝❧❛ss [ïðîñòîé✲êîíòåêñò ❂❃] êëàññ✲òèïà where ñïèñîê✲îáúÿâëåíèé✲êëàññîâ]
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
ïåðåìåííàÿ✲òèïà
✹✳✸✳
✻✾
✃❐➚ÑÑÛ Ò➮Ï❰➶ ➮ Ï➴Ð➴➹ÐÓ➬✃➚
ïðîñòîé✲êîíòåêñò
→
ïðîñòîé✲êëàññ
| ✭ ïðîñòîé✲êëàññ1 ✱ . . . ✱ (n ≥ 0 ) ïðîñòîé✲êëàññ →
ïðîñòîé✲êëàññn
✮
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà ïåðåìåííàÿ✲òèïà
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲êëàññîâ
④
îáúÿâëåíèå✲êëàññà1
îáúÿâëåíèå✲êëàññàn
⑥
(n ≥ 0 ) îáúÿâëåíèå✲êëàññà
→
îáùåå✲îáúÿâëåíèå
| (ëåâàÿ✲÷àñòü✲ôóíêöèè | ❰áúÿâëåíèå
êëàññà
ïåðåìåííàÿ) ïðàâàÿ✲÷àñòü
ââîäèò íîâûé êëàññ è îïåðàöèè ✭ìåòîäû êëàññà✮ íàä íèì✳
❰áúÿâëåíèå êëàññà èìååò îáùèé âèä✿
❝❧❛ss cx ❂❃ C u ✇❤❡r❡ cdecls Ýòî îáúÿâëåíèå ââîäèò íîâûé êëàññ
C❀
ïåðåìåííàÿ òèïà
u
íàõîäèòñÿ òîëüêî â îáëàñòè
âèäèìîñòè íàä ñèãíàòóðàìè ìåòîäîâ êëàññà â òåëå êëàññà✳ ✃îíòåêñò ñóïåðêëàññû ññûëàòüñÿ â
C ✱ êàê îïèñàíî cx ✱ ÿâëÿåòñÿ u ✳
cx
îïðåäåëÿåò
íèæå❀ åäèíñòâåííîé ïåðåìåííîé òèïà✱ íà êîòîðóþ ìîæíî
❰òíîøåíèå ñóïåðêëàññà íå äîëæíî áûòü öèêëè÷åñêèì❀ ò✳å✳ îíî äîëæíî îáðàçîâûâàòü îðèåòèðîâàííûé àöèêëè÷åñêèé ãðàô✳ ×àñòü
cdecls (ñïèñîê✲îáúÿâëåíèé✲êëàññîâ)
â îáúÿâëåíèè
❝❧❛ss
ñîäåðæèò òðè âèäà
îáúÿâëåíèé✿
•
❰áúÿâëåíèå êëàññà ââîäèò íîâûå ìåòîäû êëàññà ïðîñòèðàåòñÿ çà ïðåäåëû îáúÿâëåíèÿ ÿâëÿþòñÿ â òî÷íîñòè
vi ✱
❝❧❛ss✳
vi ✱
÷üÿ îáëàñòü âèäèìîñòè
❒åòîäû êëàññà â îáúÿâëåíèè êëàññà
äëÿ êîòîðûõ åñòü ÿâíàÿ ñèãíàòóðà òèïà
vi ✿✿ cxi ❂❃ ti â
cdecls ✳
❒åòîäû êëàññà ñîâìåñòíî ñî ñâÿçàííûìè ïåðåìåííûìè è èìåíàìè ïîëåé
èñïîëüçóþò ïðîñòðàíñòâî èìåí âåðõíåãî óðîâíÿ❀ îíè íå äîëæíû êîíôëèêòîâàòü ñ äðóãèìè èìåíàìè â îáëàñòè âèäèìîñòè✳ Òî åñòü ìåòîä êëàññà íå ìîæåò èìåòü òî æå èìÿ✱ ÷òî è îïðåäåëåíèå âåðõíåãî óðîâíÿ✱ èìÿ ïîëÿ èëè äðóãîé ìåòîä êëàññà✳ Òèïîì ìåòîäà êëàññà âåðõíåãî óðîâíÿ
vi
ÿâëÿåòñÿ✿
vi :: ∀u, w. (Cu, cxi ) ⇒ ti u ❀ îíî ìîæåò ññûëàòüñÿ íà ïåðåìåííûå òèïîâ w ✱ îòëè÷íûå u ✱ â ýòîì ñëó÷àå òèï vi ÿâëÿåòñÿ ïîëèìîðôíûì â u è w ✳ cxi ìîæåò îãðàíè÷èâàòü òîëüêî w ✱ â ÷àñòíîñòè✱ cxi íå ìîæåò îãðàíè÷èâàòü u ✳ ❮àïðèìåð✱
ti
äîëæåí ññûëàòüñÿ íà
îò
✼✵
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❝❧❛ss ❋♦♦ ❛ ✇❤❡r❡ ♦♣ ✿✿ ◆✉♠ ❜ ❂❃ ❛ ✲❃ ❜ ✲❃ ❛ ➬äåñü òèïîì
• cdecls
♦♣
ÿâëÿåòñÿ
∀ a, b. (❋♦♦ a, ◆✉♠ b) ⇒ a → b → a ✳
ìîæåò òàêæå ñîäåðæàòü ✐♥❢✐①✲îáúÿâëåíèÿ äëÿ ëþáîãî èç ìåòîäîâ êëàññà
✭íî íå äëÿ äðóãèõ çíà÷åíèé✮✳ Òåì íå ìåíåå✱ òàê êàê ìåòîäû êëàññà îáúÿâëåíû çíà÷åíèÿìè âåðõíåãî óðîâíÿ✱ ✐♥❢✐①✲îáúÿâëåíèÿ äëÿ ìåòîäîâ êëàññà ìîãóò✱ â êà÷åñòâå àëüòåðíàòèâû✱ ïîÿâëÿòüñÿ íà âåðõíåì óðîâíå✱ âíå îáúÿâëåíèÿ êëàññà✳
•
❮àêîíåö✱
vi ✳
cdecls
ìîæåò ñîäåðæàòü ìåòîäû êëàññà ïî óìîë÷àíèþ äëÿ ëþáîãî èç
❒åòîä êëàññà ïî óìîë÷àíèþ äëÿ
ñâÿçûâàíèå â êîíêðåòíîì
vi èñïîëüçóåòñÿ✱ åñëè äëÿ íåãî íå çàäàíî îáúÿâëåíèè ✐♥st❛♥❝❡ ✭ñì✳ ðàçäåë ✹✳✸✳✷✮✳ ❰áúÿâëåíèå
ìåòîäà ïî óìîë÷àíèþ ÿâëÿåòñÿ îáû÷íûì îïðåäåëåíèåì çíà÷åíèÿ✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî ëåâàÿ ÷àñòü ìîæåò áûòü òîëüêî ïåðåìåííîé èëè îïðåäåëåíèåì ôóíêöèè✳ ❮àïðèìåð✱ îáúÿâëåíèå
❝❧❛ss ❋♦♦ ❛ ✇❤❡r❡ ♦♣✶✱ ♦♣✷ ✿✿ ❛ ✲❃ ❛ ✭♦♣✶✱ ♦♣✷✮ ❂ ✳✳✳ íåäîïóñòèìî✱ ïîòîìó ÷òî ëåâîé ÷àñòüþ îáúÿâëåíèÿ ìåòîäà ïî óìîë÷àíèþ ÿâëÿåòñÿ îáðàçåö✳ ➶ îñòàëüíûõ ñëó÷àÿõ✱ îòëè÷íûõ îò îïèñàííûõ çäåñü✱ íèêàêèå äðóãèå îáúÿâëåíèÿ íå äîïóñòèìû â
cdecls ✳
❰áúÿâëåíèå
❝❧❛ss
áåç ÷àñòè
✇❤❡r❡
ìîæåò îêàçàòüñÿ ïîëåçíûì äëÿ îáúåäèíåíèÿ
ñîâîêóïíîñòè êëàññîâ â áîëüøèé êëàññ✱ êîòîðûé óíàñëåäóåò âñå ìåòîäû èñõîäíûõ êëàññîâ✳ ❮àïðèìåð✱
❝❧❛ss ✭❘❡❛❞ ❛✱ ❙❤♦✇ ❛✮ ❂❃ ❚❡①t✉❛❧ ❛ ➶ òàêîì ñëó÷àå✱ åñëè òèï ÿâëÿåòñÿ ýêçåìïëÿðîì âñåõ ñóïåðêëàññîâ✱ ýòî íå îçíà÷àåò✱ ÷òî îí àâòîìàòè÷åñêè ÿâëÿåòñÿ ýêçåìïëÿðîì ïîäêëàññà✱ äàæå åñëè ïîäêëàññ íå èìååò íåïîñðåäñòâåííûõ ìåòîäîâ êëàññà✳ ❰áúÿâëåíèå ÷àñòè
✇❤❡r❡✳
✹✳✸✳✷
topdecl inst
✐♥st❛♥❝❡ äîëæíî áûòü çàäàíî ÿâíî áåç
❰áúÿâëåíèÿ ýêçåìïëÿðîâ
→ → |
✐♥st❛♥❝❡ [scontext ❂❃] qtycls inst [✇❤❡r❡ idecls] gtycon ✭ gtycon tyvar1 . . . tyvark ✮ (k ≥ 0 ,
|
✭ tyvar1 ✱ . . . ✱ tyvark ✮
| |
❬ tyvar ❪ ✭ tyvar1 ✲❃ tyvar2 ✮
âñå
tyvar
ðàçëè÷íû)
(k ≥ 2 ,
âñå
tyvar
ðàçëè÷íû)
(tyvar1
è
tyvar2
✹✳✸✳
✃❐➚ÑÑÛ Ò➮Ï❰➶ ➮ Ï➴Ð➴➹ÐÓ➬✃➚
✼✶
ðàçëè÷íû
④ idecl1 ❀ . . . ❀ idecln ⑥ (funlhs | var ) rhs
→ → |
idecls idecl
)
(n ≥ 0 ) (ïóñòî)
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
→
✐♥st❛♥❝❡ [ïðîñòîé✲êîíòåêñò ❂❃] êâàëèôèöèðîâàííûé✲êëàññ✲òèïà [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé✲ýêçåìïëÿðîâ] ýêçåìïëÿð →
ýêçåìïëÿð
îáùèé✲êîíñòðóêòîð✲òèïà
| ✭ îáùèé✲êîíñòðóêòîð✲òèïà ïåðåìåííàÿ✲òèïà1 . . . ïåðåìåííàÿ✲òèïàk ✮ (k ≥ 0 , âñå ïåðåìåííûå✲òèïà ðàçëè÷íû) | ✭ ïåðåìåííàÿ✲òèïà1 ✱ . . . ✱ ïåðåìåííàÿ✲òèïàk ✮ (k ≥ 2 , âñå ïåðåìåííûå✲òèïà ðàçëè÷íû) | ❬ ïåðåìåííàÿ✲òèïà ❪ | ✭ ïåðåìåííàÿ✲òèïà1 ✲❃ ïåðåìåííàÿ✲òèïà2 ✮ (ïåðåìåííàÿ✲òèïà1 è ïåðåìåííàÿ✲òèïà2 ðàçëè÷íû) ñïèñîê✲îáúÿâëåíèé✲ýêçåìïëÿðîâ → ④ îáúÿâëåíèå✲ýêçåìïëÿðà1 ❀ . . . ❀ îáúÿâëåíèå✲ýêçåìïëÿðàn ⑥ (n ≥ 0 ) îáúÿâëåíèå✲ýêçåìïëÿðà → (ëåâàÿ✲÷àñòü✲ôóíêöèè | ïåðåìåííàÿ) ïðàâàÿ✲÷àñòü | (ïóñòî) ❰áúÿâëåíèå ýêçåìïëÿðà
ââîäèò ýêçåìïëÿð êëàññà✳ Ïóñòü
❝❧❛ss cx ❂❃ C u ✇❤❡r❡ ④ cbody ⑥ ÿâëÿåòñÿ îáúÿâëåíèåì
❝❧❛ss✳
Òîãäà ñîîòâåòñòâóþùåå îáúÿâëåíèå ýêçåìïëÿðà â îáùåì
âèäå✿
✐♥st❛♥❝❡ cx ′ ❂❃ C (T u1 . . . uk ) ✇❤❡r❡ ④ d ⑥ ãäå
k ≥ 0✳
Òèï
(T u1 . . . uk ) äîëæåí èìåòü âèä êîíñòðóêòîðà òèïà T ✱ ïðèìåíåííîãî u1 , . . . uk ❀ êðîìå òîãî✱ T íå äîëæåí ÿâëÿòüñÿ ñèíîíèìîì
ê ïðîñòûì ïåðåìåííûì òèïà òèïà✱ è âñå
ui
äîëæíû áûòü ðàçëè÷íûìè✳
Ïîýòîìó òàêèå îáúÿâëåíèÿ ýêçåìïëÿðîâ çàïðåùåíû✿
✐♥st❛♥❝❡ ❈ ✭❛✱❛✮ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❈ ✭■♥t✱❛✮ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❈ ❬❬❛❪❪ ✇❤❡r❡ ✳✳✳ ❰áúÿâëåíèÿ
d
ìîãóò
ñîäåðæàòü
ñâÿçûâàíèÿ
èìåí
òîëüêî
äëÿ
ìåòîäîâ
êëàññà
C✳
❮åïðàâèëüíî çàäàâàòü ñâÿçûâàíèå èìåí äëÿ ìåòîäà êëàññà✱ êîòîðûé íå íàõîäèòñÿ
✼✷
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
â îáëàñòè âèäèìîñòè✱ íî èìÿ✱ â îáëàñòè êîòîðîãî îí íàõîäèòñÿ✱ íåñóùåñòâåííî❀ â ÷àñòíîñòè✱ ýòî ìîæåò áûòü èìÿ ñ êâàëèôèêàòîðîì✳ ✭Ýòî ïðàâèëî èäåíòè÷íî òîìó✱ ÷òî èñïîëüçóåòñÿ äëÿ ïîä÷èíåííûõ èìåí â ñïèñêàõ ýêñïîðòà✱ ñì✳ ðàçäåë ✺✳✷✳✮ ❮àïðèìåð✱ ýòî äîïóñòèìî✱ äàæå åñëè êâàëèôèêàòîðîì
■①✳r❛♥❣❡✳
r❛♥❣❡
íàõîäèòñÿ â îáëàñòè âèäèìîñòè òîëüêî ñ èìåíåì ñ
♠♦❞✉❧❡ ❆ ✇❤❡r❡ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ■① ✐♥st❛♥❝❡ ■①✳■① ❚ ✇❤❡r❡ r❛♥❣❡ ❂ ✳✳✳ ❰áúÿâëåíèÿ íå ìîãóò ñîäåðæàòü ñèãíàòóðû òèïîâ èëè ✐♥❢✐①✲îáúÿâëåíèÿ✱ ïîñêîëüêó îíè óæå áûëè çàäàíû â îáúÿâëåíèè
❝❧❛ss✳
✃àê è â ñëó÷àå ìåòîäîâ êëàññà ïî óìîë÷àíèþ
✭ðàçäåë ✹✳✸✳✶✮✱ îáúÿâëåíèÿ ìåòîäîâ äîëæíû èìåòü âèä ïåðåìåííîé èëè îïðåäåëåíèÿ ôóíêöèè✳ ➴ñëè äëÿ íåêîòîðîãî ìåòîäà êëàññà íå çàäàíû ñâÿçûâàíèÿ èìåí✱ òîãäà èñïîëüçóåòñÿ
❝❧❛ss
ñîîòâåòñòâóþùèé ìåòîä êëàññà ïî óìîë÷àíèþ✱ çàäàííûé â îáúÿâëåíèè
✭åñëè
òàêîâîå èìååòñÿ✮❀ åñëè òàêîé ìåòîä ïî óìîë÷àíèþ íå ñóùåñòâóåò✱ òîãäà ìåòîä êëàññà ýòîãî ýêçåìïëÿðà ñâÿçûâàåòñÿ ñ ❰áúÿâëåíèå
✐♥st❛♥❝❡✱
✉♥❞❡❢✐♥❡❞✱
è îøèáêà êîìïèëÿöèè íå âîçíèêíåò✳
êîòîðîå îáúÿâëÿåò òèï
ýêçåìïëÿðîì êëàññà
T
C✱
íàçûâàåòñÿ
îáúÿâëåíèåì ýêçåìïëÿðà ❈✲❚ è ïîä÷èíÿåòñÿ ñëåäóþùèì ñòàòè÷åñêèì îãðàíè÷åíèÿì✿
•
Òèï íå ìîæåò áûòü îáúÿâëåí ýêçåìïëÿðîì êîíêðåòíîãî êëàññà áîëåå îäíîãî ðàçà â ïðîãðàììå✳
•
✃ëàññ è òèï äîëæíû îòíîñèòüñÿ ê îäíîìó è òîìó æå âèäó✱ åãî ìîæíî óñòàíîâèòü✱ èñïîëüçóÿ âûâîä âèäà✱ îïèñàííûé â ðàçäåëå ✹✳✻✳
•
Ïðåäïîëîæèì✱
÷òî
óäîâëåòâîðÿþò
ïåðåìåííûå
îãðàíè÷åíèÿì
òèïîâ
â
â
ýêçåìïëÿðå
êîíòåêñòå
(T u1 . . . uk )
òèïà
cx ′ ✳
ýêçåìïëÿðà
Ïðè
ýòîì
ïðåäïîëîæåíèè òàêæå äîëæíû âûïîëíÿòüñÿ ñëåäóþùèå äâà óñëîâèÿ✿ ✶✳ ❰ãðàíè÷åíèÿ✱ âûðàæåííûå êîíòåêñòîì
cx [(T u1 . . . uk )/u] ñóïåðêëàññà C ✱ T äîëæåí áûòü ýêçåìïëÿðîì
äîëæíû âûïîëíÿòüñÿ✳ ➘ðóãèìè ñëîâàìè✱ êàæäîãî
èç
ñóïåðêëàññîâ
êëàññà
ñóïåðêëàññîâ äîëæíû ñëåäîâàòü èç
C✱ cx ′ ✳
è
êîíòåêñòû
âñåõ
ýêçåìïëÿðîâ
✷✳ ❐þáûå îãðàíè÷åíèÿ íà ïåðåìåííûå òèïîâ â òèïå ýêçåìïëÿðà✱ êîòîðûå òðåáóþò✱ ÷òîáû îáúÿâëåíèÿ ìåòîäîâ êëàññà â
d
áûëè õîðîøî òèïèçèðîâàíû✱
òàêæå äîëæíû âûïîëíÿòüñÿ✳ ➶ äåéñòâèòåëüíîñòè✱ çà èñêëþ÷åíèåì íåïðàâèëüíûõ ñëó÷àåâ✱ âîçìîæíî âûâåñòè èç îáúÿâëåíèÿ ýêçåìïëÿðà ñàìûé îáùèé êîíòåêñò ýêçåìïëÿðà áóäóò
âûïîëíÿòüñÿ
äâà
âûøåóïîìÿíóòûõ
îãðàíè÷åíèÿ✱
îáÿçàòåëüíî íóæíî çàïèñàòü ÿâíûé êîíòåêñò ýêçåìïëÿðà✳
íî✱
cx ′ ✱
ïðè êîòîðîì
òåì
íå
ìåíåå✱
✹✳✸✳
✃❐➚ÑÑÛ Ò➮Ï❰➶ ➮ Ï➴Ð➴➹ÐÓ➬✃➚
Ñëåäóþùèé
ïðèìåð
èëëþñòðèðóåò
✼✸
îãðàíè÷åíèÿ✱
íàëàãàåìûå
ýêçåìïëÿðàìè
ñóïåðêëàññà✿
❝❧❛ss ❋♦♦ ❛ ❂❃ ❇❛r ❛ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ✭❊q ❛✱ ❙❤♦✇ ❛✮ ❂❃ ❋♦♦ ❬❛❪ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ◆✉♠ ❛ ❂❃ ❇❛r ❬❛❪ ✇❤❡r❡ ✳✳✳ Ýòîò
❇❛r✱
ïðèìåð âòîðîå
ýêçåìïëÿðîì
ÿâëÿåòñÿ
ïðàâèëüíûì
îáúÿâëåíèå
❋♦♦
äåéñòâèòåëüíî
ýêçåìïëÿðà
èñõîäÿ
❍❛s❦❡❧❧✳
áóäåò
Òàê
❋♦♦
êàê
ïðàâèëüíûì✱
ÿâëÿåòñÿ
òîëüêî
ñóïåðêëàññîì
❬❛❪
åñëè
ÿâëÿåòñÿ
◆✉♠ ❛✳ Ïåðâîå îáúÿâëåíèå ýêçåìïëÿðà ❬❛❪ ÿâëÿåòñÿ ýêçåìïëÿðîì ❋♦♦ èñõîäÿ èç ýòîãî ❊q è ❙❤♦✇ ÿâëÿþòñÿ ñóïåðêëàññàìè ◆✉♠✳
èç
ñîîáùàåò✱
â
ïðåäïîëîæåíèÿ
÷òî
ïðåäïîëîæåíèÿ✱ ïîòîìó ÷òî
➴ñëè✱ âìåñòî ýòîãî✱ îáúÿâëåíèÿ äâóõ ýêçåìïëÿðîâ îêàçàëèñü áû ïîäîáíû ýòèì✿
✐♥st❛♥❝❡ ◆✉♠ ❛ ❂❃ ❋♦♦ ❬❛❪ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ✭❊q ❛✱ ❙❤♦✇ ❛✮ ❂❃ ❇❛r ❬❛❪ ✇❤❡r❡ ✳✳✳ òîãäà
ïðîãðàììà
áûëà
áû
íåïðàâèëüíîé✳
❰áúÿâëåíèå
âòîðîãî
ýêçåìïëÿðà
áóäåò
ïðàâèëüíûì✱ òîëüêî åñëè ❬❛❪ ÿâëÿåòñÿ ýêçåìïëÿðîì ❋♦♦ èñõîäÿ èç ïðåäïîëîæåíèé ✭❊q ❛✱ ❙❤♦✇ ❛✮✳ ❮î ýòî íå âûïîëíÿåòñÿ✱ òàê êàê ❬❛❪ ÿâëÿåòñÿ ýêçåìïëÿðîì ❋♦♦ òîëüêî èñõîäÿ èç áîëåå ñèëüíîãî ïðåäïîëîæåíèÿ ◆✉♠ ❛✳ ➘îïîëíèòåëüíûå ïðèìåðû îáúÿâëåíèé
✹✳✸✳✸
✐♥st❛♥❝❡
Ïðîèçâîäíûå ýêçåìïëÿðû
✃àê óïîìÿíóòî â ðàçäåëå ✹✳✷✳✶✱ îáúÿâëåíèÿ ôîðìó òèïîâ Ýòè
ìîæíî íàéòè â ãëàâå ✽✳
❞❡r✐✈✐♥❣ äàííûõ
✳
➴ñëè
ôîðìà
àâòîìàòè÷åñêè
ýêçåìïëÿðû
ïîä÷èíåíû
❞❛t❛
âêëþ÷åíà✱
òî
æå
♥❡✇t②♣❡
ñàìûì
C
❞❡r✐✈✐♥❣✳
ëèáî
ïîñðåäñòâîì
íàçâàííûõ
âêëþ÷åíèÿ
÷òî
äëÿ òèïà
ñóùåñòâîâàòü ýêçåìïëÿðû äëÿ âñåõ ñóïåðêëàññîâ êëàññà
✐♥st❛♥❝❡✱
èç
îãðàíè÷åíèÿì✱
ïîëüçîâàòåëåì ýêçåìïëÿðû✳ Ïðè âûâåäåíèè êëàññà
îáúÿâëåíèÿ
ñîäåðæàò íåîáÿçàòåëüíóþ
êàæäîãî
êëàññîâ
îáúÿâëåíèÿ ïðîèçâîäíûõ ýêçåìïëÿðîâ✳
ãåíåðèðóþòñÿ òåì
è
äëÿ
C✱
è
T✱
îïðåäåëÿåìûå
T
äëÿ
äîëæíû
ëèáî ïîñðåäñòâîì ÿâíîãî
ñóïåðêëàññà
â
èíñòðóêöèþ
Ïðîèçâîäíûå ýêçåìïëÿðû ïðåäîñòàâëÿþò óäîáíûå✱ øèðîêî èñïîëüçóåìûå îïåðàöèè äëÿ îïðåäåëÿåìûõ ïîëüçîâàòåëåì òèïîâ äàííûõ✳ ❮àïðèìåð✱ ïðîèçâîäíûå ýêçåìïëÿðû äëÿ òèïîâ äàííûõ â êëàññå
❊q
îïðåäåëÿþò îïåðàöèè
❂❂
è
✴❂✱
îñâîáîæäàÿ ïðîãðàììèñòà îò
íåîáõîäèìîñòè îïðåäåëÿòü èõ✳
✃ëàññàìè
â
Pr❡❧✉❞❡✱
äëÿ
êîòîðûõ
❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✱ ❙❤♦✇
è
ðàçðåøåíû
❘❡❛❞✳
➶ñå
ïðîèçâîäíûå
îíè
ïðèâåäåíû
ýêçåìïëÿðû✱ íà
ðèñ✳
✻✳✶✱
ÿâëÿþòñÿ✿ ñòð✳
✶✶✷✳
Òî÷íûå äåòàëè òîãî✱ êàê ãåíåðèðóþòñÿ ïðîèçâîäíûå ýêçåìïëÿðû äëÿ êàæäîãî èç ýòèõ
✼✹
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
êëàññîâ✱ äàíû â ãëàâå ✶✵✱ âêëþ÷àÿ ïîäðîáíîå îïèñàíèå òîãî✱ êîãäà òàêèå ïðîèçâîäíûå ýêçåìïëÿðû âîçìîæíû✳ ✃ëàññû✱ îïðåäåëåííûå ñòàíäàðòíûìè áèáëèîòåêàìè✱ òàêæå ìîæíî èñïîëüçîâàòü äëÿ ïîðîæäåíèÿ ïðîèçâîäíûõ✳ ➴ñëè íåâîçìîæíî ïðîèçâåñòè îáúÿâëåíèå ✐♥st❛♥❝❡ íàä êëàññîì✱ íàçâàííîì â ôîðìå ❞❡r✐✈✐♥❣✱ ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ❮àïðèìåð✱ íå âñå òèïû äàííûõ ìîãóò äîëæíûì îáðàçîì ïîääåðæèâàòü ìåòîäû êëàññà ❊♥✉♠✳ Òàêæå ñòàòè÷åñêàÿ îøèáêà âîçíèêíåò â ñëó÷àå✱ åñëè çàäàòü ÿâíîå îáúÿâëåíèå ✐♥st❛♥❝❡ äëÿ êëàññà✱ êîòîðûé òàêæå ÿâëÿåòñÿ ïðîèçâîäíûì✳ ➴ñëè ôîðìà ❞❡r✐✈✐♥❣ â îáúÿâëåíèè ❞❛t❛ èëè ♥❡✇t②♣❡ îïóùåíà✱ òî íèêàêèå îáúÿâëåíèÿ ýêçåìïëÿðîâ äëÿ ýòîãî òèïà äàííûõ íå ïðîèçâîäÿòñÿ✱ òî åñòü îòñóòñòâèå ôîðìû ❞❡r✐✈✐♥❣ ýêâèâàëåíòíî âêëþ÷åíèþ ïóñòîé ôîðìû✿ ❞❡r✐✈✐♥❣ ✭✮✳ ✹✳✸✳✹
❮åîäíîçíà÷íûå
òèïû
è
çíà÷åíèÿ
ïî
óìîë÷àíèþ
äëÿ
ïåðåãðóæåííûõ ÷èñëîâûõ îïåðàöèé
topdecl
→
❞❡❢❛✉❧t ✭type1 ✱ . . . ✱ typen ✮
(n ≥ 0 )
Ïåðåâîä✿ îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
❞❡❢❛✉❧t ✭òèï1 ✱ . . . ✱ (n ≥ 0 )
→
òèïn ✮
Ïðîáëåìà✱ ñâÿçàííàÿ ñ ïåðåãðóçêîé â ❍❛s❦❡❧❧✱ ñîñòîèò â âîçìîæíîñòè íåîäíîçíà÷íîãî òèïà✳ ❮àïðèìåð✱ âîçüìåì ôóíêöèè r❡❛❞ è s❤♦✇✱ îïðåäåëåííûå â ãëàâå ✶✵✱ è ïðåäïîëîæèì✱ ÷òî èìåííî ■♥t è ❇♦♦❧ ÿâëÿþòñÿ ÷ëåíàìè ❘❡❛❞ è ❙❤♦✇✱ òîãäà âûðàæåíèå ❧❡t ① ❂ r❡❛❞ ✧✳✳✳✧ ✐♥ s❤♦✇ ① ✲✲ íåïðàâèëüíî
ÿâëÿåòñÿ íåîäíîçíà÷íûì✱ ïîòîìó ÷òî óñëîâèÿ✱ íàëàãàåìûå íà òèïû äëÿ s❤♦✇ è r❡❛❞ s❤♦✇ :: ∀ a. ❙❤♦✇ a ⇒ a → ❙tr✐♥❣ r❡❛❞ :: ∀ a. ❘❡❛❞ a ⇒ ❙tr✐♥❣ → a
ìîæíî âûïîëíèòü ïóòåì èíñòàíöèðîâàíèÿ ❛ êàê ■♥t èëè ❇♦♦❧ â îáîèõ ñëó÷àÿõ✳ Òàêèå âûðàæåíèÿ ñ÷èòàþòñÿ íåïðàâèëüíî òèïèçèðîâàííûìè✱ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ❒û ãîâîðèì✱ ÷òî âûðàæåíèå ❡ èìååò íåîäíàçíà÷íûé òèï✱ åñëè â åãî òèïå ∀ u. cx ⇒ t åñòü ïåðåìåííàÿ òèïà u â u ✱ êîòîðàÿ âñòðå÷àåòñÿ â cx ✱ íî íå â t ✳ Òàêèå òèïû íåäîïóñòèìû✳ ❮àïðèìåð✱ ðàíåå ðàññìîòðåííîå âûðàæåíèå✱ âêëþ÷àþùåå s❤♦✇ è r❡❛❞✱ èìååò íåîäíîçíà÷íûé òèï✱ òàê êàê åãî òèï ∀ a. ❙❤♦✇ a, ❘❡❛❞ a ⇒ ❙tr✐♥❣✳
✹✳✸✳
✃❐➚ÑÑÛ Ò➮Ï❰➶ ➮ Ï➴Ð➴➹ÐÓ➬✃➚
✼✺
❮åîäíîçíà÷íûå òèïû ìîæíî îáîéòè ñ ïîìîùüþ ââîäà ïîëüçîâàòåëÿ✳ ❰äèí ñïîñîá çàêëþ÷àåòñÿ â èñïîëüçîâàíèè ñèãíàòóð òèïîâ âûðàæåíèé✱ îïèñàííûõ â ðàçäåëå ✸✳✶✻✳ ❮àïðèìåð✱ äëÿ íåîäíîçíà÷íîãî âûðàæåíèÿ✱ äàííîãî ðàíåå✱ ìîæíî çàïèñàòü✿ ❧❡t ① ❂ r❡❛❞ ✧✳✳✳✧ ✐♥ s❤♦✇ ✭①✿✿❇♦♦❧✮
Ýòî óñòðàíÿåò íåîäíîçíà÷íîñòü òèïà✳ ➮íîãäà ïðåäïî÷òèòåëüíåå✱ ÷òîáû íåîäíîçíà÷íîå âûðàæåíèå áûëî òîãî æå òèïà✱ ÷òî è íåêîòîðàÿ ïåðåìåííàÿ✱ à íå çàäàííîãî ñ ïîìîùüþ ñèãíàòóðû ôèêñèðîâàííîãî òèïà✳ ➶ ýòîì ñîñòîèò íàçíà÷åíèå ôóíêöèè ❛s❚②♣❡❖❢ ✭ãëàâà ✽✮✿ x ❵❛s❚②♣❡❖❢❵ y èìååò çíà÷åíèå x ✱ íî çàñòàâëÿåò x è y èìåòü îäèí è òîò æå òèï✳ ❮àïðèìåð✱ ❛♣♣r♦①❙qrt ① ❂ ❡♥❝♦❞❡❋❧♦❛t ✶ ✭❡①♣♦♥❡♥t ① ❵❞✐✈❵ ✷✮ ❵❛s❚②♣❡❖❢❵ ①
✭❰ïèñàíèå ❡♥❝♦❞❡❋❧♦❛t è ❡①♣♦♥❡♥t ñì✳ â ðàçäåëå ✻✳✹✳✻✳✮ ❮åîäíîçíà÷íîñòè â êëàññå ◆✉♠ íàèáîëåå ðàñïðîñòðàíåíû✱ ïîýòîìó ❍❛s❦❡❧❧ ïðåäîñòàâëÿåò äðóãîé ñïîñîá ðàçðåøèòü èõ ✖ ñ ïîìîùüþ ❞❡❢❛✉❧t✲îáúÿâëåíèÿ✿ ❞❡❢❛✉❧t ✭t1 ✱ . . . ✱ tn ✮
ãäå n ≥ 0 ✱ è êàæäàÿ ti äîëæíà èìåòü òèï✱ äëÿ êîòîðîãî âûïîëíÿåòñÿ ◆✉♠ ti ✳ ➶ ñèòóàöèÿõ✱ êîãäà îáíàðóæåí íåîäíîçíà÷íûé òèï✱ ïåðåìåííàÿ íåîäíîçíà÷íîãî òèïà v ÿâëÿåòñÿ óìîë÷àòåëüíîé✱ åñëè✿ ïîÿâëÿåòñÿ òîëüêî â îãðàíè÷åíèÿõ âèäà C v ✱ ãäå C ✖ êëàññ✱ è✱ ïî ìåíüøåé ìåðå✱ îäèí èç ýòèõ êëàññîâ ÿâëÿåòñÿ ÷èñëîâûì êëàññîì ✭òî åñòü ◆✉♠ èëè ïîäêëàññîì ◆✉♠✮✱ è âñå ýòè êëàññû îïðåäåëåíû â Pr❡❧✉❞❡ èëè ñòàíäàðòíîé áèáëèîòåêå✳ ✭❮à ðèñ✳ ✻✳✷ ✲ ✻✳✸✱ ñòð✳ ✶✷✶ ✲ ✶✷✷ èçîáðàæåíû ÷èñëîâûå êëàññû✱ à íà ðèñ✳ ✻✳✶✱ ñòð✳ ✶✶✷ èçîáðàæåíû êëàññû✱ îïðåäåëåííûå â Pr❡❧✉❞❡✳✮
• v • •
✃àæäàÿ óìîë÷àòåëüíàÿ ïåðåìåííàÿ çàìåùàåòñÿ ïåðâûì òèïîì â ❞❡❢❛✉❧t✲ñïèñêå✱ êîòîðûé ÿâëÿåòñÿ ýêçåìïëÿðîì âñåõ êëàññîâ íåîäíîçíà÷íîé ïåðåìåííîé✳ ➴ñëè òàêîé òèï íå áóäåò íàéäåí ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ➶ ìîäóëå ìîæåò áûòü òîëüêî îäíî ❞❡❢❛✉❧t✲îáúÿâëåíèå✱ è åãî âëèÿíèå îãðàíè÷åíî ýòèì ìîäóëåì✳ ➴ñëè â ìîäóëå ❞❡❢❛✉❧t✲îáúÿâëåíèå íå çàäàíî✱ òî ïðåäïîëàãàåòñÿ✱ ÷òî çàäàíî îáúÿâëåíèå ❞❡❢❛✉❧t ✭■♥t❡❣❡r✱ ❉♦✉❜❧❡✮
Ïóñòîå ❞❡❢❛✉❧t✲îáúÿâëåíèå ❞❡❢❛✉❧t
✭✮
îòìåíÿåò âñå çíà÷åíèÿ ïî óìîë÷àíèþ â ìîäóëå✳
✼✻
➹❐➚➶➚ ✹✳
✹✳✹
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
➶ëîæåííûå îáúÿâëåíèÿ
Ñëåäóþùèå îáúÿâëåíèÿ ìîæíî èñïîëüçîâàòü â ëþáîì ñïèñêå îáúÿâëåíèé✱ âêëþ÷àÿ âåðõíèé óðîâåíü ìîäóëÿ✳ ✹✳✹✳✶
Ñèãíàòóðû òèïîâ
gendecl vars
→ →
vars ✿✿ [context ❂❃] type var1 ✱ . . . ✱ varn
(n ≥ 1 )
Ïåðåâîä✿ îáùåå✲îáúÿâëåíèå
→
ñïèñîê✲ïåðåìåííûõ
→ ✱ ...✱
✿✿ [êîíòåêñò ❂❃]
òèï
ñïèñîê✲ïåðåìåíûõ ïåðåìåííàÿ1
ïåðåìåííàÿn
(n ≥ 1 )
Ñèãíàòóðà òèïà îïðåäåëÿåò òèïû äëÿ ïåðåìåííûõ✱ âîçìîæíî ïî îòíîøåíèþ ê êîíòåêñòó✳ Ñèãíàòóðà òèïà èìååò âèä✿ v1 , . . . , vn ✿✿ cx ❂❃ t
êîòîðûé ýêâèâàëåíòåí óòâåðæäåíèþ vi ✿✿ cx ❂❃ t äëÿ êàæäîãî i îò 1 äî n ✳ ✃àæäàÿ vi äîëæíà èìåòü ñâÿçàííîå ñ íèì çíà÷åíèå â òîì æå ñïèñêå îáúÿâëåíèé✱ êîòîðûé ñîäåðæèò ñèãíàòóðó òèïà✱ ò✳å✳ áóäåò íåïðàâèëüíûì çàäàòü ñèãíàòóðó òèïà äëÿ ïåðåìåííîé✱ ñâÿçàííîé âî âíåøíåé îáëàñòè âèäèìîñòè✳ ✃ðîìå òîãî✱ áóäåò íåïðàâèëüíûì çàäàòü áîëåå îäíîé ñèãíàòóðû òèïà äëÿ îäíîé ïåðåìåííîé✱ äàæå åñëè ñèãíàòóðû èäåíòè÷íû✳ ✃àê óïîìÿíóòî â ðàçäåëå ✹✳✶✳✷✱ êàæäàÿ ïåðåìåííàÿ òèïà✱ ïîÿâëÿþùàÿñÿ â ñèãíàòóðå✱ íàõîäèòñÿ ïîä êâàíòîðîì âñåîáùíîñòè íàä ñèãíàòóðîé✱ è✱ ñëåäîâàòåëüíî✱ îáëàñòü âèäèìîñòè ïåðåìåííîé òèïà îãðàíè÷åíà ñèãíàòóðîé òèïà✱ êîòîðàÿ åå ñîäåðæèò✳ ❮àïðèìåð✱ â ñëåäóþùèõ îáúÿâëåíèÿõ ❢ ✿✿ ❛ ✲❃ ❛ ❢ ① ❂ ① ✿✿ ❛
✲✲ íåïðàâèëüíî
â äâóõ ñèãíàòóðàõ òèïà ñîâåðøåííî ðàçëè÷íû✳ ➘åéñòâèòåëüíî✱ ýòè îáúÿâëåíèÿ ñîäåðæàò ñòàòè÷åñêóþ îøèáêó✱ òàê êàê ① íå èìååò òèï ∀ a. a ✳ ✭Òèï ① çàâèñèò îò òèïà ❢❀ â íàñòîÿùåå âðåìÿ â ❍❛s❦❡❧❧ íåò ñïîñîáà óêàçàòü ñèãíàòóðó äëÿ ïåðåìåííîé ñ çàâèñèìûì òèïîì✱ ýòî ðàýúÿñíÿåòñÿ â ðàçäåëå ✹✳✺✳✹✳✮ ➴ñëè äàííàÿ ïðîãðàììà âêëþ÷àåò ñèãíàòóðó äëÿ ïåðåìåííîé f ✱ òîãäà êàæäîå èñïîëüçîâàíèå f òðàêòóåòñÿ êàê f ✱ èìåþùàÿ îáúÿâëåííûé òèï✳ ➴ñëè òîò æå òèï íåëüçÿ òàêæå âûâåñòè äëÿ îïðåäåëÿåìîãî âõîæäåíèÿ f ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ❛
✹✳✹✳
✼✼
➶❐❰➷➴❮❮Û➴ ❰➪Úß➶❐➴❮➮ß
➴ñëè ïåðåìåííàÿ èñïîëüçîâàíèè
f
îïðåäåëåíà áåç ñîîòâåòñòâóþùåé ñèãíàòóðû òèïà✱ òîãäà ïðè
f
âíå åãî ñîáñòâåííîé ãðóïïû îáúÿâëåíèé ✭ñì✳ ðàçäåë ✹✳✺✮ ïåðåìåííàÿ
òðàêòóåòñÿ êàê èìåþùàÿ ñîîòâåòñòâóþùèé âûâåäåííûé èëè îñíîâíîé òèï✳ Òåì íå ìåíåå✱ äëÿ òîãî ÷òîáû ãàðàíòèðîâàòü✱ ÷òî âûâîä òèïà åùå âîçìîæåí✱ îïðåäåëÿåìîå âõîæäåíèå è âñå èñïîëüçîâàíèÿ
f
â ïðåäåëàõ åãî ãðóïïû îáúÿâëåíèé äîëæíû èìåòü îäèí è òîò æå
ìîíîìîðôíûé òèï ✭èç êîòîðîãî îñíîâíîé òèï ïîëó÷àåòñÿ ïóòåì îáîáùåíèÿ✱ îïèñàííîãî â ðàçäåëå ✹✳✺✳✷✮✳ ❮àïðèìåð✱ åñëè ìû îïðåäåëèì
sqr ① ❂
①✯① sqr :: ∀ a. ◆✉♠ a ⇒ a → a ✳ sqr ✺ èëè sqr ✵✳✶✳ Òàêæå ïðàâèëüíûì
òîãäà îñíîâíûì òèïîì áóäåò òàêîå ïðèìåíåíèå✱ êàê
Ýòîò òèï ïîçâîëÿåò áóäåò îáúÿâèòü áîëåå
ñïåöèàëèçèðîâàííûé òèï✱ íàïðèìåð
sqr ✿✿ ■♥t ✲❃ ■♥t íî òåïåðü òàêîå ïðèìåíåíèå✱ êàê
sqr ✵✳✶✱ áóäåò íåïðàâèëüíûì✳ Òàêèå ñèãíàòóðû òèïîâ✱
êàê
sqr ✿✿ ✭◆✉♠ ❛✱ ◆✉♠ ❜✮ ❂❃ ❛ ✲❃ ❜ sqr ✿✿ ❛ ✲❃ ❛
✲✲ íåïðàâèëüíî ✲✲ íåïðàâèëüíî
ÿâëÿþòñÿ íåïðàâèëüíûìè✱ ïîñêîëüêó îíè ÿâëÿþòñÿ áîëåå îáùèìè✱ ÷åì îñíîâíîé òèï
sqr✳
Ñèãíàòóðû òèïîâ ìîæíî òàêæå èñïîëüçîâàòü äëÿ òîãî✱ ÷òîáû îáåñïå÷èòü ïîëèìîðôíóþ ðåêóðñèþ✳ Ñëåäóþùåå îïðåäåëåíèå ÿâëÿåòñÿ íåïðàâèëüíûì✱ çàòî ïîêàçûàåò✱ êàê ìîæíî èñïîëüçîâàòü ñèãíàòóðó òèïà äëÿ óêàçàíèÿ òèïà✱ êîòîðûé ÿâëÿåòñÿ áîëåå îáùèì✱ ÷åì òîò✱ êîòîðûé áûë áû âûâåäåí✿
❞❛t❛ ❚ ❛
❂ ❑ ✭❚ ■♥t✮ ✭❚ ❛✮
❢ ✿✿ ❚ ❛ ✲❃ ❛ ❢ ✭❑ ① ②✮ ❂ ✐❢ ❢ ① ❂❂ ✶ t❤❡♥ ❢ ② ❡❧s❡ ✉♥❞❡❢✐♥❡❞ ➴ñëè ìû óáåðåì îáúÿâëåíèå ñèãíàòóðû✱ òèï
❢
❚ ■♥t ✲❃ ■♥t ❢ ÿâëÿåòñÿ ❚ ■♥t✳
áóäåò âûâåäåí êàê
áëàãîäàðÿ ïåðâîìó ðåêóðñèâíîìó âûçîâó✱ äëÿ êîòîðîãî àðãóìåíòîì
Ïîëèìîðôíàÿ ðåêóðñèÿ ïîçâîëÿåò ïîëüçîâàòåëþ óêàçàòü áîëåå îáùóþ ñèãíàòóðó òèïà
❚ ❛ ✲❃ ❛✳ ✹✳✹✳✷
gendecl fixity ops op
■♥❢✐①✲îáúÿâëåíèÿ
→ → → →
fixity [integer ] ops ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥❢✐① op1 ✱ . . . ✱ opn varop | conop
(n ≥ 1 )
✼✽
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
Ïåðåâîä✿ îáùååå✲îáúÿâëåíèå
→
àññîöèàòèâíîñòü [öåëûé✲ëèòåðàë] ñïèñîê✲îïåðàòîðîâ
→ ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥❢✐① ñïèñîê✲îïåðàòîðîâ → îïåðàòîð1 ✱ . . . ✱ îïåðàòîðn (n ≥ 1 ) îïåðàòîð → àññîöèàòèâíîñòü
îïåðàòîð✲ïåðåìåííîé
|
îïåðàòîð✲êîíñòðóêòîðà
✐♥❢✐①✲îáúÿâëåíèå çàäàåò àññîöèàòèâíîñòü è ïðèîðèòåò ✭ñèëó ñâÿçûâàíèÿ✮ îäíîãî èëè áîëåå îïåðàòîðîâ✳ Öåëîå ÷èñëî integer â ✐♥❢✐①✲îáúÿâëåíèè äîëæíî áûòü â äèàïàçîíå îò 0 äî 9 ✳ ✐♥❢✐①✲îáúÿâëåíèå ìîæíî ðàçìåñòèòü âñþäó✱ ãäå ìîæíî ðàçìåñòèòü ñèãíàòóðó òèïà✳ ✃àê è ñèãíàòóðà òèïà✱ ✐♥❢✐①✲îáúÿâëåíèå çàäàåò ñâîéñòâà êîíêðåòíîãî îïåðàòîðà✳ Òàê æå✱ êàê è ñèãíàòóðà òèïà✱ ✐♥❢✐①✲îáúÿâëåíèå ìîæíî ðàçìåñòèòü òîëüêî â òîé æå ïîñëåäîâàòåëüíîñòè îáúÿâëåíèé✱ ÷òî è îáúÿâëåíèå ñàìîãî îïåðàòîðà✱ è äëÿ ëþáîãî îïåðàòîðà ìîæíî çàäàòü íå áîëåå îäíîãî ✐♥❢✐①✲îáúÿâëåíèÿ✳ ✭❒åòîäû êëàññà ÿâëÿþòñÿ íåáîëüøèì èñêëþ÷åíèåì✿ èõ ✐♥❢✐①✲îáúÿâëåíèÿ ìîæíî ðàçìåùàòü â ñàìîì îáúÿâëåíèè êëàññà èëè íà âåðõíåì óðîâíå✳✮ Ïî ñïîñîáó àññîöèàòèâíîñòè îïåðàòîðû äåëÿòñÿ íà òðè âèäà✿ íåàññîöèàòèâíûå✱ ëåâîàññîöèàòèâíûå è ïðàâîàññîöèàòèâíûå ✭ ✐♥❢✐①✱ ✐♥❢✐①❧ è ✐♥❢✐①r ñîîòâåòñòâåííî✮✳ Ïî ïðèîðèòåòó ✭ñèëå ñâÿçûâàíèÿ✮ îïåðàòîðû äåëÿòñÿ íà äåñÿòü ãðóïï✱ â ñîîòâåòñòâèè ñ óðîâíåì ïðèîðèòåòà îò ✵ äî ✾ âêëþ÷èòåëüíî ✭óðîâåíü ✵ ñâÿçûâàåò îïåðàíäû íàèìåíåå ñèëüíî✱ à óðîâåíü ✾ ✖ íàèáîëåå ñèëüíî✮✳ ➴ñëè öåëîå ÷èñëî integer íå óêàçàíî✱ îïåðàòîðó ïðèñâàèâàåòñÿ óðîâåíü ïðèîðèòåòà ✾✳ ❐þáîé îïåðàòîð✱ äëÿ êîòîðîãî íåò ✐♥❢✐①✲îáúÿâëåíèÿ✱ ñ÷èòàåòñÿ îáúÿâëåííûì ✐♥❢✐①❧ ✾ ✭áîëåå ïîäðîáíóþ èíôîðìàöèþ îá èñïîëüçîâàíèè ✐♥❢✐①✲îáúÿâëåíèé ñì✳ â ðàçäåëå ✸✮✳ ➶ òàáëèöå ✹✳✶ ïåðå÷èñëåíû àññîöèàòèâíîñòè è ïðèîðèòåòû îïåðàòîðîâ✱ îïðåäåëåííûõ â Pr❡❧✉❞❡✳ ➚ññîöèàòèâíîñòü ÿâëÿåòñÿ ñâîéñòâîì êîíêðåòíîãî îáúåêòà ✭êîíñòðóêòîðà èëè ïåðåìåííîé✮✱ êàê è åãî òèï❀ àññîöèàòèâíîñòü íå ÿâëÿåòñÿ ñâîéñòâîì èìåíè îáúåêòà✳ ❮àïðèìåð✱
✹✳✹✳
➶❐❰➷➴❮❮Û➴ ❰➪Úß➶❐➴❮➮ß
✼✾
Ïðèî✲ ❐åâîàññîöèàòèâíûå ❮åàññîöèàòèâíûå Ïðàâîàññîöèàòèâíûå ðèòåò îïåðàòîðû îïåðàòîðû îïåðàòîðû ✾ ✦✦ ✳ ✽ ❫✱ ❫❫✱ ✯✯ ✼ ✯✱ ✴✱ ❵❞✐✈❵✱ ❵♠♦❞❵✱ ❵r❡♠❵✱ ❵q✉♦t❵ ✻ ✰✱ ✲ ✺ ✿✱ ✰✰ ✹ ❂❂✱ ✴❂✱ ❁✱ ❁❂✱ ❃✱ ❃❂✱ ❵❡❧❡♠❵✱ ❵♥♦t❊❧❡♠❵ ✸ ✫✫ ✷ ⑤⑤ ✶ ❃❃✱ ❃❃❂ ✵ ✩✱ ✩✦✱ ❵s❡q❵ Òàáëèöà ✹✳✶✿ Ïðèîðèòåòû è àññîöèàòèâíîñòè îïåðàòîðîâ â Pr❡❧✉❞❡ ♠♦❞✉❧❡ ❇❛r✭ ♦♣ ✮ ✇❤❡r❡ ✐♥❢✐①r ✼ ❵♦♣❵ ♦♣ ❂ ✳✳✳ ♠♦❞✉❧❡ ❋♦♦ ✇❤❡r❡ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ❇❛r ✐♥❢✐① ✸ ❵♦♣❵ ❛ ❵♦♣❵ ❜ ❂ ✭❛ ❵❇❛r✳♦♣❵ ❜✮ ✰ ✶ ❢ ① ❂ ❧❡t ♣ ❵♦♣❵ q ❂ ✭♣ ❵❋♦♦✳♦♣❵ q✮ ✯ ✷ ✐♥ ✳✳✳
➬äåñü ❵❇❛r✳♦♣❵ ✖ îïåðàòîð ñ ✐♥❢✐①r ✼✱ ❵❋♦♦✳♦♣❵ ✖ îïåðàòîð ñ ✐♥❢✐① ✸✱ à îïåðàòîð ♦♣ âî âëîæåííîì îïðåäåëåíèè â ïðàâîé ÷àñòè ❢ èìååò çàäàííûå ïî óìîë÷àíèþ ✐♥❢✐①❧ ✾✳ ✭Ñâîéñòâà îïåðàòîðà ❵♦♣❵ âî âëîæåííîì îïðåäåëåíèè ìîæíî áûëî áû òàêæå çàäàòü ñ ïîìîùüþ âëîæåííîãî ✐♥❢✐①✲îáúÿâëåíèÿ✳✮ ✹✳✹✳✸
Ñâÿçûâàíèå èìåí â ôóíêöèÿõ è îáðàçöàõ
decl
→
(funlhs | pat 0 ) rhs
funlhs
→ | | |
var apat { apat } pat i+1 varop (a,i) pat i+1 lpat i varop (l,i) pat i+1 pat i+1 varop (r,i) rpat i
✽✵
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
✭ funlhs ✮ apat { apat }
| rhs
→ |
❂ exp [✇❤❡r❡ decls] gdrhs [✇❤❡r❡ decls]
gdrhs
→
gd ❂ exp [gdrhs]
gd
→
⑤ exp 0
Ïåðåâîä✿ îáúÿâëåíèå
→
(ëåâàÿ✲÷àñòü✲ôóíêöèè | ëåâàÿ✲÷àñòü✲ôóíêöèè
0 îáðàçåö ) ïðàâàÿ✲÷àñòü
→
ïåðåìåííàÿ òàêîé✲êàê✲îáðàçåö { òàêîé✲êàê✲îáðàçåö } | îáðàçåöi+1 îïåðàòîð✲ïåðåìåííîé(a,i) îáðàçåöi+1 | ëåâûé✲îáðàçåöi îïåðàòîð✲ïåðåìåííîé(l,i) îáðàçåöi+1 | îáðàçåöi+1 îïåðàòîð✲ïåðåìåííîé(r,i) ïðàâûé✲îáðàçåöi
|✭
ëåâàÿ✲÷àñòü✲ôóíêöèè
✮
òàêîé✲êàê✲îáðàçåö
{
òàêîé✲êàê✲îáðàçåö
}
→ ❂ âûðàæåíèå [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé] | ïðàâàÿ✲÷àñòü✲ñî✲ñòðàæàìè [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé]
ïðàâàÿ✲÷àñòü
ïðàâàÿ✲÷àñòü✲ñî✲ñòðàæàìè
❂
ñòðàæ ñòðàæ
⑤
→
âûðàæåíèå [ïðàâàÿ✲÷àñòü✲ñî✲ñòðàæàìè]
→
âûðàæåíèå
0
❒û ðàçëè÷àåì äâà ñëó÷àÿ èñïîëüçîâàíèÿ ýòîãî ñèíòàêñèñà✿ ïðîèñõîäèò✱ êîãäà ëåâîé ÷àñòüþ ÿâëÿåòñÿ
â ôóíêöèÿõ✳
Ñâÿçûâàíèå èìåí ìîæåò èìåòü ìåñòî íà âåðõíåì óðîâíå ìîäóëÿ èëè â
ïðåäåëàõ êîíñòðóêöèé
✹✳✹✳✸✳✶
ñâÿçûâàíèå èìåí â îáðàçöàõ
pat 0 ✱ â ïðîòèâíîì ñëó÷àå ýòî ñâÿçûâàíèå èìåí
✇❤❡r❡
èëè
❧❡t✳
Ñâÿçûâàíèå èìåí â ôóíêöèÿõ
Ñâÿçûâàíèå
èìåí
â
ôóíêöèè
ñâÿçûâàåò
Ñâÿçûâàíèå èìåí â ôóíêöèè äëÿ ïåðåìåííîé
ïåðåìåííóþ
x
x p11 . . . p1k ... x pn1 . . . pnk
ñî
çíà÷åíèåì
â îáùåì âèäå âûãëÿäèò òàê✿
match1 matchn
ôóíêöèè✳
✹✳✹✳
✽✶
➶❐❰➷➴❮❮Û➴ ❰➪Úß➶❐➴❮➮ß
ãäå êàæäîå
pij
✖ îáðàçåö✱ à êàæäîå
matchi
â îáùåì âèäå âûãëÿäèò òàê✿
❂ ei ✇❤❡r❡ ④ declsi ⑥ èëè
⑤ gi1 ... ⑤ gimi
n ≥ 1 ✱ 1 ≤ i ≤ n ✱ mi ≥ 1 ✳
❂ ei1 ❂ eimi ✇❤❡r❡ ④ declsi ⑥
Ïåðâûé èç äâóõ âàðèàíòîâ ðàññìàòðèâàåòñÿ êàê êðàòêàÿ
çàïèñü äëÿ îñîáîãî ñëó÷àÿ âòîðîãî âàðèàíòà✱ à èìåííî✿
⑤ ❚r✉❡ ❂ ei ✇❤❡r❡ ④ declsi ⑥ ❰òìåòèì✱
÷òî
âñå
èíñòðóêöèè✱
îïðåäåëÿþùèå
ôóíêöèþ✱
äîëæíû
ñëåäîâàòü
íåïîñðåäñòâåííî äðóã çà äðóãîì✱ è ÷èñëî îáðàçöîâ â êàæäîé èíñòðóêöèè äîëæíî áûòü
îäíî
è
äîëæåí áûòü
òî
æå✳
❮àáîð
îáðàçöîâ✱
ñîîòâåòñòâóþùèé
êàæäîìó
ñîïîñòàâëåíèþ✱
ëèíåéíûì✿ íèêàêàÿ ïåðåìåííàÿ íå ìîæåò ïîÿâèòüñÿ âî âñåì íàáîðå áîëåå
îäíîãî ðàçà✳ ➘ëÿ
ñâÿçûâàíèÿ
àëüòåðíàòèâíûé
çíà÷åíèé ñèíòàêñèñ✳
ôóíêöèé
ñ
❮àïðèìåð✱
èíôèêñíûìè
âñå
ýòè
òðè
îïåðàòîðàìè îïðåäåëåíèÿ
èìååòñÿ ôóíêöèè
ýêâèâàëåíòíû✿
♣❧✉s ① ② ③ ❂ ①✰②✰③ ① ❵♣❧✉s❵ ② ❂ ❭ ③ ✲❃ ①✰②✰③ ✭① ❵♣❧✉s❵ ②✮ ③ ❂ ①✰②✰③
Òðàíñëÿöèÿ✿
Ñâÿçûâàíèå
èìåí
äëÿ
ôóíêöèé
â
îáùåì
âèäå
ñåìàíòè÷åñêè
ýêâèâàëåíòíî óðàâíåíèþ ✭ò✳å✳ ïðîñòîìó ñâÿçûâàíèþ èìåí â îáðàçöàõ✮✿
x ❂ ❭ x1 . . . xk ✲❃ ❝❛s❡ ✭x1 ✱ . . . ✱ xk ✮ ♦❢ ✭p11 , . . . , p1k ✮ match1 ... ✭pn1 , . . . , pnk ✮ matchn ãäå
xi
✹✳✹✳✸✳✷
✖ íîâûå èäåíòèôèêàòîðû✳
Ñâÿçûâàíèå èìåí â îáðàçöàõ
Ñâÿçûâàíèå
èìåí
â
îáðàçöàõ
ñâÿçûâàåò
ñâÿçûâàíèå èìåí â îáðàçöàõ èìååò âèä
ïåðåìåííûå
p = e✳
❰áðàçåö
ñî
p
çíà÷åíèÿìè✳
Ïðîñòîå
✏ëåíèâî✑ ñîïîñòàâëÿåòñÿ
çíà÷åíèþ✱ êàê íåîïðîâåðæèìûé îáðàçåö✱ êàê åñëè áû âïåðåäè íåãî áûë óêàçàíà òðàíñëÿöèþ â ðàçäåëå ✸✳✶✷✮✳
⑦
✭ñì✳
✽✷
➶
➹❐➚➶➚ ✹✳
îáùåì
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
âèäå ñâÿçûâàíèå èìåí â îáðàçöàõ âûãëÿäèò òàê✿
p match ✱
ãäå
match
èìååò
òó æå ñòðóêòóðó✱ ÷òî äëÿ îïèñàííîãî âûøå ñâÿçûâàíèÿ èìåí â ôóíêöèÿõ✱ äðóãèìè ñëîâàìè✱ ñâÿçûâàíèå èìåí â îáðàçöàõ èìååò âèä✿
⑤ g1 ⑤ g2 ... ⑤ gm ✇❤❡r❡
p
Òðàíñëÿöèÿ✿
❰ïèñàííîå
âûøå
❂ e1 ❂ e2 ❂ em ④ decls ⑥
ñâÿçûâàíèå
èìåí
â
îáðàçöàõ
ñåìàíòè÷åñêè
ýêâèâàëåíòíî ýòîìó ïðîñòîìó ñâÿçûâàíèþ èìåí â îáðàçöàõ✿
p ❂ ❧❡t decls ✐♥ ✐❢ g1 t❤❡♥ e1 ❡❧s❡ ✐❢ g2 t❤❡♥ e2 ❡❧s❡ ... ✐❢ gm t❤❡♥ em ❡❧s❡ ❡rr♦r ✧❮åñîïîñòàâèìûé îáðàçåö✧
➬àìå÷àíèå î ñèíòàêñèñå✳
❰áû÷íî ïðîñòî îòëè÷èòü✱ ÿâëÿåòñÿ ëè ñâÿçûâàíèå èìåí
ñâÿçûâàíèåì èìåí â îáðàçöå èëè â ôóíêöèè✱ íî íàëè÷èå
♥✰❦✲îáðàçöîâ
èíîãäà ñáèâàåò
ñ òîëêó✳ Ðàññìîòðèì ÷åòûðå ïðèìåðà✿
① ✰ ✶ ❂ ✳✳✳
✲✲ Ñâÿçûâàíèå èìåí â ôóíêöèè✱ îïðåäåëÿåò ✭✰✮ ✲✲ Ýêâèâàëåíòíî ✭✰✮ ① ✶ ❂ ✳✳✳
✭① ✰ ✶✮ ❂ ✳✳✳
✲✲ Ñâÿçûâàíèå èìåí â îáðàçöå✱ îïðåäåëÿåò ①
✭① ✰ ✶✮ ✯ ② ❂ ✳✳✳
✲✲ Ñâÿçûâàíèå èìåí â ôóíêöèè✱ îïðåäåëÿåò ✭✯✮ ✲✲ Ýêâèâàëåíòíî ✭✯✮ ✭①✰✶✮ ② ❂ ✳✳✳
✭① ✰ ✶✮ ② ❂ ✳✳✳
✲✲ Ñâÿçûâàíèå èìåí â ôóíêöèè✱ îïðåäåëÿåò ✭✰✮ ✲✲ Ýêâèâàëåíòíî ✭✰✮ ① ✶ ② ❂ ✳✳✳
Ïåðâûå äâà ñâÿçûâàíèÿ èìåí ìîæíî ðàçëè÷èòü✱ ïîòîìó ÷òî ñâÿçûâàíèå èìåí â îáðàçöå èìååò â ëåâîé ÷àñòè
♥✰❦✲îáðàçöîì
✹✳✺
pat 0 ✱
à íå
pat ✱
ñâÿçûâàíèå èìåí â ïåðâîì ïðèìåðå íå ìîæåò áûòü
áåç ñêîáîê✳
Ñòàòè÷åñêàÿ ñåìàíòèêà ñâÿçûâàíèé èìåí â ôóíêöèÿõ è îáðàçöàõ
➶ ýòîì ðàçäåëå ðàññìàòðèâàåòñÿ ñòàòè÷åñêàÿ ñåìàíòèêà ñâÿçûâàíèé èìåí â ôóíêöèÿõ è îáðàçöàõ â
❧❡t✲âûðàæåíèè
èëè èíñòðóêöèè
✇❤❡r❡✳
✹✳✺✳
✽✸
ÑÒ➚Ò➮×➴Ñ✃➚ß Ñ➴❒➚❮Ò➮✃➚ Ñ➶ß➬Û➶➚❮➮➱ ➮❒➴❮
✹✳✺✳✶
➚íàëèç çàâèñèìîñòåé
➶îîáùå
ñòàòè÷åñêàÿ
ñåìàíòèêà
❒èëíåðà ✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮✳
çàäàåòñÿ
îáû÷íûìè
ïðàâèëàìè
âûâîäà
Ïðåîáðàçîâàíèå íà îñíîâå àíàëèçà çàâèñèìîñòåé
Õèíäëè✲ ✖ ïåðâîå✱
÷òî âûïîëíÿåòñÿ äëÿ òîãî✱ ÷òîáû ðàñøèðèòü ïîëèìîðôèçì✳ ➘âå ïåðåìåííûå✱ ñâÿçàííûå ïîñðåäñòâîì îáúÿâëåíèé ñî çíà÷åíèÿìè✱ íàõîäÿòñÿ â îäíîé
ãðóïïå îáúÿâëåíèé✱ åñëè
✶✳ îíè ñâÿçàíû îäíèì è òåì æå ñâÿçûâàíèåì èìåí â îáðàçöå èëè ✷✳ èõ ñâÿçûâàíèÿ èìåí âçàèìíî ðåêóðñèâíû ✭âîçìîæíî✱ ïîñðåäñòâîì íåêîòîðûõ äðóãèõ îáúÿâëåíèé✱ êîòîðûå òàêæå ÿâëÿþòñÿ ÷àñòüþ ãðóïïû✮✳
Ïðèìåíåíèå ñëåäóþùèõ ïðàâèë ñëóæèò ïðè÷èíîé òîãî✱ ÷òî êàæäàÿ êîíñòðóêöèÿ ✭âêëþ÷àÿ
✇❤❡r❡✲êîíñòðóêöèþ✱
❧❡t✲
èëè
✇❤❡r❡✲
êîòîðàÿ çàäàåò ñâÿçûâàíèå èìåí âåðõíåãî
óðîâíÿ â ìîäóëå✮ ñâÿçûâàåò ïåðåìåííûå ëèøü îäíîé ãðóïïû îáúÿâëåíèé✱ îõâàòûâàÿ✱ òàêèì îáðàçîì✱ íåîáõîäèìûé àíàëèç çàâèñèìîñòåé✿
✶✳ Ïîðÿäîê îáúÿâëåíèé â ✷✳
❧❡t ④d1 ❀ d2 ⑥ ✐♥ e ✭êîãäà íåò
✹✳✺✳✷
✶
✇❤❡r❡✴❧❡t✲êîíñòðóêöèÿõ
íåñóùåñòâåíåí✳
❧❡t ④d1 ⑥ ✐♥ ✭❧❡t ④d2 ⑥ ✐♥ e ✮ èäåíòèôèêàòîðà✱ ñâÿçàííîãî â d2 ✱ d2 ÿâëÿåòñÿ ❂
ñâîáîäíûì â
d1 ✮
❰áîáùåíèå
Ñèñòåìà òèïîâ Õèíäëè✲❒èëíåðà ✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮ óñòàíàâëèâàåò òèïû â
❧❡t✲âûðàæåíèè
â äâà ýòàïà✳ Ñíà÷àëà îïðåäåëÿåòñÿ òèï ïðàâîé ÷àñòè îáúÿâëåíèÿ✱ ðåçóëüòàòîì ÿâëÿåòñÿ òèï áåç èñïîëüçîâàíèÿ êâàíòîðà âñåîáùíîñòè✳ ➬àòåì âñå ïåðåìåííûå òèïà✱ êîòîðûå âñòðå÷àþòñÿ â ýòîì òèïå✱ ïîìåùàþòñÿ ïîä êâàíòîð âñåîáùíîñòè✱ åñëè îíè íå ñâÿçàíû ñî
ñâÿçàííûìè
ïåðåìåííûìè
â
îêðóæåíèè
çàêëþ÷åíèå îïðåäåëÿåòñÿ òèï òåëà
òèïà❀
ýòî
íàçûâàåòñÿ
❧❡t✲âûðàæåíèÿ✳
îáîáùåíèåì✳
➶
❮àïðèìåð✱ ðàññìîòðèì îáúÿâëåíèå
❢ ① ❂ ❧❡t ❣ ② ❂ ✭②✱②✮ ✐♥ ✳✳✳ ❣ ÿâëÿåòñÿ a → (a, a)✳ ❮à øàãå îáîáùåíèÿ ❣ áóäåò ïðèïèñàí ïîëèìîðôíûé òèï ∀ a. a → (a, a)✱ ïîñëå ÷åãî ìîæíî ïåðåõîäèòü ê îïðåäåëåíèþ òèïà ÷àñòè ✏ ✳✳✳✑✳ Òèïîì îïðåäåëåíèÿ
Ïðè îïðåäåëåíèè òèïà ïåðåãðóæåííûõ îïðåäåëåíèé âñå îãðàíè÷åíèÿ íà ïåðåãðóçêè èç îäíîé ãðóïïû îáúÿâëåíèé ñîáèðàþòñÿ âìåñòå äëÿ òîãî✱ ÷òîáû ñîçäàòü êîíòåêñò äëÿ òèïà êàæäîé ïåðåìåííîé✱ îáúÿâëåííîé â ãðóïïå✳ ❮àïðèìåð✱ â îïðåäåëåíèè
✶
Ñõîäíîå ïðåîáðàçîâàíèå îïèñàíî â êíèãå Ïåéòîíà ➘æîíñà ✭P❡②t♦♥ ❏♦♥❡s✮ ❬✶✵❪✳
✽✹
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❢ ① ❂ ❧❡t ❣✶ ① ② ❂ ✐❢ ①❃② t❤❡♥ s❤♦✇ ① ❡❧s❡ ❣✷ ② ① ❣✷ ♣ q ❂ ❣✶ q ♣ ✐♥ ✳✳✳ ❣✶ è ❣✷ ÿâëÿåòñÿ a → a → ❙tr✐♥❣✱ à ñîáðàííûå îãðàíè÷åíèÿ ❖r❞ a ✭îãðàíè÷åíèå✱ âîçíèêøåå èç èñïîëüçîâàíèÿ ❃✮ è ❙❤♦✇ a âîçíèêøåå èç èñïîëüçîâàíèÿ s❤♦✇✮✳ Ïåðåìåííûå òèïà✱ âñòðå÷àþùèåñÿ
Òèïîì îïðåäåëåíèé ïðåäñòàâëþò ñîáîé ✭îãðàíè÷åíèå✱
â ýòîé ñîâîêóïíîñòè îãðàíè÷åíèé✱ íàçûâàþòñÿ ❮à øàãå îáîáùåíèÿ
❣✶
è
❣✷
ïåðåìåííûìè îãðàíè÷åííîãî òèïà✳
áóäåò ïðèïèñàí òèï
∀ a. (❖r❞ a, ❙❤♦✇ a) ⇒ a → a → ❙tr✐♥❣ ➬àìåòèì✱ ÷òî
❣✶✳
❣✷
ïåðåãðóæåí òàê æå✱ êàê è
❣✶✱
õîòÿ
❃
è
s❤♦✇
íàõîäÿòñÿ â îïðåäåëåíèè
➴ñëè ïðîãðàììèñò óêàæåò ÿâíûå ñèãíàòóðû òèïîâ äëÿ áîëåå ÷åì îäíîé ïåðåìåííîé â ãðóïïå îúÿâëåíèé✱ êîíòåêñòû ýòèõ ñèãíàòóð äîëæíû áûòü èäåíòè÷íû ñ òî÷íîñòüþ äî ïåðåèìåíîâàíèÿ ïåðåìåííûõ òèïà✳
✹✳✺✳✸
❰øèáêè ïðèâåäåíèÿ êîíòåêñòà
✃àê ñêàçàíî â ðàçäåëå ✹✳✶✳✹✱ êîíòåêñò òèïà ìîæåò îãðàíè÷èâàòü òîëüêî ïåðåìåííóþ òèïà èëè ïðèìåíåíèå ïåðåìåííîé òèïà îäíèì èëè áîëåå òèïàìè✳ Ñëåäîâàòåëüíî✱ òèïû✱ ïîëó÷åííûå ïðè îáîáùåíèè✱ äîëæíû èìåòü âèä✱ â êîòîðîì âñå îãðàíè÷åíèÿ êîíòåêñòà ïðèâåäåíû ê ýòîé ✏ãëàâíîé íîðìàëüíîé ôîðìå✑✳ Ðàññìîòðèì✱ ê ïðèìåðó✱ îïðåäåëåíèå
❢ ①s ②
❂ ①s ❂❂ ❬②❪
➴ãî òèïîì ÿâëÿåòñÿ
❢ ✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❛ ✲❃ ❇♦♦❧ à íå
❢ ✿✿ ❊q ❬❛❪ ❂❃ ❬❛❪ ✲❃ ❛ ✲❃ ❇♦♦❧ ➘àæå åñëè ðàâåíñòâî èìååò ìåñòî â òèïå ñïèñêà✱ ïåðåä îáîáùåíèåì íåîáõîäèìî óïðîñòèòü êîíòåêñò✱ èñïîëüçóÿ îáúÿâëåíèå ýêçåìïëÿðà äëÿ
❊q
íà ñïèñêàõ✳ ➴ñëè â
îáëàñòè âèäèìîñòè íåò òàêîãî ýêçåìïëÿðà ✖ âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ Ðàññìîòðèì ïðèìåð✱ êîòîðûé ïîêàçûâàåò íåîáõîäèìîñòü îãðàíè÷åíèÿ âèäà
C (m t)✱
ãäå ♠ ✖ îäíà èç ïåðåìåííûõ òèïà✱ êîòîðàÿ ïîäâåðãàåòñÿ îáîáùåíèþ✱ òî åñòü ãäå êëàññ
C
ïðèìåíÿåòñÿ ê âûðàæåíèþ ñ òèïàìè✱ êîòîðîå íå ÿâëÿåòñÿ ïåðåìåííîé òèïà èëè
êîíñòðóêòîðîì òèïà✳ Ðàññìîòðèì
❢ ✿✿ ✭▼♦♥❛❞ ♠✱ ❊q ✭♠ ❛✮✮ ❂❃ ❛ ✲❃ ♠ ❛ ✲❃ ❇♦♦❧ ❢ ① ② ❂ r❡t✉r♥ ① ❂❂ ②
✹✳✺✳
✽✺
ÑÒ➚Ò➮×➴Ñ✃➚ß Ñ➴❒➚❮Ò➮✃➚ Ñ➶ß➬Û➶➚❮➮➱ ➮❒➴❮
r❡t✉r♥ ÿâëÿåòñÿ ▼♦♥❛❞ ♠ ❂❃ ❛ ✲❃ ♠ ❛✱ òèïîì✭❂❂✮ ÿâëÿåòñÿ ❊q ❛ ❂❃ ❛ ✲❃ ❛ ✲❃ ❇♦♦❧✳ Ñëåäîâàòåëüíî✱ òèïîì ❢ äîëæåí ÿâëÿòüñÿ ✭▼♦♥❛❞ ♠✱ ❊q ✭♠ ❛✮✮ ❂❃ ❛ ✲❃ ♠ ❛ ✲❃ ❇♦♦❧✱ è êîíòåêñò íå ìîæåò áûòü áîëåå óïðîùåí✳
Òèïîì
❰áúÿâëåíèå
ýêçåìïëÿðà✱
ïîëó÷åííîå
èç
èíñòðóêöèè
❞❡r✐✈✐♥❣
ðàçäåë ✹✳✸✳✸✮ äîëæíî✱ êàê ëþáîå îáúÿâëåíèå ýêçåìïëÿðà✱ èìåòü åñòü âñå îãðàíè÷åíèÿ äîëæíû èìåòü âèä
C a✱
ãäå
a
òèïà
ïðîñòîé
äàííûõ
✭ñì✳
êîíòåêñò✱ òî
✖ ïåðåìåííàÿ òèïà✳ ❮àïðèìåð✱ â
òèïå
❞❛t❛ ❆♣♣❧② ❛ ❜ ❂ ❆♣♣ ✭❛ ❜✮ ❞❡r✐✈✐♥❣ ❙❤♦✇ âûâåäåííûé ýêçåìïëÿð êëàññà ❙❤♦✇ ñîçäàñò êîíòåêñò
❙❤♦✇ ✭❛ ❜✮✱
êîòîðûé íåëüçÿ
ïðèâåñòè è êîòîðûé íå ÿâëÿåòñÿ ïðîñòûì êîíòåêñòîì✱ ïîýòîìó âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳
✹✳✺✳✹
❒îíîìîðôèçì
➮íîãäà
íåâîçìîæíî
âûïîëíèòü
îáîáùåíèå
íàä
âñåìè
ïåðåìåííûìè
òèïà✱
èñïîëüçóåìûìè â òèïå îïðåäåëåíèÿ✳ ❮àïðèìåð✱ ðàññìîòðèì îáúÿâëåíèå
❢ ① ❂ ❧❡t ❣ ② ③ ❂ ✭❬①✱②❪✱ ③✮ ✐♥ ✳✳✳ ❣ ÿâëÿåòñÿ a → b → ✭❬a ❪, b ✮✳ ∀ b. a → b → ✭❬a ❪, b ✮❀ òîëüêî b ìîæíî ïîñòàâèòü ïîä êâàíòîð âñåîáùíîñòè✱ ïîòîìó ÷òî a âñòðå÷àåòñÿ â îêðóæåíèè òèïà✳ ❒û ãîâîðèì✱ ÷òî òèï ❣ ÿâëÿåòñÿ ìîíîìîðôíûì ïî ïåðåìåííîé òèïà a ✳ ➶ îêðóæåíèè✱ ãäå
①
❮à øàãå îáîáùåíèÿ
èìååò òèï
❣
a✱
òèïîì îïðåäåëåíèÿ
áóäåò ïðèïèñàí òèï
Ñëåäñòâèåì òàêîãî ìîíîìîðôèçìà ÿâëÿåòñÿ òî✱ ÷òî ïåðâûé àðãóìåíò âñåõ ïðèìåíåíèé
❣
äîëæåí áûòü îäíîãî òèïà✳ ❮àïðèìåð✱ ýòî âûïîëíÿåòñÿ✱ åñëè ✏ ✳✳✳✑ áóäåò èìåòü òèï
✭❣ ❚r✉❡✱ ❣ ❋❛❧s❡✮ ✭ýòî✱ êñòàòè✱ ïðèâåëî áû ê òîìó✱ ÷òî
①
áóäåò èìåòü òèï
❇♦♦❧✮✱
íî ýòî íå âûïîëíèòñÿ✱
åñëè âûðàæåíèå áóäåò èìåòü òèï
✭❣ ❚r✉❡✱ ❣ ✬❝✬✮ ➶îîáùå✱ ãîâîðÿò✱ ÷òî òèï åñëè
a
∀ u. cx ⇒ t ÿâëÿåòñÿ ìîíîìîðôíûì ∀ u. cx ⇒ t ✳
ïî ïåðåìåííîé òèïà
a✱
ÿâëÿåòñÿ ñâîáîäíîé â
Ñòîèò îòìåòèòü✱ ÷òî ïðåäîñòàâëÿåìûå ❍❛s❦❡❧❧ ÿâíûå ñèãíàòóðû òèïîâ íå ÿâëÿþòñÿ äîñòàòî÷íî ìîùíûì ñðåäñòâîì äëÿ òîãî✱ ÷òîáû âûðàçèòü òèïû✱ êîòîðûå âêëþ÷àþò ìîíîìîðôíûå ïåðåìåííûå òèïîâ✳ ❮àïðèìåð✱ ìû íå ìîæåì çàïèñàòü
❢ ① ❂ ❧❡t ❣ ✿✿ ❛ ✲❃ ❜ ✲❃ ✭❬❛❪✱❜✮ ❣ ② ③ ❂ ✭❬①✱②❪✱ ③✮ ✐♥ ✳✳✳
✽✻
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
ïîòîìó ÷òî ýòî óòâåðæäàëî áû✱ ÷òî ❣ ÿâëÿåòñÿ ïîëèìîðôíûì ïî ❛ è ❜ ✭ðàçäåë ✹✳✹✳✶✮✳ ➶ ýòîé ïðîãðàììå äëÿ ❣ ìîæíî çàäàòü ñèãíàòóðó òèïà✱ òîëüêî åñëè åå ïåðâûé ïàðàìåòð îãðàíè÷åí òèïîì✱ íå ñîäåðæàùèì ïåðåìåííûå òèïà✱ íàïðèìåð ❣ ✿✿ ■♥t ✲❃ ❜ ✲❃ ✭❬■♥t❪✱❜✮
Ýòà ñèãíàòóðà òàêæå ïðèâåëà áû ê òîìó✱ ÷òî ① äîëæåí èìåòü òèï ■♥t✳ ✹✳✺✳✺
❰ãðàíè÷åíèå ìîíîìîðôèçìà
Ïîìèìî ñòàíäàðòíîãî îãðàíè÷åíèÿ Õèíäëè✲❒èëíåðà ✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮✱ îïèñàííîãî âûøå✱ ❍❛s❦❡❧❧ óñòàíàâëèâàåò íåêîòîðûå äîïîëíèòåëüíûå îãðàíè÷åíèÿ íà øàãå îáîáùåíèÿ✱ êîòîðûå ïîçâîëÿþò â îòäåëüíûõ ñëó÷àÿõ äàëüíåéøåå ïðèâåäåíèå ïîëèìîðôèçìà✳ ❰ãðàíè÷åíèå ìîíîìîðôèçìà çàâèñèò îò ñèíòàêñèñà ñâÿçûâàíèÿ ïåðåìåííîé✳ ➶ñïîìíèì✱ ÷òî ïåðåìåííàÿ ñâÿçûâàåòñÿ ïîñðåäñòâîì ñâÿçûâàíèÿ èìåí â ôóíêöèÿõ èëè ñâÿçûâàíèÿ èìåí â îáðàçöàõ✱ è ÷òî ñâÿçûâàíèå èìåí â ïðîñòîì îáðàçöå ✖ ýòî ñâÿçûâàíèå èìåí â îáðàçöå✱ â êîòîðîì îáðàçåö ñîñòîèò òîëüêî èç îäíîé ïåðåìåííîé ✭ðàçäåë ✹✳✹✳✸✮✳ Ñëåäóþùèå äâà ïðàâèëà îïðåäåëÿþò îãðàíè÷åíèå ìîíîìîðôèçìà✿ ❰ãðàíè÷åíèå ìîíîìîðôèçìà
❒û ãîâîðèì✱ ÷òî äàííàÿ ãðóïïà îáúÿâëåíèé ÿâëÿåòñÿ íåîãðàíè÷åííîé✱ åñëè è òîëüêî åñëè✿ ✭❛✮✿ êàæäàÿ ïåðåìåííàÿ â ãðóïïå ñâÿçàíà ïîñðåäñòâîì ñâÿçûâàíèÿ èìåí â ôóíêöèÿõ èëè ïîñðåäñòâîì ñâÿçûâàíèÿ èìåí â ïðîñòûõ îáðàçöàõ ✭ðàçäåë ✹✳✹✳✸✳✷✮✱ è ✭❜✮✿ äëÿ êàæäîé ïåðåìåííîé â ãðóïïå✱ êîòîðàÿ ñâÿçàíà ïîñðåäñòâîì ñâÿçûâàíèÿ èìåí â ïðîñòûõ îáðàçöàõ✱ ÿâíî óêàçàíà ñèãíàòóðà òèïà✳ ❰áû÷íîå îãðàíè÷åíèå ïîëèìîðôèçìà Õèíäëè✲❒èëíåðà ✭❍✐♥❞❧❡②✲▼✐❧♥❡r✮ çàêëþ÷àåòñÿ â òîì✱ ÷òî òîëüêî ïåðåìåííûå òèïà✱ êîòîðûå ÿâëÿþòñÿ ñâîáîäíûìè â îêðóæåíèè✱ ìîãóò áûòü ïîäâåðãíóòû îáîáùåíèþ✳ ✃ðîìå òîãî✱
Ïðàâèëî ✶✳
ïåðåìåííûå îãðàíè÷åííîãî òèïà èç ãðóïïû îãðàíè÷åííûõ îáúÿâëåíèé íåëüçÿ ïîäâåðãàòü îáîáùåíèþ
íà øàãå îáîáùåíèÿ äëÿ ýòîé ãðóïïû✳ ✭➶ñïîìíèì✱ ÷òî ïåðåìåííàÿ òèïà îãðàíè÷åíà✱ åñëè îíà äîëæíà ïðèíàäëåæàòü íåêîòîðîìó êëàññó òèïà✱ ñì✳ ðàçäåë ✹✳✺✳✷✳✮ Ïðàâèëî ✷✳ ❐þáûå ïåðåìåííûå ìîíîìîðôíîãî òèïà✱ êîòîðûå îñòàþòñÿ ïîñëå çàâåðøåíèÿ âûâîäà òèïà äëÿ âñåãî ìîäóëÿ✱ ñ÷èòàþòñÿ íåîäíîçíà÷íûìè✱ è ðàçðåøåíèå íåîäíîçíà÷íîñòè ñ îïðåäåëåíèåì êîíêðåòíûõ òèïîâ âûïîëíÿåòñÿ ñ èñïîëüçîâàíèåì ïðàâèë ïî óìîë÷àíèþ ✭ðàçäåë ✹✳✸✳✹✮✳
✹✳✺✳
ÑÒ➚Ò➮×➴Ñ✃➚ß Ñ➴❒➚❮Ò➮✃➚ Ñ➶ß➬Û➶➚❮➮➱ ➮❒➴❮
✽✼
❰áîñíîâàíèå Ïðàâèëî ✶ òðåáóåòñÿ ïî äâóì ïðè÷èíàì✱ îáå èç íèõ äîâîëüíî òîíêèå✳ •
❮àïðèìåð✱ ❣❡♥❡r✐❝▲❡♥❣t❤ ÿâëÿåòñÿ ñòàíäàðòíîé ôóíêöèåé ✭â áèáëèîòåêå ▲✐st✮ ñ òèïîì Ïðàâèëî
✶
ïðåäîòâðàùàåò
íåïðåäâèäåííûå
ïîâòîðû
âû÷èñëåíèé✳
❣❡♥❡r✐❝▲❡♥❣t❤ ✿✿ ◆✉♠ ❛ ❂❃ ❬❜❪ ✲❃ ❛
Òåïåðü ðàññìîòðèì ñëåäóþùåå âûðàæåíèå✿
❧❡t ④ ❧❡♥ ❂ ❣❡♥❡r✐❝▲❡♥❣t❤ ①s ⑥ ✐♥ ✭❧❡♥✱ ❧❡♥✮
❰íî âûãëÿäèò òàê✱ áóäòî ❧❡♥ äîëæíî áûòü âû÷èñëåíî òîëüêî îäèí ðàç✱ íî áåç Ïðàâèëà ✶ îíî ìîãëî áûòü âû÷èñëåíî äâàæäû✱ ïî îäíîìó ðàçó ïðè êàæäîé èç äâóõ ðàçëè÷íûõ ïåðåãðóçîê✳ ➴ñëè ïðîãðàììèñò äåéñòâèòåëüíî õî÷åò✱ ÷òîáû âû÷èñëåíèå áûëî ïîâòîðåíî✱ ìîæíî ÿâíî óêàçàòü ñèãíàòóðó òèïà✿ ❧❡t ④ ❧❡♥ ✿✿ ◆✉♠ ❛ ❂❃ ❛❀ ❧❡♥ ❂ ❣❡♥❡r✐❝▲❡♥❣t❤ ①s ⑥ ✐♥ ✭❧❡♥✱ ❧❡♥✮
•
Ïðàâèëî
✶
îáúÿâëåíèé
ïðåäîòâðàùàåò
íåîäíàçíà÷íîñòü✳
❮àïðèìåð✱ ðàññìîòðèì ãðóïïó
❬✭♥✱s✮❪ ❂ r❡❛❞s t
➶ñïîìíèì✱ ÷òî r❡❛❞s ✖ ñòàíäàðòíàÿ ôóíêöèÿ✱ ÷åé òèï çàäàåòñÿ ñèãíàòóðîé r❡❛❞s ✿✿ ✭❘❡❛❞ ❛✮ ❂❃ ❙tr✐♥❣ ✲❃ ❬✭❛✱❙tr✐♥❣✮❪
➪åç Ïðàâèëà ✶ ♥ áûë áû ïðèñâîåí òèï ∀ a. ❘❡❛❞ a ⇒ a ✱ à s ✖ òèï ∀ a. ❘❡❛❞ a ⇒ ❙tr✐♥❣✳ Ïîñëåäíèé òèï ÿâëÿåòñÿ íåïðàâèëüíûì✱ ïîòîìó ÷òî ïî ñóòè îí íåîäíîçíà÷åí✳ ❮åâîçìîæíî îïðåäåëèòü✱ íè â êàêîé ïåðåãðóçêå èñïîëüçîâàòü s✱ íè ìîæíî ëè ýòî ðåøèòü ïóòåì äîáàâëåíèÿ ñèãíàòóðû òèïà äëÿ s✳ Ïîýòîìó✱ êîãäà èñïîëüçóåòñÿ ñâÿçûâàíèå èìåí â îáðàçöå✱ îáðàçöîì ✭ðàçäåë ✹✳✹✳✸✳✷✮✱ âûâåäåííûå òèïû âñåãäà ÿâëÿþòñÿ ìîíîìîðôíûìè ïî ñâîèì ïåðåìåííûì îãðàíè÷åííîãî òèïà✱ íåçàâèñèìî îò òîãî✱ áûëà ëè óêàçàíà ñèãíàòóðà òèïà✳ ➶ ýòîì ñëó÷àå ♥ è s ÿâëÿþòñÿ ìîíîìîðôíûìè ïî a ✳ Òî æå îãðàíè÷åíèå ïðèìåíèìî ê ñâÿçûâàííûì ñ îáðàçöàìè ôóíêöèÿì✳ ❮àïðèìåð✱ â íå ÿâëÿþùèìñÿ ïðîñòûì
✭❢✱❣✮ ❂ ✭✭✰✮✱✭✲✮✮
❢ ❢
è ❣ ìîíîìîðôíû íåçàâèñèìî îò òîãî✱ êàêàÿ ñèãíàòóðà òèïà áóäåò óêàçàíà äëÿ èëè ❣✳
Ïðàâèëî ✷ òðåáóåòñÿ ïîòîìó✱ ÷òî íåò íèêàêîãî èíîãî ñïîñîáà ïðåäïèñàòü ìîíîìîðôíîå èñïîëüçîâàíèå ñâÿçûâàíèÿ✱ êðîìå êàê âûïîëíÿÿ âûâîä òèïîâ íà ìîäóëÿõ âíå òåêóùåãî ìîäóëÿ✳ Ïðàâèëî ✷ óñòàíàâëèâàåò✱ ÷òî òî÷íûå òèïû âñåõ ïåðåìåííûõ✱ ñâÿçàííûõ â ìîäóëå✱ äîëæíû áûòü îïðåäåëåíû ñàìèì ìîäóëåì✱ à íå êàêèìè✲ëèáî ìîäóëÿìè✱ êîòîðûå èìïîðòèðóþò åãî✳ ýêñïîðòèðóåìîãî
✽✽
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
♠♦❞✉❧❡ ▼✶✭❧❡♥✶✮ ✇❤❡r❡ ❞❡❢❛✉❧t✭ ■♥t✱ ❉♦✉❜❧❡ ✮ ❧❡♥✶ ❂ ❣❡♥❡r✐❝▲❡♥❣t❤ ✧➬äðàâñòâóéòå✧ ♠♦❞✉❧❡ ▼✷ ✇❤❡r❡ ✐♠♣♦rt ▼✶✭❧❡♥✶✮ ❧❡♥✷ ❂ ✭✷✯❧❡♥✶✮ ✿✿ ❘❛t✐♦♥❛❧ ✃îãäà âûâîä òèïà â ìîäóëå
◆✉♠ ❛ ❂❃ ❛
▼✶
çàêîí÷èòñÿ✱
❧❡♥✶
áóäåò èìåòü ìîíîìîðôíûé òèï
✭ïî Ïðàâèëó ✶✮✳ Òåïåðü Ïðàâèëî ✷ óñàòàíàâëèâàåò✱ ÷òî ïåðåìåííàÿ
ìîíîìîðôíîãî òèïà
❛
ÿâëÿåòñÿ íåîäíîçíà÷íîé✱ è íåîäíîçíà÷íîñòü äîëæíà áûòü
❧❡♥✶ ■♥t✱ è åãî èñïîëüçîâàíèå â ❧❡♥✷ ÿâëÿåòñÿ íåïðàâèëüíûì èç✲çà òèïà✳ ✭➴ñëè
ðàçðåøåíà ïóòåì èñïîëüçîâàíèÿ ïðàâèë ïî óìîë÷àíèþ ðàçäåëà ✹✳✸✳✹✳ Ïîýòîìó ïîëó÷èò òèï
âûøåóïîìÿíóòûé êîä â äåéñòâèòåëüíîñòè èìåííî òî✱ ÷òî òðåáóåòñÿ✱ òî ñèãíàòóðà òèïà äëÿ
❧❡♥✶
ðåøèëà áû ïðîáëåìó✳✮
Ýòà ïðîáëåìà íå âîçíèêàåò äëÿ âëîæåííûõ ñâÿçûâàíèé✱ ïîòîìó ÷òî èõ îáëàñòü âèäèìîñòè âèäíà êîìïèëÿòîðó✳
Ñëåäñòâèÿ
Ïðàâèëî
ìîíîìîðôèçìà
èìååò
ìíîæåñòâî
ïîñëåäñòâèé
äëÿ
ïðîãðàììèñòà✳ ➶ñå✱ ÷òî îïðåäåëåíî ñ èñïîëüçîâàíèåì ôóíêöèîíàëüíîãî ñèíòàêñèñà✱ îáû÷íî îáîáùàåòñÿ✱ ïîñêîëüêó îæèäàåòñÿ ôóíêöèÿ✳ Òàêèì îáðàçîì✱ â
❢ ① ② ❂ ①✰② ôóíêöèÿ
❢
ìîæåò èñïîëüçîâàòüñÿ ïðè ëþáîé ïåðåãðóçêå â êëàññå
◆✉♠✳
➬äåñü íåò
íèêàêîé îïàñíîñòè ïåðåâû÷èñëåíèÿ✳ Òåì íå ìåíåå✱ òà æå ôóíêöèÿ✱ îïðåäåëåííàÿ ñ èñïîëüçîâàíèåì ñèíòàêñèñà îáðàçöà
❢ ❂ ❭① ✲❃ ❭② ✲❃ ①✰② òðåáóåò óêàçàíèÿ ñèãíàòóðû òèïà✱ åñëè
❢ äîëæíà áûòü ïîëíîñòüþ ïåðåãðóæåíà✳ ❒íîãèå
ôóíêöèè íàèáîëåå åñòåñòâåííî îïðåäåëÿþòñÿ ïîñðåäñòâîì èñïîëüçîâàíèÿ ñâÿçûâàíèÿ èìåí â ïðîñòûõ îáðàçöàõ❀ ïîëüçîâàòåëü äîëæåí áûòü âíèìàòåëåí✱ äîáàâëÿÿ ê íèì ñèãíàòóðû òèïîâ✱ ÷òîáû ñîõðàíèòü ïîëíóþ ïåðåãðóçêó✳ Ñòàíäàðòíîå íà÷àëî ✭Pr❡❧✉❞❡✮ ñîäåðæèò ìíîãî òàêèõ ïðèìåðîâ✿
s✉♠ ✿✿ ✭◆✉♠ ❛✮ ❂❃ ❬❛❪ ✲❃ ❛ s✉♠ ❂ ❢♦❧❞❧ ✭✰✮ ✵
Ïðàâèëî ✶ ïðèìåíÿåòñÿ ê îïðåäåëåíèÿì âåðõíåãî óðîâíÿ è ê âëîæåííûì îïðåäåëåíèÿì✳ Ðàññìîòðèì ïðèìåð✿
♠♦❞✉❧❡ ▼ ✇❤❡r❡ ❧❡♥✶ ❂ ❣❡♥❡r✐❝▲❡♥❣t❤ ✧➬äðàâñòâóéòå✧ ❧❡♥✷ ❂ ✭✷✯❧❡♥✶✮ ✿✿ ❘❛t✐♦♥❛❧
✹✳✻✳
✽✾
➶Û➶❰➘ ➶➮➘➚
❧❡♥✶ èìååò ìîíîìîðôè÷åñêèé òèï ✭◆✉♠ ❛ ❂❃ ❛✮❀ ïðè âûïîëíåíèè âûâîäà òèïà äëÿ ❧❡♥✷ îïðåäåëÿåì✱ ÷òî ïåðåìåííàÿ òèïà ❛ èìååò òèï ❘❛t✐♦♥❛❧✳ ➬äåñü ñ ïîìîùüþ âûâîäà òèïà óñòàíàâëèâàåì✱ ÷òî
✹✳✻
➶ûâîä âèäà
➶ ýòîì ðàçäåëå îïèñûâàþòñÿ ïðàâèëà✱ êîòîðûå èñïîëüçóþòñÿ äëÿ òîãî✱ ÷òîáû âûïîëíèòü
âûâîä âèäà✱ ò✳å✳ âû÷èñëèòü ïîäõîäÿùèé âèä äëÿ êàæäîãî êîíñòðóêòîðà òèïà
è êëàññà✱ ôèãóðèðóþùåãî â äàííîé ïðîãðàììå✳ Ïåðâûé øàã â ïðîöåññå âûâîäà âèäà çàêëþ÷àåòñÿ â ðàçäåëåíèè íàáîðà îïðåäåëåíèé òèïîâ äàííûõ✱ ñèíîíèìîâ è êëàññîâ íà ãðóïïû çàâèñèìîñòåé✳ Ýòîãî ìîæíî äîñòè÷ü ïî÷òè òàêèì æå ñïîñîáîì✱ êàê àíàëèç çàâèñèìîñòåé äëÿ îáúÿâëåíèé çíà÷åíèé✱ êîòîðûé áûë îïèñàí â ðàçäåëå ✹✳✺✳ ❮àïðèìåð✱ ñëåäóþùèé ôðàãìåíò ïðîãðàììû âêëþ÷àåò îïðåäåëåíèå êîíñòðóêòîðà òèïà äàííûõ
❉✱
ñèíîíèìà
❙
è êëàññà
❈✱
âñå îíè áóäóò
âêëþ÷åíû â îäíó ãðóïïó çàâèñèìîñòåé✿
❞❛t❛ ❈ ❛ ❂❃ ❉ ❛ ❂ ❋♦♦ ✭❙ ❛✮ t②♣❡ ❙ ❛ ❂ ❬❉ ❛❪ ❝❧❛ss ❈ ❛ ✇❤❡r❡ ❜❛r ✿✿ ❛ ✲❃ ❉ ❛ ✲❃ ❇♦♦❧ ➶èäû✱
ê
êîòîðûì
îòíîñÿòñÿ
ïåðåìåííûå✱
êîíñòðóêòîðû
è
êëàññû
â
ïðåäåëàõ
êàæäîé ãðóïïû✱ îïðåäåëÿþòñÿ ñ èñïîëüçîâàíèåì ñòàíäàðòíûõ ìåòîäîâ âûâîäà òèïà è ñîõðàíÿþùåé âèä óíèôèêàöèè ✭îáúåäèíåíèÿ✮ ❬✼❪✳ ❮àïðèìåð✱ â ïðèâåäåííîì âûøå îïðåäåëåíèè ïàðàìåòð
❛
✭✲❃✮ â òèïå ❜❛r ❙ äîëæíû îòíîñèòüñÿ îòíîñèòüñÿ ê âèäó ∗✳
ÿâëÿåòñÿ àðãóìåíòîì êîíñòðóêòîðà ôóíêöèè
è ïîýòîìó äîëæåí îòíîñèòüñÿ ê âèäó ∗✳ ➮ç ýòîãî ñëåäóåò✱ ÷òî è ❉✱ è ê âèäó
∗→∗
➶îçìîæíî✱
è ÷òî êàæäûé ýêçåìïëÿð êëàññà
÷òî
íåêîòîðûå
÷àñòè
❈
äîëæåí
âûâåäåííîãî
âèäà
íå
ìîãóò
áûòü
ïîëíîñòüþ
îïðåäåëåíû èñõîäÿ èç ñîîòâåòñòâóþùèõ îïðåäåëåíèé❀ â òàêèõ ñëó÷àÿõ ïðèíèìàåòñÿ çíà÷åíèå ïî óìîë÷àíèþ âèäà ïàðàìåòðà
❛
∗✳
❮àïðèìåð✱ ìû ìîãëè ïðèíÿòü ïðîèçâîëüíûé âèä
κ
äëÿ
â êàæäîì èç ñëåäóþùèõ ïðèìåðîâ✿
❞❛t❛ ❆♣♣ ❢ ❛ ❂ ❆ ✭❢ ❛✮ ❞❛t❛ ❚r❡❡ ❛ ❂ ▲❡❛❢ ⑤ ❋♦r❦ ✭❚r❡❡ ❛✮ ✭❚r❡❡ ❛✮ Òîãäà ìû ïîëó÷èëè áû âèäû
❚r❡❡
äëÿ ëþáîãî âèäà
κ✳
(κ → ∗) → κ → ∗
è
κ → ∗
ñîîòâåòñòâåííî äëÿ
❆♣♣
è
Ýòî òàêæå ïîòðåáîâàëî áû✱ ÷òîáû ðàñøèðåíèå äîïóñêàëî
κ = ∗✱ ñîîòâåòñòâåííî (∗ →
ïîëèìîðôíûå âèäû✳ ➶ìåñòî ýòîãî✱ èñïîëüçóÿ ïî óìîë÷àíèþ ñâÿçûâàíèå äåéñòâèòåëüíûìè âèäàìè äëÿ ýòèõ äâóõ êîíñòðóêòîðîâ ÿâëÿþòñÿ
∗) → ∗ → ∗
è
∗ → ∗✳
➬íà÷åíèÿ ïî óìîë÷àíèþ ïðèìåíÿþòñÿ ê êàæäîé ãðóïïå çàâèñèìîñòåé✱ íåçàâèñèìî îò òîãî✱ êàê êîíêðåòíûå êîíñòàíòû êîíñòðóêòîðà òèïà èëè êëàññîâ èñïîëüçóþòñÿ â áîëåå ïîçäíèõ ãðóïïàõ çàâèñèìîñòåé èëè ãäå✲ëèáî â äðóãîì ìåñòå â ïðîãðàììå✳
✾✵
➹❐➚➶➚ ✹✳
❰➪Úß➶❐➴❮➮ß ➮ Ñ➶ß➬Û➶➚❮➮ß ➮❒➴❮
❮àïðèìåð✱ äîáàâëåíèå ñëåäóþùåãî îïðåäåëåíèÿ ê ïðèâåäåííûì âûøå íå âëèÿåò íà âèä✱ âûâåäåííûé äëÿ
❚r❡❡
✭ïóòåì èçìåíåíèÿ åãî íà
(∗ → ∗) → ∗✱
íàïðèìåð✮✱ è âìåñòî ýòîãî
ïðèâîäèò ê ñòàòè÷åñêîé îøèáêå✱ ïîòîìó ÷òî âèä✱ êîòîðîìó ïðèíàäëåæèò ñîîòâåòñòâóåò âèäó
∗✱
êîòîðûé îæèäàåòñÿ äëÿ àðãóìåíòà
t②♣❡ ❋✉♥♥②❚r❡❡ ❂ ❚r❡❡ ❬❪
❚r❡❡✿
❬❪✱ ∗ → ∗✱
íå
✲✲ íåïðàâèëüíî
Ýòî âàæíî✱ ïîòîìó ÷òî ãàðàíòèðóåò✱ ÷òî êàæäûé êîíñòðóêòîð è êëàññ èñïîëüçóþòñÿ â ñîîòâåòñòâèè ñ îäíèì è òåì æå âèäîì âñÿêèé ðàç✱ êîãäà îíè íàõîäÿòñÿ â îáëàñòè âèäèìîñòè✳
➹ëàâà ✺
❒îäóëè ❒îäóëü îïðåäåëÿåò ñîâîêóïíîñòü çíà÷åíèé✱ òèïîâ äàííûõ✱ ñèíîíèìîâ òèïîâ✱ êëàññîâ è ò✳ä✳ ✭ñì✳ ãëàâó ✹✮ â îêðóæåíèè✱ ñîçäàííîì íàáîðîì ñïèñêîâ èìïîðòà ✭ââåäåííûõ â îáëàñòü âèäèìîñòè ðåñóðñîâ äðóãèõ ìîäóëåé✮✳ ❰í ýêñïîðòèðóåò íåêîòîðûå èç ýòèõ ðåñóðñîâ✱ äåëàÿ èõ äîñòóïíûìè äðóãèì ìîäóëÿì✳ ❒û èñïîëüçóåì òåðìèí ñóùíîñòü äëÿ ññûëêè íà çíà÷åíèå✱ òèï èëè êëàññ✱ îïðåäåëåííûé✱ èìïîðòèðîâàííûé èëè✱ âîçìîæíî✱ ýêñïîðòèðîâàííûé èç ìîäóëÿ✳ Ïðîãðàììà íà ❍❛s❦❡❧❧ ✖ ýòî ñîâîêóïíîñòü ìîäóëåé✱ îäèí èç êîòîðûõ óñëîâíî äîëæåí íàçûâàòüñÿ ▼❛✐♥ è äîëæåí ýêñïîðòèðîâàòü çíà÷åíèå ♠❛✐♥✳ ➬íà÷åíèåì ïðîãðàììû ÿâëÿåòñÿ çíà÷åíèå èäåíòèôèêàòîðà ♠❛✐♥ â ìîäóëå ▼❛✐♥✱ êîòîðîå äîëæíî èìåòü òèï ■❖ τ äëÿ íåêîòîðîãî òèïà τ ✭ñì✳ ãëàâó ✼✮✳ ✃îãäà âûïîëíÿåòñÿ ïðîãðàììà✱ âû÷èñëÿåòñÿ çíà÷åíèå ♠❛✐♥ è ðåçóëüòàò ✭òèïà τ ✮ îòáðàñûâàåòñÿ✳ ❒îäóëè ìîãóò ññûëàòüñÿ íà äðóãèå ìîäóëè ïîñðåäñòâîì ÿâíûõ îáúÿâëåíèé ✐♠♣♦rt✱ êàæäîå èç êîòîðûõ çàäàåò èìÿ èìïîðòèðóåìîãî ìîäóëÿ è åãî ñóùíîñòè✱ êîòîðûå áóäóò èìïîðòèðîâàíû✳ ❒îäóëè ìîãóò áûòü âçàèìíî ðåêóðñèâíû✳ ❒îäóëè èñïîëüçóþòñÿ äëÿ óïðàâëåíèÿ ïðîñòðàíñòâîì èìåí è íå ÿâëÿþòñÿ ãëàâíûìè çíà÷åíèÿìè êëàññà✳ ❒íîãîìîäóëüíàÿ ïðîãðàììà íà ❍❛s❦❡❧❧ ìîæåò áûòü ïðåîáðàçîâàíà â ïðîãðàììó ñ îäíèì ìîäóëåì✱ åñëè äàòü êàæäîé ñóùíîñòè óíèêàëüíîå èìÿ✱ ñîîòâåòñòâåííî çàìåíèòü âñå âõîæäåíèÿ✱ ññûëàþùèåñÿ íà ýòè èìåíà✱ è çàòåì îáúåäèíèòü âñå òåëà ìîäóëåé✳ ✶ ❮àïðèìåð✱ ðàññìîòðèì ïðîãðàììó ñ òðåìÿ ìîäóëÿìè✿
✶ ➴ñòü äâà íåçíà÷èòåëüíûõ èñêëþ÷åíèÿ èç ýòîãî óòâåðæäåíèÿ✳ Ïåðâîå ✖ îáúÿâëåíèÿ ❞❡❢❛✉❧t âèäíû â îáëàñòè âèäèìîñòè îäíîãî ìîäóëÿ ✭ðàçäåë ✹✳✸✳✹✮✳ ➶òîðîå ✖ Ïðàâèëî ✷ îãðàíè÷åíèÿ ìîíîìîðôèçìà ✭ðàçäåë ✹✳✺✳✺✮ âëèÿåò íà ãðàíèöû ìîäóëåé✳
✾✶
✾✷
➹❐➚➶➚ ✺✳
❒❰➘Ó❐➮
♠♦❞✉❧❡ ▼❛✐♥ ✇❤❡r❡ ✐♠♣♦rt ❆ ✐♠♣♦rt ❇ ♠❛✐♥ ❂ ❆✳❢ ❃❃ ❇✳❢ ♠♦❞✉❧❡ ❆ ✇❤❡r❡ ❢ ❂ ✳✳✳ ♠♦❞✉❧❡ ❇ ✇❤❡r❡ ❢ ❂ ✳✳✳ ❰íà ýêâèâàëåíòíà ñëåäóþùåé ïðîãðàììå ñ îäíèì ìîäóëåì✿
♠♦❞✉❧❡ ▼❛✐♥ ✇❤❡r❡ ♠❛✐♥ ❂ ❛❢ ❃❃ ❜❢ ❛❢ ❂ ✳✳✳ ❜❢ ❂ ✳✳✳ Ïîñêîëüêó ìîäóëè ìîãóò áûòü âçàèìíî ðåêóðñèâíûìè✱ ñ ïîìîùüþ ìîäóëåé ìîæíî ñâîáîäíî ðàçäåëèòü ïðîãðàììó íà ÷àñòè✱ íå îáðàùàÿ âíèìàíèÿ íà çàâèñèìîñòè✳ Ïðîñòðàíñòâî èìåí äëÿ ñàìèõ ìîäóëåé ÿâëÿåòñÿ ïëîñêèì✱ îíî ñâÿçûâàåò êàæäûé ìîäóëü ñ óíèêàëüíûì èìåíåì ìîäóëÿ ✭êîòîðûå ÿâëÿþòñÿ èäåíòèôèêàòîðàìè ❍❛s❦❡❧❧✱ íà÷èíàþùèìèñÿ ñ çàãëàâíîé áóêâû✱ ò✳å✳ ìîäóëü
modid ✮✳
➴ñòü îäèí✱ îòëè÷íûé îò îñòàëüíûõ✱
Pr❡❧✉❞❡✱ êîòîðûé èìïîðòèðóåòñÿ âî âñå ìîäóëè ïî óìîë÷àíèþ ✭ñì✳ ðàçäåë ✺✳✻✮✱
ïëþñ íàáîð ìîäóëåé ñòàíäàðòíîé áèáëèîòåêè✱ êîòîðûå ìîæíî èìïîðòèðîâàòü ïî òðåáîâàíèþ ✭ñì✳ ÷àñòü ■■✮✳
✺✳✶
Ñòðóêòóðà ìîäóëÿ
❒îäóëü îïðåäåëÿåò âçàèìíî ðåêóðñèâíóþ îáëàñòü âèäèìîñòè✱ ñîäåðæàùóþ îáúÿâëåíèÿ äëÿ ñâÿçûâàíèÿ çíà÷åíèé✱ òèïîâ äàííûõ✱ ñèíîíèìîâ òèïîâ✱ êëàññîâ è ò✳ä✳ ✭ñì✳ ãëàâó ✹✮✳
body
→ | → | |
♠♦❞✉❧❡ modid [exports] ✇❤❡r❡ body body ④ impdecls ❀ topdecls ⑥ ④ impdecls ⑥ ④ topdecls ⑥
modid impdecls topdecls
→ → →
conid impdecl1 ❀ . . . ❀ impdecln topdecl1 ❀ . . . ❀ topdecln
module
(n ≥ 1 ) (n ≥ 1 )
✺✳✷✳
✾✸
ÑÏ➮Ñ✃➮ Ý✃ÑÏ❰ÐÒ➚
Ïåðåâîä✿
→ ♠♦❞✉❧❡ èäåíòèôèêàòîð✲ìîäóëÿ [ñïèñîê✲ýêñïîðòà] ✇❤❡r❡ òåëî | òåëî òåëî → ④ ñïèñîê✲îáúÿâëåíèé✲èìïîðòà ❀ ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ ⑥ | ④ ñïèñîê✲îáúÿâëåíèé✲èìïîðòà ⑥ | ④ ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ ⑥ ìîäóëü
èäåíòèôèêàòîð✲ìîäóëÿ
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲èìïîðòà îáúÿâëåíèå✲èìïîðòà1
îáúÿâëåíèå✲èìïîðòàn
(n ≥ 1 ) → ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ1
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿn
(n ≥ 1 )
❒îäóëü íà÷èíàåòñÿ ñ çàãîëîâêà ✖ êëþ÷åâîãî ñëîâà ♠♦❞✉❧❡✱ èìåíè ìîäóëÿ è ñïèñêà ýêñïîðòèðóåìûõ ñóùíîñòåé ✭çàêëþ÷åííîãî â êðóãëûå ñêîáêè✮✳ ➬à çàãîëîâêîì ñëåäóåò âîçìîæíî ïóñòîé ñïèñîê îáúÿâëåíèé ✐♠♣♦rt ✭impdecls ✱ ðàçäåë ✺✳✸✮✱ êîòîðûé çàäàåò èìïîðòèðóåìûå ìîäóëè✱ íåîáÿçàòåëüíî îãðàíè÷èâàÿ èìïîðòèðóåìûå ñâÿçûâàíèÿ èìåí✳ ➬à íèì ñëåäóåò âîçìîæíî ïóñòîé ñïèñîê îáúÿâëåíèé âåðõíåãî óðîâíÿ ✭topdecls ✱ ãëàâà ✹✮✳ Ðàçðåøåíà ñîêðàùåííàÿ ôîðìà ìîäóëÿ✱ ñîñòîÿùàÿ òîëüêî èç òåëà ìîäóëÿ✳ ➴ñëè èñïîëüçóåòñÿ ñîêðàùåííàÿ ôîðìà✱ òî ïðåäïîëàãàåòñÿ çàãîëîâîê ❵♠♦❞✉❧❡ ▼❛✐♥✭♠❛✐♥✮ ✇❤❡r❡✬✳ ➴ñëè ïåðâàÿ ëåêñåìà â ñîêðàùåííîì ìîäóëå íå ÿâëÿåòñÿ ④✱ òî äëÿ âåðõíåãî óðîâíÿ ìîäóëÿ ïðèìåíÿåòñÿ ïðàâèëî ðàçìåùåíèÿ✳ ✺✳✷
Ñïèñêè ýêñïîðòà
exports
→
✭ export1 ✱ . . . ✱ exportn [ ✱ ] ✮
export
→ | | |
qvar qtycon [✭✳✳✮ | ✭ cname1 ✱ . . . ✱ cnamen ✮] (n ≥ 0 ) qtycls [✭✳✳✮ | ✭ var1 ✱ . . . ✱ varn ✮] (n ≥ 0 ) ♠♦❞✉❧❡ modid
cname
→
var | con
Ïåðåâîä✿ ñïèñîê✲ýêñïîðòà
→
(n ≥ 0 )
✾✹
➹❐➚➶➚ ✺✳
✭
ýêñïîðò1
✱ ... ✱
ýêñïîðòn
❒❰➘Ó❐➮
[✱]✮
(n ≥ 0 ) ýêñïîðò
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
|
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð✲òèïà
[✭✳✳✮ | ✭
❝✲èìÿ1
✱ ... ✱
✮]
❝✲èìÿn
(n ≥ 0 ) [✭✳✳✮ | ✭ êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ1 ✱ . . . ✱ (n ≥ 0 ) | ♠♦❞✉❧❡ èäåíòèôèêàòîð✲ìîäóëÿ |
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
❝✲èìÿ
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿn
✮]
→
ïåðåìåííàÿ
|
êîíñòðóêòîð
Ñïèñîê
ýêñïîðòà
îïðåäåëÿåò
ñóùíîñòè✱
êîòîðûå
ýêñïîðòèðóþòñÿ
ïîñðåäñòâîì
îáúÿâëåíèÿ ìîäóëÿ✳ Ðåàëèçàöèÿ ìîäóëÿ ìîæåò ýêñïîðòèðîâàòü òîëüêî òó ñóùíîñòü✱ êîòîðóþ îí îáúÿâëÿåò èëè êîòîðóþ îí èìïîðòèðóåò èç íåêîòîðîãî äðóãîãî ìîäóëÿ✳ ➴ñëè ñïèñîê ýêñïîðòà ïðîïóùåí✱ âñå çíà÷åíèÿ✱ òèïû è êëàññû✱ îïðåäåëåííûå â ìîäóëå✱ ýêñïîðòèðóþòñÿ✱
êðîìå òåõ✱ ÷òî áûëè èìïîðòèðîâàíû✳
Ñóùíîñòè â ñïèñêå ýêñïîðòà ìîæíî ïåðå÷èñëèòü ñëåäóþùèì îáðàçîì✿
✶✳ ➬íà÷åíèå✱
èìÿ
ïîëÿ
èëè
ìåòîä
êëàññà✱
îáúÿâëåííûå
â
òåëå
èìïîðòèðîâàííûå✱ ìîæíî óêàçàòü✱ çàäàâ èìÿ çíà÷åíèÿ â êà÷åñòâå
ìîäóëÿ
èëè
qvarid ✱ êîòîðîå
äîëæíî íàõîäèòüñÿ â îáëàñòè âèäèìîñòè✳ ❰ïåðàòîðû äîëæíû áûòü çàêëþ÷åíû â êðóãëûå ñêîáêè✱ ÷òîáû ïðåâðàòèòü èõ â ✷✳ ➚ëãåáðàè÷åñêèé òèï äàííûõ
♥❡✇t②♣❡✱ •
T✱
qvarid ✳
îáúÿâëåííûé ïîñðåäñòâîì îáúÿâëåíèÿ
❞❛t❛
èëè
ìîæíî óêàçàòü îäíèì èç òðåõ ñïîñîáîâ✿
Ôîðìà
T
óêàçûâàåò òèï✱
ýêñïîðòèðîâàòü
òèï
íî íå êîíñòðóêòîðû èëè èìåíà ïîëåé✳
áåç
åãî
êîíñòðóêòîðîâ
ïîçâîëÿåò
Ñïîñîáíîñòü
êîíñòðóèðîâàòü
àáñòðàêòíûå òèïû äàííûõ ✭ñì✳ ðàçäåë ✺✳✽✮✳
•
Ôîðìà
T ✭c1 ✱ . . . ✱cn ✮
óêàçûâàåò òèï è íåêîòîðûå èëè âñå åãî êîíñòðóêòîðû
è èìåíà ïîëåé✳
•
Ñîêðàùåííàÿ ôîðìà
T ✭✳✳✮
óêàçûâàåò òèï è âñå åãî êîíñòðóêòîðû è
èìåíà ïîëåé✱ êîòîðûå â íàñòîÿùåå âðåìÿ íàõîäÿòñÿ â îáëàñòè âèäèìîñòè ✭êâàëèôèöèðîâàííûå èëè íåò✮✳ ➶î âñåõ ñëó÷àÿõ ✭âîçìîæíî êâàëèôèöèðîâàííûé✮ êîíñòðóêòîð òèïà
T
äîëæåí
íàõîäèòüñÿ â îáëàñòè âèäèìîñòè✳ ✃îíñòðóêòîð è èìåíà ïîëåé ci âî âòîðîé ôîðìå ÿâëÿþòñÿ íåêâàëèôèöèðîâàííûìè❀ îäíî èç ýòèõ ïîä÷èíåííûõ èìåí ÿâëÿåòñÿ ïðàâèëüíûì✱ åñëè è òîëüêî åñëè ✭❛✮ îíî èìåíóåò ñîáîé êîíñòðóêòîð èëè ïîëå
✺✳✷✳
✾✺
ÑÏ➮Ñ✃➮ Ý✃ÑÏ❰ÐÒ➚
T
è ✭❜✮ êîíñòðóêòîð èëè ïîëå íàõîäèòñÿ â îáëàñòè âèäèìîñòè â òåëå ìîäóëÿ✱
ïðè ýòîì íåâàæíî✱ íàõîäèòñÿ îí â îáëàñòè âèäèìîñòè ïîä êâàëèôèöèðîâàííûì èëè íåêâàëèôèöèðîâàííîì èìåíåì✳ ❮àïðèìåð✱ ñëåäóþùåå îáúÿâëåíèå ÿâëÿåòñÿ
ïðàâèëüíûì✿
♠♦❞✉❧❡ ❆✭ ▼❜✳▼❛②❜❡✭ ◆♦t❤✐♥❣✱ ❏✉st ✮ ✮ ✇❤❡r❡ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ▼❛②❜❡ ❛s ▼❜ ✃îíñòðóêòîðû
äàííûõ
íåëüçÿ
óêàçûâàòü
â
ñïèñêàõ
ýêñïîðòà✱
êðîìå
êàê
ñ
ïîìîùüþ ïîä÷èíåííûõ èìåí✱ ïîòîìó ÷òî èíà÷å îíè íå ìîãóò áûòü îòëè÷èìû îò êîíñòðóêòîðîâ òèïîâ✳ ✸✳ Ñèíîíèì òèïà ôîðìû ✹✳ ✃ëàññ
T✱
ãäå
T ✱ îáúÿâëåííûé â îáúÿâëåíèè t②♣❡✱ T íàõîäèòñÿ â îáëàñòè âèäèìîñòè✳
ìîæíî óêàçàòü ñ ïîìîùüþ
C ñ îïåðàöèÿìè f1 , . . . , fn ✱ îáúÿâëåííûé â îáúÿâëåíèè ❝❧❛ss✱ ìîæíî óêàçàòü
îäíèì èç òðåõ ñïîñîáîâ✿
•
Ôîðìà
C
•
Ôîðìà
C ✭f1 ✱ . . . ✱fn ✮✱
•
Ñîêðàùåííàÿ ôîðìà
óêàçûâàåò êëàññ✱ íî íå ìåòîäû êëàññà✳ óêàçûâàåò êëàññ è íåêîòîðûõ èëè âñå ìåòîäû✳
C ✭✳✳✮
óêàçûâàåò êëàññ è âñå åãî ìåòîäû✱ êîòîðûå
íàõîäÿòñÿ â îáëàñòè âèäèìîñòè ✭êâàëèôèöèðîâàííûå èëè íåò✮✳ ➶î âñåõ ñëó÷àÿõ
C
äîëæåí íàõîäèòüñÿ â îáëàñòè âèäèìîñòè✳ ➶î âòîðîé ôîðìå
îäíî èç ✭íåêâàëèôèöèðîâàííûõ✮ ïîä÷èíåííûõ èìåí
fi ÿâëÿåòñÿ ïðàâèëüíûì✱ åñëè
C
è ✭❜✮ ìåòîä êëàññà íàõîäèòñÿ
è òîëüêî åñëè ✭❛✮ îíî èìåíóåò ñîáîé ìåòîä êëàññà
â îáëàñòè âèäèìîñòè â òåëå ìîäóëÿ✱ íåâàæíî✱ íàõîäèòñÿ îí â îáëàñòè âèäèìîñòè ïîä êâàëèôèöèðîâàííûì èëè íåêâàëèôèöèðîâàííûì èìåíåì✳ ✺✳ Ôîðìà ✏ ♠♦❞✉❧❡
▼✑
óêàçûâàåò íàáîð âñåõ ñóùíîñòåé✱ êîòîðûå íàõîäÿòñÿ â îáëàñòè
âèäèìîñòè ñ íåêâàëèôèöèðîâàííûì èìåíåì ✏ ❡✑ è êâàëèôèöèðîâàííûì èìåíåì
✏ ▼✳❡✑✳ Ýòîò íàáîð ìîæåò áûòü ïóñò✳ ❮àïðèìåð✿
♠♦❞✉❧❡ ◗✉❡✉❡✭ ♠♦❞✉❧❡ ❙t❛❝❦✱ ❡♥q✉❡✉❡✱ ❞❡q✉❡✉❡ ✮ ✇❤❡r❡ ✐♠♣♦rt ❙t❛❝❦ ✳✳✳ ➬äåñü ìîäóëü
◗✉❡✉❡ èñïîëüçóåò èìÿ ìîäóëÿ ❙t❛❝❦ â ñâîåì ñïèñêå ýêñïîðòà✱ ÷òîáû ❙t❛❝❦✳
ñîêðàòèòü èìåíà âñåõ ñóùíîñòåé✱ èìïîðòèðîâàííûõ èç
❒îäóëü ìîæåò óêàçàòü ñâîè ñîáñòâåííûå ëîêàëüíûå îïðåäåëåíèÿ â ñâîåì ñïèñêå ýêñïîðòà✱ èñïîëüçóÿ ñâîå ñîáñòâåííîå èìÿ â ñèíòàêñèñå ✏ ♠♦❞✉❧❡
▼✑✱
ïîòîìó ÷òî
ëîêàëüíîå îáúÿâëåíèå ââîäèò â îáëàñòü âèäèìîñòè è êâàëèôèöèðîâàííîå✱ è íåêâàëèôèöèðîâàííîå èìÿ ✭ðàçäåë ✺✳✺✳✶✮✳ ❮àïðèìåð✿
♠♦❞✉❧❡ ▼♦❞✶✭ ♠♦❞✉❧❡ ▼♦❞✶✱ ♠♦❞✉❧❡ ▼♦❞✷ ✮ ✇❤❡r❡ ✐♠♣♦rt ▼♦❞✷ ✐♠♣♦rt ▼♦❞✸ ➬äåñü
ìîäóëü
▼♦❞✶
èìïîðòèðîâàííûå èç
ýêñïîðòèðóåò
▼♦❞✷✱
âñå
ëîêàëüíûå
íî íå èìïîðòèðîâàííûå èç
îïðåäåëåíèÿ✱
▼♦❞✸✳
à
òàêæå
✾✻
➹❐➚➶➚ ✺✳
❒❰➘Ó❐➮
➪óäåò îøèáêîé èñïîëüçîâàòü ♠♦❞✉❧❡ ▼ â ñïèñêå ýêñïîðòà✱ åñëè ▼ íå ÿâëÿåòñÿ ìîäóëåì✱ îáëàäàþùèì ñïèñêîì ýêñïîðòà✱ èëè ▼ íå èìïîðòèðîâàí ïî ìåíüøåé ìåðå ïîñðåäñòâîì îäíîãî îáúÿâëåíèÿ èìïîðòà ✭êâàëèôèöèðîâàííûì èëè íåêâàëèôèöèðîâàííûì✮✳ Ñïèñêè ýêñïîðòà ÿâëÿþòñÿ îáùèìè✿ íàáîð ñóùíîñòåé✱ ýêñïîðòèðóåìûõ ïîñðåäñòâîì ñïèñêà ýêñïîðòà ÿâëÿåòñÿ îáúåäèíåíèåì ñóùíîñòåé✱ ýêñïîðòèðóåìûõ îòäåëüíûìè ýëåìåíòàìè ñïèñêà✳ ❮åò íèêàêîãî ðàçëè÷èÿ äëÿ èìïîðòèðóåìîãî ìîäóëÿ✱ êàê ñóùíîñòü áûëà ýêñïîðòèðîâàíà✳ ❮àïðèìåð✱ èìÿ ïîëÿ ❢ èç òèïà äàííûõ ❚ ìîæíî ýêñïîðòèðîâàòü îòäåëüíî ✭❢✱ ïóíêò ✭✶✮ âûøå✮ èëè êàê ÿâíî óêàçàííûé ÷ëåí åãî òèïà äàííûõ ✭❚✭❢✮✱ ïóíêò ✭✷✮✮✱ èëè êàê íåÿâíî óêàçàííûé ÷ëåí ✭❚✭✳✳✮✱ ïóíêò ✭✷✮✮✱ èëè ïîñðåäñòâîì ýêñïîðòà âñåãî ìîäóëÿ ✭♠♦❞✉❧❡ ▼✱ ïóíêò ✭✺✮✮✳ ❮åêâàëèôèöèðîâàííûå èìåíà ñóùíîñòåé✱ ýêñïîðòèðóåìûå ìîäóëåì✱ äîëæíû îòëè÷àòüñÿ äðóã îò äðóãà ✭â ïðåäåëàõ èõ ñîîòâåòñòâóþùåãî ïðîñòðàíñòâà èìåí✮✳ ❮àïðèìåð✱ ♠♦❞✉❧❡ ❆ ✭ ❈✳❢✱ ❈✳❣✱ ❣✱ ♠♦❞✉❧❡ ❇ ✮ ✇❤❡r❡ ✐♠♣♦rt ❇✭❢✮ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ❈✭❢✱❣✮ ❣ ❂ ❢ ❚r✉❡
✲✲ íåïðàâèëüíûé ìîäóëü
❮åïîñðåäñòâåííî â ïðåäåëàõ ìîäóëÿ ❆ êîíôëèêòîâ èìåí íåò✱ íî åñòü êîíôëèêò èìåí â ñïèñêå ýêñïîðòà ìåæäó ❈✳❣ è ❣ ✭ïðåäïîëîæèì✱ ÷òî ❈✳❣ è ❣ ✖ ðàçëè÷íûå ñóùíîñòè✱ âñïîìíèòå✱ ÷òî ìîäóëè ìîãóò èìïîðòèðîâàòü äðóã äðóãà ðåêóðñèâíî✮ è ìåæäó ♠♦❞✉❧❡ ❇ è ❈✳❢ ✭ïðåäïîëîæèì✱ ÷òî ❇✳❢ è ❈✳❢ ✖ ðàçëè÷íûå ñóùíîñòè✮✳ ✺✳✸
❰áúÿâëåíèÿ èìïîðòà
impdecl impspec
import
cname
→ | → |
✐♠♣♦rt [q✉❛❧✐❢✐❡❞] modid [❛s modid ] [impspec] (ïóñòîå ✭ import1 ✱ . . . ✱ importn [ ✱ ] ✮ (n ≥ 0 ) ❤✐❞✐♥❣ ✭ import1 ✱ . . . ✱ importn [ ✱ ] ✮ (n ≥ 0 )
→ | | →
var tycon [ ✭✳✳✮ | ✭ cname1 ✱ . . . ✱ cnamen ✮] (n ≥ 0 ) tycls [✭✳✳✮ | ✭ var1 ✱ . . . ✱ varn ✮] (n ≥ 0 ) var | con
îáúÿâëåíèå)
Ïåðåâîä✿ îáúÿâëåíèå✲èìïîðòà
✐♠♣♦rt [q✉❛❧✐❢✐❡❞]
→ èäåíòèôèêàòîð✲ìîäóëÿ
[❛s
èäåíòèôèêàòîð✲ìîäóëÿ]
✺✳✸✳
✾✼
❰➪Úß➶❐➴❮➮ß ➮❒Ï❰ÐÒ➚
[ñïåöèôèêàòîð✲èìïîðòà] | (ïóñòîå îáúÿâëåíèå) ñïåöèôèêàòîð✲èìïîðòà
✭
→
✱ . . . ✱ èìïîðòn [ ✱ ] ✮ (n ≥ 0 ) | ❤✐❞✐♥❣ ✭ èìïîðò1 ✱ . . . ✱ èìïîðòn [ ✱ ] ✮ (n ≥ 0 ) èìïîðò1
èìïîðò
→
ïåðåìåííàÿ
| êîíñòðóêòîð✲òèïà [ ✭✳✳✮ | ✭ ❝✲èìÿ1 ✱ . . . ✱ ❝✲èìÿn ✮] (n ≥ 0 ) | êëàññ✲òèïà [✭✳✳✮ | ✭ ïåðåìåííàÿ1 ✱ . . . ✱ ïåðåìåííàÿn ✮] (n ≥ 0 ) ❝✲èìÿ → ïåðåìåííàÿ
| êîíñòðóêòîð Ñóùíîñòè✱ ýêñïîðòèðóåìûå ìîäóëåì✱ ìîæíî ââåñòè â îáëàñòü âèäèìîñòè äðóãîãî ìîäóëÿ
ïîñðåäñòâîì
óêàçûâàåòñÿ
îáúÿâëåíèÿ
èìïîðòèðóåìûé
✐♠♣♦rt
ìîäóëü
â
è
íà÷àëå
ìîäóëÿ✳
íåîáÿçàòåëüíî
➶
îáúÿâëåíèè
çàäàþòñÿ
✐♠♣♦rt
èìïîðòèðóåìûå
ñóùíîñòè✳ ❰äèí ìîäóëü ìîæíî èìïîðòèðîâàòü ñ ïîìîùüþ áîëåå ÷åì îäíîãî îáúÿâëåíèÿ
✐♠♣♦rt✳
➮ìïîðòèðîâàííûå èìåíà ñëóæàò â êà÷åñòâå îáúÿâëåíèé âåðõíåãî óðîâíÿ✿ èõ
îáëàñòü âèäèìîñòè ïðîñòèðàåòñÿ íàä âñåì òåëîì ìîäóëÿ✱ íî ìîæåò áûòü ñîêðûòà ëîêàëüíûìè ñâÿçûâàíèÿìè èìåí îòëè÷íîãî îò âåðõíåãî óðîâíÿ✳
✐♠♣♦rt ñòðîãî êóìóëÿòèâíî✿ ñóùíîñòü íàõîäèòñÿ â îáëàñòè âèäèìîñòè✱ åñëè îíà èìïîðòèðîâàíà ïîñðåäñòâîì ëþáîãî èç îáúÿâëåíèé ✐♠♣♦rt
➶ëèÿíèå ìíîãîêðàòíûõ îáúÿâëåíèé
â ìîäóëå✳ Ïîðÿäîê îáúÿâëåíèé èìïîðòà íå ñóùåñòâåíåí✳ Ñ
òî÷êè
✏ q✉❛❧✐❢✐❡❞✑
çðåíèÿ è
ëåêñèêè✱
✏ ❤✐❞✐♥❣✑
êàæäûé
ÿâëÿåòñÿ
èç
òåðìèíàëüíûõ
ñèìâîëîâ
varid ✭èäåíòèôèêàòîðîì✲ïåðåìåííîé✮✱
reservedid ✭çàðåçåðâèðîâàííûì✲èäåíòèôèêàòîðîì✮✳ òîëüêî â êîíòåêñòå îáúÿâëåíèÿ ✐♠♣♦rt❀ èõ òàêæå
✏ ❛s✑✱ à
íå
❰íè èìåþò ñïåöèàëüíîå çíà÷åíèå ìîæíî èñïîëüçîâàòü â êà÷åñòâå
ïåðåìåííûõ✳
✺✳✸✳✶
×òî òàêîå èìïîðòèðîâàíèå
✃àêèå
òî÷íî
ñóùíîñòè
äîëæíû
áûòü
èìïîðòèðîâàíû✱
ìîæíî
çàäàòü
îäíèì
èç
ñëåäóþùèõ òðåõ ñïîñîáîâ✿
✶✳ ➮ìïîðòèðóåìûå ñóùíîñòè ìîæíî çàäàòü ÿâíî✱ ïåðå÷èñëèâ èõ â êðóãëûõ ñêîáêàõ✳ Ýëåìåíòû
ñïèñêà
èìåþò
òó
æå
ôîðìó✱
÷òî
ýëåìåíòû
â
ñïèñêàõ
ýêñïîðòà✱
✾✽
➹❐➚➶➚ ✺✳
❒❰➘Ó❐➮
çà èñêëþ÷åíèåì òîãî✱ ÷òî íåëüçÿ èñïîëüçîâàòü êâàëèôèêàòîðû è íåëüçÿ èñïîëüçîâàòü ñóùíîñòü ❵♠♦❞✉❧❡ modid ✬✳ ✃îãäà ôîðìà ✭✳✳✮ èìïîðòà èñïîëüçóåòñÿ äëÿ òèïà èëè êëàññà✱ ✭✳✳✮ ññûëàåòñÿ íà âñå êîíñòðóêòîðû✱ ìåòîäû èëè èìåíà ïîëåé✱ ýêñïîðòèðîâàííûå èç ìîäóëÿ✳ ➶ ñïèñêå äîëæíû áûòü óêàçàíû òîëüêî ñóùíîñòè✱ ýêñïîðòèðîâàííûå èìïîðòèðóåìûì ìîäóëåì✳ Ñïèñîê ìîæåò áûòü ïóñò✱ â ýòîì ñëó÷àå íè÷òî✱ êðîìå ýêçåìïëÿðîâ✱ íå áóäåò èìïîðòèðîâàíî✳ ✷✳ Ñóùíîñòè ìîãóò áûòü èñêëþ÷åíû ïîñðåäñòâîì èñïîëüçîâàíèÿ ôîðìû ❤✐❞✐♥❣✭import1 ✱ . . . ✱ importn ✮✱ êîòîðàÿ óêàçûâàåò✱ ÷òî âñå îáúåêòû✱ ýêñïîðòèðîâàííûå íàçâàííûì ìîäóëåì✱ äîëæíû áûòü èìïîðòèðîâàíû✱ çà èñêëþ÷åíèåì óêàçàííûõ â ñïèñêå✳ ✃îíñòðóêòîðû äàííûõ ìîæíî óêàçàòü íåïîñðåäñòâåííî â ñïèñêàõ ❤✐❞✐♥❣ áåç èñïîëüçîâàíèÿ â ïðåôèêñå ñâÿçàííîãî ñ íèì òèïà✳ Òàêèì îáðàçîì✱ â ✐♠♣♦rt ▼ ❤✐❞✐♥❣ ✭❈✮
ëþáîé êîíñòðóêòîð✱ êëàññ✱ èëè òèï✱ íàçâàííûé ❈✱ èñêëþ÷åí✳ ❮àïðîòèâ✱ èñïîëüçóÿ ❈ â ñïèñêå èìïîðòà✱ âû óêàæåòå ëèøü êëàññ èëè òèï✳ ➪óäåò îøèáêîé óêàçàòü â ñïèñêå ❤✐❞✐♥❣ ñóùíîñòü✱ êîòîðàÿ íà ñàìîì äåëå íå ýêñïîðòèðóåòñÿ èìïîðòèðóåìûì ìîäóëåì✳ ✸✳ ❮àêîíåö✱ åñëè impspec ïðîïóùåí✱ òî âñå ñóùíîñòè✱ ýêñïîðòèðóåìûå óêàçàííûì ìîäóëåì✱ áóäóò èìïîðòèðîâàíû✳ ✺✳✸✳✷
➮ìïîðòèðîâàíèå ñ èñïîëüçîâàíèåì êâàëèôèêàòîðîâ
➘ëÿ êàæäîé ñóùíîñòè✱ èìïîðòèðóåìîé â ñîîòâåòñòâèè ñ ïðàâèëàìè ðàçäåëà ✺✳✸✳✶✱ ðàñøèðÿåòñÿ îêðóæåíèå âåðõíåãî óðîâíÿ✳ ➴ñëè îáúÿâëåíèå èìïîðòà èñïîëüçóåò êëþ÷åâîå ñëîâî q✉❛❧✐❢✐❡❞✱ òî òîëüêî ñóùíîñòè ââîäèòñÿ â îáëàñòü âèäèìîñòè✳ ➴ñëè êëþ÷åâîå ñëîâî q✉❛❧✐❢✐❡❞ îïóùåíî✱ òî èìåíè✿ êâàëèôèöèðîâàííîå íåêâàëèôèöèðîâàííîå èìÿ ñóùíîñòè ✖ ââîäÿòñÿ â îáëàñòü âèäèìîñòè✳ ➶ ðàçäåëå ✺✳✺✳✶ êâàëèôèöèðîâàííûå èìåíà îïèñàíû áîëåå ïîäðîáíî✳ ✃âàëèôèêàòîð èìïîðòèðîâàííîãî èìåíè ÿâëÿåòñÿ èìåíåì èìïîðòèðîâàííîãî ìîäóëÿ èëè ëîêàëüíûì ñèíîíèìîì✱ çàäàííûì ñ ïîìîùüþ èíñòðóêöèè ❛s ✭ðàçäåë ✺✳✸✳✸✮ â èíñòðóêöèè ✐♠♣♦rt✳ Ñëåäîâàòåëüíî✱ ✳ ➶îçìîæíîñòü èñêëþ÷èòü íåêâàëèôèöèðîâàííûå èìåíà ïîçâîëÿåò ïðîãðàììèñòó îñóùåñòâëÿòü ïîëíîå óïðàâëåíèå ïðîñòðàíñòâîì íåêâàëèôèöèðîâàííûõ èìåí✿ ëîêàëüíî îïðåäåëåííàÿ ñóùíîñòü ìîæåò ñîâìåñòíî èñïîëüçîâàòü òî æå èìÿ✱ ÷òî è èìïîðòèðóåìàÿ ñóùíîñòü ñ êâàëèôèöèðîâàííûì èìåíåì✿ êâàëèôèöèðîâàííîå èìÿ
îáà
è
êâàëèôèêàòîð íåîáÿçàòåëüíî ÿâëÿåòñÿ èìåíåì
ìîäóëÿ✱ â êîòîðîì ïåðâîíà÷àëüíî áûëà îáúÿâëåíà ñóùíîñòü
✺✳✸✳
❰➪Úß➶❐➴❮➮ß ➮❒Ï❰ÐÒ➚
♠♦❞✉❧❡ ❘✐♥❣ ✇❤❡r❡ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ Pr❡❧✉❞❡ ✐♠♣♦rt ▲✐st✭ ♥✉❜ ✮
✾✾
✲✲ ➶ñå èìåíà èç Pr❡❧✉❞❡ äîëæíû áûòü ✲✲ êâàëèôèöèðîâàííûìè
❧✶ ✰ ❧✷ ❂ ❧✶ Pr❡❧✉❞❡✳✰✰ ❧✷ ✲✲ Ýòîò ✰ îòëè÷àåòñÿ îò ✰ â Pr❡❧✉❞❡ ❧✶ ✯ ❧✷ ❂ ♥✉❜ ✭❧✶ ✰ ❧✷✮ ✲✲ Ýòà ✯ îòëè÷àåòñÿ îò ✯ â Pr❡❧✉❞❡ s✉❝❝ ❂ ✭Pr❡❧✉❞❡✳✰ ✶✮
✺✳✸✳✸
❐îêàëüíûå ñèíîíèìû
➮ìïîðòèðîâàííûì ìîäóëÿì ìîæíî ïðèñâîèòü ëîêàëüíûé ñèíîíèì â ìîäóëå✱ êîòîðûé îñóùåñòâëÿåò èìïîðòèðîâàíèå✱ äëÿ ýòîãî èñïîëüçóåòñÿ èíñòðóêöèÿ
❛s✳
❮àïðèìåð✱ â
✐♠♣♦rt q✉❛❧✐❢✐❡❞ ❱❡r②▲♦♥❣▼♦❞✉❧❡◆❛♠❡ ❛s ❈ ê
èìïîðòèðîâàííûì
êâàëèôèêàòîðà ìîäóëþ
áûòü
èñïîëüçóåìûõ
❵
❈✳✬
ñóùíîñòÿì
âìåñòî
çàìåíåííûì äëÿ
ìîæíî
îáðàùàòüñÿ✱
èñïîëüçóÿ
â
êà÷åñòâå
❱❡r②▲♦♥❣▼♦❞✉❧❡◆❛♠❡✳✬✳ Ýòî òàêæå ïîçâîëÿåò äðóãîìó íà ❱❡r②▲♦♥❣▼♦❞✉❧❡◆❛♠❡ áåç èçìåíåíèÿ êâàëèôèêàòîðîâ✱ ❵
èìïîðòèðîâàííîãî
ìîäóëÿ✳
➪îëåå
÷åì
îäèí
ìîäóëü
â
îáëàñòè
âèäèìîñòè ìîæåò èñïîëüçîâàòü òîò æå ñàìûé êâàëèôèêàòîð✱ ïðè óñëîâèè✱ ÷òî âñå èìåíà ïî✲ïðåæíåìó ìîãóò áûòü îäíîçíà÷íî ðàçðåøåíû✳ ❮àïðèìåð✿
♠♦❞✉❧❡ ▼ ✇❤❡r❡ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ❋♦♦ ❛s ❆ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ❇❛③ ❛s ❆ ① ❂ ❆✳❢ Ýòîò
ìîäóëü
ýêñïîðòèðóþò
➮íñòðóêöèþ
ÿâëÿåòñÿ
ïðàâèëüíûì
òîëüêî
ïðè
óñëîâèè✱
÷òî
è
❢✳
❛s
ìîæíî òàêæå èñïîëüçîâàòü â èíñòðóêöèè
✐♠♣♦rt
áåç
❋♦♦✱
è
❇❛③
íå
q✉❛❧✐❢✐❡❞✿
✐♠♣♦rt ❋♦♦ ❛s ❆✭❢✮ Ýòî îáúÿâëåíèå ââîäèò â îáëàñòü âèäèìîñòè
✺✳✸✳✹
❢
è
❆✳❢✳
Ïðèìåðû
➘ëÿ òîãî ÷òîáû ðàçúÿñíèòü âûøåóïîìÿíóòûå ïðàâèëà èìïîðòà✱ ïðåäïîëîæèì✱ ÷òî ìîäóëü
❆ ýêñïîðòèðóåò ① è ②✳ Òîãäà ýòà òàáëèöà ïîêàçûâàåò✱ êàêèå èìåíà áóäóò ââåäåíû
â îáëàñòü âèäèìîñòè ñ ïîìîùüþ çàäàííîãî îáúÿâëåíèÿ èìïîðòà✿
✶✵✵
➹❐➚➶➚ ✺✳
❒❰➘Ó❐➮
❰áúÿâëåíèå èìïîðòà
➮ìåíà✱ ââåäåííûå â îáëàñòü âèäèìîñòè
✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt
①✱ ②✱ ❆✳①✱ ❆✳②
❆ ❆✭✮ ❆✭①✮ q✉❛❧✐❢✐❡❞ ❆ q✉❛❧✐❢✐❡❞ ❆✭✮ q✉❛❧✐❢✐❡❞ ❆✭①✮ ❆ ❤✐❞✐♥❣ ✭✮ ❆ ❤✐❞✐♥❣ ✭①✮ q✉❛❧✐❢✐❡❞ ❆ ❤✐❞✐♥❣ ✭✮ q✉❛❧✐❢✐❡❞ ❆ ❤✐❞✐♥❣ ✭①✮ ❆ ❛s ❇ ❆ ❛s ❇✭①✮ q✉❛❧✐❢✐❡❞ ❆ ❛s ❇
✭íè÷åãî✮
①✱ ❆✳① ❆✳①✱ ❆✳②
✭íè÷åãî✮
❆✳① ①✱ ②✱ ❆✳①✱ ❆✳② ②✱ ❆✳② ❆✳①✱ ❆✳② ❆✳② ①✱ ②✱ ❇✳①✱ ❇✳② ①✱ ❇✳① ❇✳①✱ ❇✳②
➶î âñåõ ñëó÷àÿõ âñå îáúÿâëåíèÿ ýêçåìïëÿðîâ â îáëàñòè âèäèìîñòè â ìîäóëå
❆
áóäóò
èìïîðòèðîâàíû ✭ðàçäåë ✺✳✹✮✳
✺✳✹
➮ìïîðòèðîâàíèå
è
ýêñïîðòèðîâàíèå
îáúÿâëåíèé
ýêçåìïëÿðîâ
❰áúÿâëåíèÿ ýêçåìïëÿðîâ íåëüçÿ ÿâíî óêàçàòü â ñïèñêàõ èìïîðòà èëè ýêñïîðòà✳ ➶ñå ýêçåìïëÿðû â îáëàñòè âèäèìîñòè ìîäóëÿ èìïîðòà ââîäèò â îáëàñòü âèäèìîñòè
âñå
âñåãäà
ýêñïîðòèðóþòñÿ✱ è ëþáîå îáúÿâëåíèå
ýêçåìïëÿðû èìïîðòèðóåìîãî ìîäóëÿ✳ Òàêèì
îáðàçîì✱ îáúÿâëåíèå ýêçåìïëÿðà íàõîäèòñÿ â îáëàñòè âèäèìîñòè✱ åñëè è òîëüêî åñëè öåïî÷êà îáúÿâëåíèé ❮àïðèìåð✱
✐♠♣♦rt
✐♠♣♦rt ▼✭✮
âåäåò ê ìîäóëþ✱ ñîäåðæàùåìó îáúÿâëåíèå ýêçåìïëÿðà✳
íå ââîäèò íèêàêèå íîâûå èìåíà èç ìîäóëÿ
âèäèìîñòè✱ íî ââîäèò âñå ýêçåìïëÿðû✱ êîòîðûå âèäíû â
▼✳
▼
â îáëàñòü
❒îäóëü✱ ÷üÿ åäèíñòâåííàÿ
öåëü ñîñòîèò â òîì✱ ÷òîáû îáåñïå÷èòü îáúÿâëåíèÿ ýêçåìïëÿðîâ✱ ìîæåò èìåòü ïóñòîé ñïèñîê ýêñïîðòà✳ ❮àïðèìåð✱
♠♦❞✉❧❡ ▼②■♥st❛♥❝❡s✭✮ ✇❤❡r❡ ✐♥st❛♥❝❡ ❙❤♦✇ ✭❛ ✲❃ ❜✮ ✇❤❡r❡ s❤♦✇ ❢♥ ❂ ✧❁❁❢✉♥❝t✐♦♥❃❃✧ ✐♥st❛♥❝❡ ❙❤♦✇ ✭■❖ ❛✮ ✇❤❡r❡ s❤♦✇ ✐♦ ❂ ✧❁❁■❖ ❛❝t✐♦♥❃❃✧
✺✳✺✳
✶✵✶
✃❰❮Ô❐➮✃Ò ➮❒➴❮ ➮ ➬➚❒Û✃➚❮➮➴
✺✳✺
✃îíôëèêò èìåí è çàìûêàíèå
✺✳✺✳✶
✃âàëèôèöèðîâàííûå èìåíà
✃âàëèôèöèðîâàííîå
èìÿ
èìååò
modid ✳name
âèä
✭èäåíòèôèêàòîð✲ìîäóëÿ✳èìÿ✮
✭ðàçäåë ✷✳✹✮✳ ✃âàëèôèöèðîâàííîå èìÿ ââîäèòñÿ â îáëàñòü âèäèìîñòè✿
•
Ïîñðåäñòâîì îáúÿâëåíèÿ âåðõíåãî óðîâíÿ✳ ❰áúÿâëåíèå âåðõíåãî óðîâíÿ ââîäèò
â
îáëàñòü
âèäèìîñòè
è
íåêâàëèôèöèðîâàííîå✱
êâàëèôèöèðîâàííîå
è
èìÿ
îïðåäåëÿåìîé ñóùíîñòè✳ Òàê✿
♠♦❞✉❧❡ ▼ ✇❤❡r❡ ❢ ① ❂ ✳✳✳ ❣ ① ❂ ▼✳❢ ① ① ÿâëÿåòñÿ ïðàâèëüíûì îáúÿâëåíèåì✳ ❰ïðåäåëÿåìîå âõîæäåíèå äîëæíî ññûëàòüñÿ íà íåêâàëèôèöèðîâàííîå èìÿ❀ ïîýòîìó áóäåò íåïðàâèëüíûì ïèñàòü
♠♦❞✉❧❡ ▼ ✇❤❡r❡ ▼✳❢ ① ❂ ✳✳✳ ✲✲ ❮➴ÏÐ➚➶➮❐Ü❮❰ ❣ ① ❂ ❧❡t ▼✳② ❂ ①✰✶ ✐♥ ✳✳✳ ✲✲ ❮➴ÏÐ➚➶➮❐Ü❮❰ •
Ïîñðåäñòâîì îáúÿâëåíèÿ
èëè
áåç✱
âñåãäà
✐♠♣♦rt✳
ââîäèò
â
❰áúÿâëåíèå
îáëàñòü
✐♠♣♦rt✱
âèäèìîñòè
ñ èíñòðóêöèåé
q✉❛❧✐❢✐❡❞
êâàëèôèöèðîâàííîå
èìÿ
èìïîðòèðîâàííîé ñóùíîñòè ✭ðàçäåë ✺✳✸✮✳ Ýòî ïîçâîëÿåò çàìåíèòü îáúÿâëåíèå èìïîðòà ñ èíñòðóêöèåé
q✉❛❧✐❢✐❡❞
íà îáúÿâëåíèå áåç èíñòðóêöèè
q✉❛❧✐❢✐❡❞
áåç
èçìåíåíèé ññûëîê íà èìïîðòèðîâàííûå èìåíà✳
✺✳✺✳✷
✃îíôëèêòû èìåí
➴ñëè ìîäóëü ñîäåðæèò ñâÿçàííîå âõîæäåíèå èìåíè✱ íàïðèìåð✱
❢ èëè ❆✳❢✱ äîëæíà áûòü
âîçìîæíîñòü îäíîçíà÷íî ðåøèòü✱ íà êàêóþ ñóùíîñòü ïðè ýòîì ññûëàþòñÿ❀ òî åñòü äîëæíî áûòü òîëüêî îäíî ñâÿçûâàíèå äëÿ
❢
èëè
❆✳❢
ñîîòâåòñòâåííî✳
❰øèáêè íå áóäåò✱ åñëè ñóùåñòâóþò èìåíà✱ êîòîðûå íåëüçÿ òàê ðàçðåøèòü✱ ïðè óñëîâèè✱ ÷òî ïðîãðàììà íå ñîäåðæèò ññûëîê íà ýòè èìåíà✳ ❮àïðèìåð✿
✶✵✷
➹❐➚➶➚ ✺✳
❒❰➘Ó❐➮
♠♦❞✉❧❡ ❆ ✇❤❡r❡ ✐♠♣♦rt ❇ ✐♠♣♦rt ❈ t✉♣ ❂ ✭❜✱ ❝✱ ❞✱ ①✮ ♠♦❞✉❧❡ ❇✭ ❞✱ ❜✱ ①✱ ② ✮ ✇❤❡r❡ ✐♠♣♦rt ❉ ① ❂ ✳✳✳ ② ❂ ✳✳✳ ❜ ❂ ✳✳✳ ♠♦❞✉❧❡ ❈✭ ❞✱ ❝✱ ①✱ ② ✮ ✇❤❡r❡ ✐♠♣♦rt ❉ ① ❂ ✳✳✳ ② ❂ ✳✳✳ ❝ ❂ ✳✳✳ ♠♦❞✉❧❡ ❉✭ ❞ ✮ ✇❤❡r❡ ❞ ❂ ✳✳✳ t✉♣✳
Ðàññìîòðèì îïðåäåëåíèå
•
Ññûëêè
íà
❜
ñîîòâåòñòâåííî
•
❉✳
❈✳❞✳
èëè
•
❇
îäíîçíà÷íî
❇✱
è
❝✱
ðàçðåøèòü✿
îáúÿâëåííûé â
çäåñü
❈✳
îäíîçíà÷íî ðàçðåøàåòñÿ✿ çäåñü ïîäðàçóìåâàåòñÿ
è èìïîðò
Ññûëêà íà
①
ìîæíî
îáúÿâëåííûé â
ïîäðàçóìåâàåòñÿ
❞✱
îáúÿâëåííûé â
➶ ýòîì ñëó÷àå òà æå ñóùíîñòü ââîäèòñÿ â îáëàñòü âèäèìîñòè äâóìÿ ïóòÿìè
✭èìïîðò
•
❞
Ññûëêà íà
❝
è
❜✱
íà
①
❈✮✱
è íà íåå ìîæíî ññûëàòüñÿ â
â
❈✳
❮åò íè îäíîé ññûëêè íà
②
ïîñðåäñòâîì èìåí
ÿâëÿåòñÿ íåîäíîçíà÷íîé✿ îíà ìîæåò îçíà÷àòü
①✱ îáúÿâëåííûé ❇✳① èëè ❈✳①✳
ñ èìåíåì
❆
①✱
❞✱ ❇✳❞
îáúÿâëåííûé â
è
❇✱
❮åîäíîçíà÷íîñòü ìîæåò áûòü ðàçðåøåíà ïóòåì çàìåíû
②✱
ýêñïîðòèðóþò è
ïîýòîìó íåò îøèáêè â òîì✱ ÷òî ðàçëè÷íûå ñóùíîñòè
❇✱ è ❈✳ ②✳
Ñîîáùåíèå îá îøèáêå ïîÿâèòñÿ òîëüêî â òîì
ñëó÷àå✱ åñëè áóäåò ññûëêà íà ➮ìÿ✱
âñòðå÷àþùååñÿ
â
ñèãíàòóðå
òèïà
èëè
✐♥❢✐①✲îáúÿâëåíèÿõ✱
âñåãäà
ÿâëÿåòñÿ
íåêâàëèôèöèðîâàííûì è îäíîçíà÷íî ññûëàåòñÿ íà äðóãîå îáúÿâëåíèå â òîì æå ñïèñêå îáúÿâëåíèé ✭çà èñêëþ÷åíèåì òîãî✱ ÷òî ✐♥❢✐①✲îáúÿâëåíèå äëÿ ìåòîäà êëàññà ìîæåò âñòðå÷àòüñÿ íà âåðõíåì óðîâíå✱ ñì✳ ðàçäåë ✹✳✹✳✷✮✳ ❮àïðèìåð✱ ñëåäóþùèé ìîäóëü ÿâëÿåòñÿ ïðàâèëüíûì✿
♠♦❞✉❧❡ ❋ ✇❤❡r❡ s✐♥ ✿✿ ❋❧♦❛t ✲❃ ❋❧♦❛t s✐♥ ① ❂ ✭①✿✿❋❧♦❛t✮ ❢ ① ❂ Pr❡❧✉❞❡✳s✐♥ ✭❋✳s✐♥ ①✮
✺✳✺✳
✃❰❮Ô❐➮✃Ò ➮❒➴❮ ➮ ➬➚❒Û✃➚❮➮➴
❐îêàëüíîå îáúÿâëåíèå
s✐♥
✶✵✸
s✐♥ ❋✳s✐♥
ÿâëÿåòñÿ ïðàâèëüíûì✱ äàæå åñëè
íàõîäèòñÿ â îáëàñòè âèäèìîñòè✳ Ññûëêè íà
Pr❡❧✉❞❡✳s✐♥
è
èç Pr❡❧✉❞❡ íåÿâíî äîëæíû áûòü îáå
êâàëèôèöèðîâàííûìè äëÿ òîãî✱ ÷òîáû îäíîçíà÷íî îïðåäåëèòü✱ êàêîé ïîäðàçóìåâàåòñÿ
s✐♥✳
s✐♥ â ñèãíàòóðå îáúÿâëåíèå s✐♥✳
Òåì íå ìåíåå✱ íåêâàëèôèöèðîâàííîå èìÿ
îäíîçíà÷íî ññûëàåòñÿ íà ëîêàëüíîå
✺✳✺✳✸
❋
➬àìûêàíèå
✃àæäûé ìîäóëü â ïðîãðàììå íà ❍❛s❦❡❧❧ äîëæåí áûòü èìÿ✱
òèïà â ïåðâîé ñòðîêå
ÿâíî
óêàçàííîå
â
èñõîäíîì
òåêñòå✱
äîëæíî
çàìêíóòûì✳
áûòü
ëîêàëüíî
Òî åñòü êàæäîå îïðåäåëåíî
èëè
èìïîðòèðîâàíî èç äðóãîãî ìîäóëÿ✳ Òåì íå ìåíåå✱ íåò íåîáõîäèìîñòè â òîì✱ ÷òîáû ñóùíîñòè✱ êîòîðûå òðåáóþòñÿ êîìïèëÿòîðó äëÿ êîíòðîëÿ òèïîâ èëè äðóãîãî àíàëèçà âðåìåíè êîìïèëÿöèè✱ áûëè èìïîðòèðîâàíû✱ åñëè ê íèì íåò îáðàùåíèé ïî èìåíè✳ Ñèñòåìà êîìïèëÿöèè ❍❛s❦❡❧❧ íåñåò îòâåòñòâåííîñòü çà íàõîæäåíèå ëþáîé èíôîðìàöèè✱ íåîáõîäèìîé äëÿ êîìïèëÿöèè áåç ïîìîùè ïðîãðàììèñòà✳ Òî åñòü èìïîðò ïåðåìåííîé
①
íå òðåáóåò✱ ÷òîáû òèïû äàííûõ è êëàññû â ñèãíàòóðå
íàðÿäó
ñ
①✱
åñëè
ê
ýòèì
ñóùíîñòÿì
íå
îáðàùàþòñÿ
ïî
①
áûëè ââåäåíû â ìîäóëü
èìåíè
â
ïîëüçîâàòåëüñêîé
ïðîãðàììå✳ Ñèñòåìà ❍❛s❦❡❧❧ ìîë÷à èìïîðòèðóåò ëþáóþ èíôîðìàöèþ✱ êîòîðàÿ äîëæíà ñîïðîâîæäàòü ñóùíîñòü äëÿ êîíòðîëÿ òèïîâ èëè ëþáûõ äðóãèõ öåëåé✳ Òàêèå ñóùíîñòè íå òðåáóåòñÿ äàæå ÿâíî ýêñïîðòèðîâàòü✿ ñëåäóþùàÿ ïðîãðàììà ÿâëÿåòñÿ ïðàâèëüíîé✱ õîòÿ
❚
íå èçáåãàåò
▼✶✿
♠♦❞✉❧❡ ▼✶✭①✮ ✇❤❡r❡ ❞❛t❛ ❚ ❂ ❚ ① ❂ ❚ ♠♦❞✉❧❡ ▼✷ ✇❤❡r❡ ✐♠♣♦rt ▼✶✭①✮ ② ❂ ① ②✱ ò✳ê✳ ❚ íå íàõîäèòñÿ â ❚ ÿâíî èëè íåò✱ ìîäóëü ▼✷ çíàåò
➶ ýòîì ïðèìåðå íåò ñïîñîáà óêàçàòü ÿâíóþ ñèãíàòóðó òèïà äëÿ îáëàñòè âèäèìîñòè✳ ❮åçàâèñèìî îò òîãî✱ ýêñïîðòèðóåòñÿ äîñòàòî÷íî î
❮à
òèï
❚✱
÷òîáû ïðàâèëüíî âûïîëíèòü êîíòðîëü ñîîòâåòñòâèÿ òèïîâ ïðîãðàììû✳
ýêñïîðòèðóåìîé
ñóùíîñòè
íå
âëèÿåò
íåýêñïîðòèðóåìûå
ñèíîíèìû
òèïîâ✳
❮àïðèìåð✱ â
♠♦❞✉❧❡ ▼✭①✮ ✇❤❡r❡ t②♣❡ ❚ ❂ ■♥t ① ✿✿ ❚ ① ❂ ✶ ① ÿâëÿåòñÿ è ❚✱ è ■♥t❀ îíè âçàèìîçàìåíÿåìû✱ äàæå êîãäà ❚ íå íàõîäèòñÿ â îáëàñòè âèäèìîñòè✳ Òî åñòü îïðåäåëåíèå ❚ äîñòóïíî ëþáîìó ìîäóëþ✱ êîòîðûé ñòàëêèâàåòñÿ ñ íèì✱ íåçàâèñèìî îò òîãî✱ íàõîäèòñÿ èìÿ ❚ â îáëàñòè âèäèìîñòè èëè íåò✳ ➴äèíñòâåííàÿ ïðè÷èíà ýêñïîðòèðîâàòü ❚ ñîñòîèò â òîì✱ ÷òîáû ïîçâîëèòü äðóãèì ìîäóëÿì îáðàùàòüñÿ òèïîì
✶✵✹
➹❐➚➶➚ ✺✳
ê íåìó ïî èìåíè❀ êîíòðîëü òèïîâ íàõîäèò îïðåäåëåíèå
❚✱
❒❰➘Ó❐➮
åñëè îíî íåîáõîäèìî✱
íåçàâèñèìî îò òîãî✱ áûëî îíî ýêñïîðòèðîâàíî èëè íåò✳
✺✳✻
Ñòàíäàðòíîå íà÷àëî ✭Pr❡❧✉❞❡✮
❒íîãèå
âîçìîæíîñòè
❍❛s❦❡❧❧
îïðåäåëåíû
â
ñàìîì
❍❛s❦❡❧❧
â
âèäå
áèáëèîòåêè
ñòàíäàðòíûõ òèïîâ äàííûõ✱ êëàññîâ è ôóíêöèé✱ íàçûâàåìîé ✏ñòàíäàðòíûì íà÷àëîì ✭♣r❡❧✉❞❡✮✳✑ ➶ ❍❛s❦❡❧❧ ñòàíäàðòíîå íà÷àëî ñîäåðæèòñÿ â ìîäóëå
Pr❡❧✉❞❡✳
➴ñòü òàêæå
ìíîãî ïðåäîïðåäåëåííûõ ìîäóëåé áèáëèîòåêè✱ êîòîðûå îáåñïå÷èâàþò ìåíåå ÷àñòî èñïîëüçóåìûå ôóíêöèè è òèïû✳ ❮àïðèìåð✱ êîìïëåêñíûå ÷èñëà✱ ìàññèâû✱ è áîëüøèíñòâî îïåðàöèé ââîäà ✲ âûâîäà ÿâëÿþòñÿ ÷àñòüþ ñòàíäàðòíîé áèáëèîòåêè✳ ❰íè îïèñàíû â ÷àñòè ■■✳ ❰òäåëåíèå áèáëèîòåêè îò Pr❡❧✉❞❡ èìååò ïðåèìóùåñòâî â âèäå ñîêðàùåíèÿ ðàçìåðà è ñëîæíîñòè Pr❡❧✉❞❡✱ ïîçâîëÿÿ åìó áîëåå ëåãêî ñòàíîâèòüñÿ ÷àñòüþ ïðîãðàììû è ðàñøèðÿÿ ïðîñòðàíñòâî ïîëåçíûõ èìåí✱ äîñòóïíûõ ïðîãðàììèñòó✳ Pr❡❧✉❞❡ è ìîäóëè áèáëèîòåêè îòëè÷àþòñÿ îò äðóãèõ ìîäóëåé òåì✱ ÷òî èõ ñåìàíòèêà ✭íî íå èõ ðåàëèçàöèÿ✮ ÿâëÿåòñÿ íåèçìåííîé ÷àñòüþ îïðåäåëåíèÿ ÿçûêà ❍❛s❦❡❧❧✳ Ýòî îçíà÷àåò✱ íàïðèìåð✱ ÷òî êîìïèëÿòîð ìîæåò îïòèìèçèðîâàòü âûçîâû ôóíêöèé ❍❛s❦❡❧❧✱ íå ïðèíèìàÿ âî âíèìàíèå èñõîäíûé òåêñò Pr❡❧✉❞❡✳
✺✳✻✳✶
❒îäóëü
Pr❡❧✉❞❡
❒îäóëü
Pr❡❧✉❞❡ àâòîìàòè÷åñêè èìïîðòèðóåòñÿ âî âñå ìîäóëè✱ êàê åñëè áû áûëà
èíñòðóêöèÿ ❵✐♠♣♦rt ÿâíîãî îáúÿâëåíèÿ
Pr❡❧✉❞❡✬✱ åñëè è òîëüêî åñëè îí ✐♠♣♦rt✳ Ýòî óñëîâèå äëÿ ÿâíîãî
íå èìïîðòèðóåòñÿ ïîñðåäñòâîì èìïîðòà ïîçâîëÿåò âûáîðî÷íî
èìïîðòèðîâàòü ñóùíîñòè✱ îïðåäåëåííûå â Pr❡❧✉❞❡✱ òî÷íî òàê æå✱ êàê ñóùíîñòè èç ëþáîãî äðóãîãî ìîäóëÿ✳ Ñåìàíòèêà ñóùíîñòåé â
Pr❡❧✉❞❡
íà ❍❛s❦❡❧❧✱ äàííîé â ãëàâå ✽✳ ❮åêîòîðûå òèïû äàííûõ ✭íàïðèìåð✱ ñëîæåíèå
Pr❡❧✉❞❡✱ ✭íàïðèìåð✱ ■♥t✮
çàäàíà ññûëî÷íîé ðåàëèçàöèåé
íàïèñàííîé è ôóíêöèè
■♥t✮ íåëüçÿ çàäàòü íåïîñðåäñòâåííî íà ❍❛s❦❡❧❧✳ Òàê êàê îáðàáîòêà
òàêèõ ñóùíîñòåé çàâèñèò îò ðåàëèçàöèè✱ îíè ôîðìàëüíî íå îïèñàíû â ãëàâå ✽✳ Ðåàëèçàöèÿ
Pr❡❧✉❞❡
òàêæå ÿâëÿåòñÿ íåïîëíîé ïðè îáðàáîòêå êîðòåæåé✿ äîëæíî áûòü
áåñêîíå÷íîå ñåìåéñòâî êîðòåæåé è îáúÿâëåíèé èõ ýêçåìïëÿðîâ✱ íî ðåàëèçàöèÿ ëèøü çàäàåò ñõåìó✳ ➶ ãëàâå ✽ äàíî îïðåäåëåíèå ìîäóëÿ ìîäóëåé✿
Pr❡❧✉❞❡▲✐st✱ Pr❡❧✉❞❡■❖ è
Pr❡❧✉❞❡
ñ èñïîëüçîâàíèåì íåñêîëüêèõ äðóãèõ
òàê äàëåå✳ Ýòè ìîäóëè
íå
ÿâëÿþòñÿ ÷àñòüþ ❍❛s❦❡❧❧
✾✽✱ è èõ íåëüçÿ èìïîðòèðîâàòü îòäåëüíî✳ ❰íè ïðîñòî ïîìîãàþò îáúÿñíèòü ñòðóêòóðó ìîäóëÿ
Pr❡❧✉❞❡❀
èõ ñëåäóåò ðàññìàòðèâàòü êàê ÷àñòü åå ðåàëèçàöèè✱ à íå ÷àñòü
îïðåäåëåíèÿ ÿçûêà✳
✺✳✻✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮ ✺✳✻✳✷
✶✵✺
Ñîêðûòèå èìåí èç Pr❡❧✉❞❡
Ïðàâèëà î Pr❡❧✉❞❡ áûëè ðàçðàáîòàíû òàê✱ ÷òîáû èìåëàñü âîçìîæíîñòü èñïîëüçîâàòü èìåíà èç Pr❡❧✉❞❡ äëÿ íåñòàíäàðòíûõ öåëåé❀ òåì íå ìåíåå✱ êàæäûé ìîäóëü✱ êîòîðûé òàê äåëàåò✱ äîëæåí èìåòü îáúÿâëåíèå
✐♠♣♦rt✱
êîòîðîå äåëàåò ýòî íåñòàíäàðòíîå
èñïîëüçîâàíèå ÿâíûì✳ ❮àïðèìåð✿
♠♦❞✉❧❡ ❆✭ ♥✉❧❧✱ ♥♦♥◆✉❧❧ ✮ ✇❤❡r❡ ✐♠♣♦rt Pr❡❧✉❞❡ ❤✐❞✐♥❣✭ ♥✉❧❧ ✮ ♥✉❧❧✱ ♥♦♥◆✉❧❧ ✿✿ ■♥t ✲❃ ❇♦♦❧ ♥✉❧❧ ① ❂ ① ❂❂ ✵ ♥♦♥◆✉❧❧ ① ❂ ♥♦t ✭♥✉❧❧ ①✮ ❒îäóëü
❆
ïåðåîïðåäåëÿåò
â ïðàâîé ÷àñòè
❤✐❞✐♥❣✭♥✉❧❧✮
♥♦♥◆✉❧❧✳
♥✉❧❧
è ñîäåðæèò íåêâàëèôèöèðîâàííóþ ññûëêó íà
♥✉❧❧
Ïîñëåäíåå áûëî áû íåîäíîçíà÷íî áåç íàëè÷èÿ èíñòðóêöèè
â îáúÿâëåíèè
íåêâàëèôèöèðîâàííîå èìÿ
❆
✐♠♣♦rt Pr❡❧✉❞❡✳
✃àæäûé ìîäóëü✱ êîòîðûé èìïîðòèðóåò
è çàòåì ñîçäàåò íåêâàëèôèöèðîâàííóþ ññûëêó íà
äîëæåí òàêæå ðàçðåøèòü íåîäíîçíà÷íîå èñïîëüçîâàíèå
♥✉❧❧
♥✉❧❧✱ ❆✳
òàê æå✱ êàê ýòî äåëàåò
Òàêèì îáðàçîì✱ åñòü íåáîëüøàÿ îïàñíîñòü ñëó÷àéíî ñêðûòü èìåíà èç Pr❡❧✉❞❡✳ ➮ìååòñÿ âîçìîæíîñòü ñîçäàòü è èñïîëüçîâàòü äðóãîé ìîäóëü✱ êîòîðûé áóäåò ñëóæèòü âìåñòî Pr❡❧✉❞❡✳ ➬à èñêëþ÷åíèåì òîãî ôàêòà✱ ÷òî ìîäóëü Pr❡❧✉❞❡ íåÿâíî èìïîðòèðóåòñÿ â ëþáîé ìîäóëü✱ Pr❡❧✉❞❡ ÿâëÿåòñÿ îáû÷íûì ìîäóëåì ❍❛s❦❡❧❧❀ îí ÿâëÿåòñÿ îñîáåííûì òîëüêî â òîì✱ ÷òî îáðàùåíèå ê íåêîòîðûì ñóùíîñòÿì Pr❡❧✉❞❡ ïðîèñõîäèò ïîñðåäñòâîì ñïåöèàëüíûõ ñèíòàêñè÷åñêèõ êîíñòðóêöèé✳ Ïåðåîïðåäåëåíèå èìåí✱ èñïîëüçóåìûõ Pr❡✲ ❧✉❞❡✱ íå âëèÿåò íà çíà÷åíèå ýòèõ ñïåöèàëüíûõ êîíñòðóêöèé✳ ❮àïðèìåð✱ â
♠♦❞✉❧❡ ❇ ✇❤❡r❡ ✐♠♣♦rt Pr❡❧✉❞❡✭✮ ✐♠♣♦rt ▼②Pr❡❧✉❞❡ ❢ ① ❂ ✭①✱①✮ ❣ ① ❂ ✭✱✮ ① ① ❤ ① ❂ ❬①❪ ✰✰ ❬❪ ✐♠♣♦rt Pr❡❧✉❞❡✭✮ ïðåäîòâðàùàåò àâòîìàòè÷åñêèé èìïîðò Pr❡❧✉❞❡✱ â ✐♠♣♦rt ▼②Pr❡❧✉❞❡ ââîäèò â îáëàñòü âèäèìîñòè íåñòàíäàðòíîå íà÷àëî ✭♣r❡❧✉❞❡✮✳ Ñïåöèàëüíûé ñèíòàêñèñ äëÿ êîðòåæåé ✭íàïðèìåð✱ ✭①✱①✮ è ✭✱✮✮ è ñïèñêîâ ✭íàïðèìåð✱ ❬①❪ è ❬❪✮ ïðîäîëæàåò îáðàùàòüñÿ ê êîðòåæàì è ñïèñêàì✱ îïðåäåëåííûì ñòàíäàðòíûì Pr❡❧✉❞❡❀ íå ñóùåñòâóåò ñïîñîáà ïåðåîïðåäåëèòü çíà÷åíèå ❬①❪✱ íàïðèìåð✱ â òåðìèíàõ äðóãîé ðåàëèçàöèè ñïèñêîâ✳ Ñ äðóãîé ñòîðîíû✱ èñïîëüçîâàíèå ✰✰ íå ÿâëÿåòñÿ ñïåöèàëüíûì ñèíòàêñèñîì✱ ïîýòîìó îí îáðàùàåòñÿ ê ✰✰✱ èìïîðòèðîâàííîìó èç ▼②Pr❡❧✉❞❡✳
ÿâíîå îáúÿâëåíèå
òî âðåìÿ êàê îáúÿâëåíèå
❮åâîçìîæíî✱ òåì íå ìåíåå✱ ñêðûòü îáúÿâëåíèÿ îïðåäåëèòü íîâûé ýêçåìïëÿð äëÿ
❙❤♦✇ ❈❤❛r✳
✐♥st❛♥❝❡
â
Pr❡❧✉❞❡✳
❮àïðèìåð✱ íåëüçÿ
✶✵✻
✺✳✼
➹❐➚➶➚ ✺✳
❒❰➘Ó❐➮
Ðàçäåëüíàÿ êîìïèëÿöèÿ
➶ çàâèñèìîñòè îò èñïîëüçóåìîé ðåàëèçàöèè ❍❛s❦❡❧❧✱ ðàçäåëüíàÿ êîìïèëÿöèÿ âçàèìíî ðåêóðñèâíûõ ìîäóëåé ìîæåò ïîòðåáîâàòü✱ ÷òîáû èìïîðòèðîâàííûå ìîäóëè ñîäåðæàëè äîïîëíèòåëüíóþ èíôîðìàöèþ ñ òåì✱ ÷òîáû ê íèì ìîæíî áûëî îáðàòèòüñÿ ïðåæäå✱ ÷åì îíè áóäóò ñêîìïèëèðîâàíû✳ ßâíûå ñèãíàòóðû òèïîâ äëÿ âñåõ ýêñïîðòèðîâàííûõ çíà÷åíèé ìîãóò áûòü íåîáõîäèìû äëÿ òîãî✱ ÷òîáû ðàáîòàòü ñî âçàèìíîé ðåêóðñèåé✳ Òî÷íûå äåòàëè ðàçäåëüíîé êîìïèëÿöèè â ýòîì îïèñàíèè íå îïèñàíû✳
✺✳✽
➚áñòðàêòíûå òèïû äàííûõ
Ñïîñîáíîñòü
ýêñïîðòèðîâàòü
òèï
äàííûõ
áåç
åãî
êîíñòðóêòîðîâ
ïîçâîëÿåò
êîíñòðóèðîâàòü àáñòðàêòíûå òèïû äàííûõ ✭❆❉❚✮✳ ❮àïðèìåð✱ ❆❉❚ äëÿ ñòåêîâ ìîæíî îïðåäåëèòü òàê✿
♠♦❞✉❧❡ ❙t❛❝❦✭ ❙t❦❚②♣❡✱ ♣✉s❤✱ ♣♦♣✱ ❡♠♣t② ✮ ✇❤❡r❡ ❞❛t❛ ❙t❦❚②♣❡ ❛ ❂ ❊♠♣t②❙t❦ ⑤ ❙t❦ ❛ ✭❙t❦❚②♣❡ ❛✮ ♣✉s❤ ① s ❂ ❙t❦ ① s ♣♦♣ ✭❙t❦ ❴ s✮ ❂ s ❡♠♣t② ❂ ❊♠♣t②❙t❦ ❒îäóëè✱ èìïîðòèðóþùèå
❙t❛❝❦✱ íå ìîãóò ñîçäàâàòü çíà÷åíèÿ òèïà ❙t❦❚②♣❡✱ ïîòîìó ÷òî
îíè íå èìåþò äîñòóïà ê êîíñòðóêòîðàì òèïà✳ ➶ìåñòî ýòîãî îíè äîëæíû èñïîëüçîâàòü
♣✉s❤✱ ♣♦♣
è
❡♠♣t②✱
÷òîáû ñîçäàòü òàêèå çíà÷åíèÿ✳
Òàêæå èìååòñÿ âîçìîæíîñòü ñòðîèòü ❆❉❚ íà âåðõíåì óðîâíå ñóùåñòâóþùåãî òèïà ïîñðåäñòâîì èñïîëüçîâàíèÿ îáúÿâëåíèÿ
♥❡✇t②♣❡✳
❮àïðèìåð✱ ñòåêè ìîæíî îïðåäåëèòü
÷åðåç ñïèñêè✿
♠♦❞✉❧❡ ❙t❛❝❦✭ ❙t❦❚②♣❡✱ ♣✉s❤✱ ♣♦♣✱ ❡♠♣t② ✮ ✇❤❡r❡ ♥❡✇t②♣❡ ❙t❦❚②♣❡ ❛ ❂ ❙t❦ ❬❛❪ ♣✉s❤ ① ✭❙t❦ s✮ ❂ ❙t❦ ✭①✿s✮ ♣♦♣ ✭❙t❦ ✭❴✿s✮✮ ❂ ❙t❦ s ❡♠♣t② ❂ ❙t❦ ❬❪
➹ëàâà ✻
Ïðåäîïðåäåëåííûå òèïû è êëàññû ❍❛s❦❡❧❧ Pr❡❧✉❞❡ ñîäåðæèò ïðåäîïðåäåëåííûå êëàññû✱ òèïû è ôóíêöèè✱ êîòîðûå íåÿâíî èìïîðòèðóþòñÿ â êàæäóþ ïðîãðàììó íà ❍❛s❦❡❧❧✳ ➶ ýòîé ãëàâå ìû îïèøåì òèïû è êëàññû✱ íàõîäÿùèåñÿ â Pr❡❧✉❞❡✳ ➪îëüøèíñòâî ôóíêöèé íå îïèñàíû çäåñü ïîäðîáíî✱ ïîñêîëüêó èõ íàçíà÷åíèå ëåãêî ìîæíî ïîíÿòü èñõîäÿ èç èõ îïðåäåëåíèé✱ äàííûõ â ãëàâå ✽✳ ➘ðóãèå ïðåäîïðåäåëåííûå òèïû✱ òàêèå êàê ìàññèâû✱ êîìïëåêñíûå è ðàöèîíàëüíûå ÷èñëà✱ îïèñàíû â ÷àñòè ■■✳ ✻✳✶
Ñòàíäàðòíûå òèïû ❍❛s❦❡❧❧
Ýòè òèïû îïðåäåëåíû â ❍❛s❦❡❧❧ Pr❡❧✉❞❡✳ ×èñëîâûå òèïû îïèñàíû â ðàçäåëå ✻✳✹✳ Òàì✱ ãäå ýòî âîçìîæíî✱ äàåòñÿ îïðåäåëåíèå òèïà íà ❍❛s❦❡❧❧✳ ❮åêîòîðûå îïðåäåëåíèÿ ìîãóò íå áûòü ïîëíîñòüþ ñèíòàêñè÷åñêè ïðàâèëüíûìè✱ íî îíè âåðíî ïåðåäàþò ñìûñë ëåæàùåãî â îñíîâå òèïà✳ ✻✳✶✳✶
➪óëåâñêèé òèï
❞❛t❛ ❇♦♦❧
❂ ❋❛❧s❡ ⑤ ❚r✉❡ ❞❡r✐✈✐♥❣ ✭❘❡❛❞✱ ❙❤♦✇✱ ❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✮
➪óëåâñêèé òèï ❇♦♦❧ ÿâëÿåòñÿ ïåðå÷èñëåíèåì✳ ❰ñíîâíûå áóëåâñêèå ôóíêöèè ✖ ýòî ✫✫ ✭è✮✱ ⑤⑤ ✭èëè✮ è ♥♦t ✭íå✮✳ ➮ìÿ ♦t❤❡r✇✐s❡ ✭èíà÷å✮ îïðåäåëåíî êàê ❚r✉❡✱ ÷òîáû ñäåëàòü âûðàæåíèÿ✱ èñïîëüçóþùèå ñòðàæè✱ áîëåå óäîáî÷èòàåìûìè✳ ✻✳✶✳✷
Ñèìâîëû è ñòðîêè
Ñèìâîëüíûé òèï ❈❤❛r ÿâëÿåòñÿ ïåðå÷èñëåíèåì✱ ÷üè çíà÷åíèÿ ïðåäñòàâëÿþò ñîáîé ñèìâîëû ❯♥✐❝♦❞❡ ❬✶✶❪✳ ❐åêñè÷åñêèé ñèíòàêñèñ äëÿ ñèìâîëîâ îïðåäåëåí â ðàçäåëå ✷✳✻❀ ✶✵✼
✶✵✽
➹❐➚➶➚ ✻✳
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
ñèìâîëüíûå ëèòåðàëû ✖ ýòî êîíñòðóêòîðû áåç àðãóìåíòîâ â òèïå äàííûõ
❈❤❛r✳
Òèï
❈❤❛r ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññîâ ❘❡❛❞✱ ❙❤♦✇✱ ❊q✱ ❖r❞✱ ❊♥✉♠ è ❇♦✉♥❞❡❞✳ Ôóíêöèè t♦❊♥✉♠ è ❢r♦♠❊♥✉♠✱ êîòîðûå ÿâëÿþòñÿ ñòàíäàðòíûìè ôóíêöèÿìè èç êëàññà ❊♥✉♠✱ ñîîòâåòñòâåííî îòîáðàæàþò ñèìâîëû â òèï ■♥t è îáðàòíî✳ ❰áðàòèòå
âíèìàíèå✱
÷òî
êàæäûé
ñèìâîë
óïðàâëåíèÿ
❆❙❈■■
èìååò
íåñêîëüêî
ïðåäñòàâëåíèé â ñèìâîëüíûõ ëèòåðàëàõ✿ â âèäå ÷èñëîâîé ýñêåéï✲ïîñëåäîâàòåëüíîñòè✱
❭❫X ✳ ❭❛ è ❭❇❊▲✱ ❭❜ è ❭❇❙✱ ❭❢ è ❭❋❋✱ ❭r è ❭❈❘✱
â âèäå ìíåìîíè÷åñêîé ýñêåéï✲ïîñëåäîâàòåëüíîñòè ❆❙❈■■✱ è ïðåäñòàâëåíèå â âèäå ✃ðîìå òîãî✱ ðàâíîçíà÷íû ñëåäóþùèå ëèòåðàëû✿
❭t
è
❭❍❚✱ ❭✈
è
❭❱❚
è
❭♥
è
❭▲❋✳
Ñòðîêà ✖ ýòî ñïèñîê ñèìâîëîâ✿ t②♣❡ ❙tr✐♥❣
❂ ❬❈❤❛r❪
Ñòðîêè ìîæíî ñîêðàòèòü✱ èñïîëüçóÿ ëåêñè÷åñêèé ñèíòàêñèñ✱ îïèñàííûé â ðàçäåëå ✷✳✻✳ ❮àïðèìåð✱
✧❆ str✐♥❣✧
ÿâëÿåòñÿ ñîêðàùåíèåì ✭àááðåâèàòóðîé✮
❬ ✬❆✬✱✬ ✬✱✬s✬✱✬t✬✱✬r✬✱ ✬✐✬✱✬♥✬✱✬❣✬❪ ✻✳✶✳✸
Ñïèñêè
❞❛t❛ ❬❛❪ Ñïèñêè
✖
❂ ❬❪ ⑤ ❛ ✿ ❬❛❪
ýòî
ñïåöèàëüíûé
àëãåáðàè÷åñêèé
ñèíòàêñèñ✱
❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✮ òèï
îïèñàííûõ
äàííûõ â
äëÿ
ðàçäåëå
äâóõ
✸✳✼✳
êîíñòðóêòîðîâ✱
Ïåðâûé
èìåþùèõ
êîíñòðóêòîð
✖
ýòî
ïóñòîé ñïèñîê✱ êîòîðûé îáîçíà÷àåòñÿ ❵❬❪✬ ✭✏♥✐❧✑✮✱ âòîðîé ✖ ýòî ❵✿✬ ✭✏❝♦♥s✑✮✳ ❒îäóëü
Pr❡❧✉❞❡▲✐st ✭ñì✳ ðàçäåë ✽✳✶✮ îïðåäåëÿåò ìíîæåñòâî ñòàíäàðòíûõ ôóíêöèé íàä ñïèñêîì✳ ➚ðèôìåòè÷åñêèå ïîñëåäîâàòåëüíîñòè è îïèñàíèå ñïèñêà ✖ ýòî äâà óäîáíûõ ñèíòàêñèñà✱ èñïîëüçóåìûõ äëÿ çàïèñè ñïåöèàëüíûõ âèäîâ ñïèñêîâ✱ îíè îïèñàíû â ðàçäåëàõ ✸✳✶✵ è ✸✳✶✶ ñîîòâåòñòâåííî✳ Ñïèñêè ÿâëÿþòñÿ ýêçåìïëÿðîì êëàññîâ
❋✉♥❝t♦r
è
▼♦♥❛❞P❧✉s✳
✻✳✶✳✹
✃îðòåæè
❘❡❛❞✱ ❙❤♦✇✱ ❊q✱ ❖r❞✱ ▼♦♥❛❞✱
✃îðòåæè ✖ ýòî àëãåáðàè÷åñêèé òèï äàííûõ ñî ñïåöèàëüíûì ñèíòàêñèñîì✱ îïèñàííûì â ðàçäåëå ✸✳✽✳ Òèï êàæäîãî êîðòåæà èìååò îäèí êîíñòðóêòîð✳ ➶ñå êîðòåæè ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññîâ
❊q✱ ❖r❞✱ ❇♦✉♥❞❡❞✱ ❘❡❛❞✱ è ❙❤♦✇ ✭êîíå÷íî✱ ïðè óñëîâèè✱ ÷òî âñå èõ
ñîñòàâëÿþùèå òèïû ÿâëÿþòñÿ ýêçåìïëÿðàìè ýòèõ êëàññîâ✮✳ ❮åò íèêàêîé âåðõíåé ãðàíèöû ðàçìåðà êîðòåæà✱ íî íåêîòîðûå ðåàëèçàöèè ❍❛s❦❡❧❧ ìîãóò ñîäåðæàòü îãðàíè÷åíèÿ íà ðàçìåð êîðòåæåé è íà ýêçåìïëÿðû✱ ñâÿçàííûå ñ áîëüøèìè êîðòåæàìè✳ Òåì íå ìåíåå✱ êàæäàÿ ðåàëèçàöèÿ ❍❛s❦❡❧❧ äîëæíà ïîääåðæèâàòü êîðòåæè âïëîòü äî ✶✺ ðàçìåðà✱ íàðÿäó ñ ýêçåìïëÿðàìè êëàññîâ
❊q✱ ❖r❞✱ ❇♦✉♥❞❡❞✱ ❘❡❛❞
è
❙❤♦✇✳
✻✳✶✳
ÑÒ➚❮➘➚ÐÒ❮Û➴ Ò➮ÏÛ ❍❆❙❑❊▲▲
✶✵✾
Pr❡❧✉❞❡ è áèáëèîòåêè ñîäåðæàò îïðåäåëåíèÿ ôóíêöèé íàä êîðòåæàìè✱ òàêèõ êàê ③✐♣✱ äëÿ êîðòåæåé âïëîòü äî ✼ ðàçìåðà✳ ✃îíñòðóêòîð äëÿ êîðòåæà çàïèñûâàåòñÿ ïîñðåäñòâîì èãíîðèðîâàíèÿ âûðàæåíèé✱ ñîñåäñòâóþùèõ ñ çàïÿòûìè❀ òàêèì îáðàçîì✱ ✭①✱②✮ è ✭✱✮ ① ② îáîçíà÷àþò îäèí è òîò æå êîðòåæ✳ Òî æå ñàìîå îòíîñèòñÿ ê êîíñòðóêòîðàì òèïîâ êîðòåæåé❀ òàêèì îáðàçîì✱ ✭■♥t✱❇♦♦❧✱■♥t✮ è ✭➼✮ ■♥t ❇♦♦❧ ■♥t îáîçíà÷àþò îäèí è òîò æå òèï✳ Ñëåäóþùèå ôóíêöèè îïðåäåëåíû äëÿ ïàð ✭êîðòåæåé ✷ ðàçìåðà✮✿ ❢st✱ s♥❞✱ ❝✉rr② è ✉♥❝✉rr②✳ ➘ëÿ êîðòåæåé áîëüøåãî ðàçìåðà ïîäîáíûå ôóíêöèè íå ÿâëÿþòñÿ ïðåäîïðåäåëåííûìè✳ ✻✳✶✳✺
➴äèíè÷íûé òèï äàííûõ
❞❛t❛ ✭✮ ❂ ✭✮ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❇♦✉♥❞❡❞✱ ❊♥✉♠✱ ❘❡❛❞✱ ❙❤♦✇✮
➴äèíè÷íûé òèï äàííûõ ✭✮ èìååò åäèíñòâåííûé✱ îòëè÷íûé îò ⊥✱ ÷ëåí ✖ êîíñòðóêòîð áåç àðãóìåíòîâ ✭✮✳ Ñì✳ òàêæå ðàçäåë ✸✳✾✳ ✻✳✶✳✻
Òèïû ôóíêöèé
Ôóíêöèè ✖ ýòî àáñòðàêòíûé òèï✿ íèêàêèå êîíñòðóêòîðû íåïîñðåäñòâåííî íå ñîçäàþò çíà÷åíèÿ ôóíêöèé✳ ➶ Pr❡❧✉❞❡ îïèñàíû ñëåäóþùèå ïðîñòûå ôóíêöèè✿ ✐❞✱ ❝♦♥st✱ ✭✳✮✱ ❢❧✐♣✱ ✭✩✮ è ✉♥t✐❧✳ ✻✳✶✳✼
Òèïû ■❖ è ■❖❊rr♦r
Òèï ■❖ óêàçûâàåò íà îïåðàöèè✱ êîòîðûå âçàèìîäåéñòâóþò ñ âíåøíèì ìèðîì✳ Òèï ■❖ ÿâëÿåòñÿ àáñòðàêòíûì✿ íèêàêèå êîíñòðóêòîðû íå âèäíû äëÿ ïîëüçîâàòåëÿ✳ ■❖ ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññîâ ▼♦♥❛❞ è ❋✉♥❝t♦r✳ ➶ ãëàâå ✼ îïèñûâàþòñÿ îïåðàöèè ââîäà ✲ âûâîäà✳ Òèï ■❖❊rr♦r ÿâëÿåòñÿ àáñòðàêòíûì òèïîì✱ êîòîðûé ïðåäñòàâëÿåò îøèáêè✱ âûçâàííûå îïåðàöèÿìè ââîäà ✲ âûâîäà✳ ❰í ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññîâ ❙❤♦✇ è ❊q✳ ➬íà÷åíèÿ ýòîãî òèïà ñîçäàþòñÿ ðàçëè÷íûìè ôóíêöèÿìè ââîäà ✲ âûâîäà✳ ➪îëåå ïîäðîáíàÿ èíôîðìàöèÿ î çíà÷åíèÿõ â ýòîì îïèñàíèè íå ïðåäñòàâëåíà✳ Pr❡❧✉❞❡ ñîäåðæèò íåñêîëüêî ôóíêöèé ââîäà ✲ âûâîäà ✭îïðåäåëåíû â ðàçäåëå ✽✳✸✮✳ ➹îðàçäî áîëüøå ôóíêöèé ââîäà ✲ âûâîäà ñîäåðæèò ÷àñòü ■■✳ ✻✳✶✳✽
❞❛t❛ ❞❛t❛ ❞❛t❛
➘ðóãèå òèïû
▼❛②❜❡ ❛ ❂ ◆♦t❤✐♥❣ ⑤ ❏✉st ❛ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮ ❊✐t❤❡r ❛ ❜ ❂ ▲❡❢t ❛ ⑤ ❘✐❣❤t ❜ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮ ❖r❞❡r✐♥❣ ❂ ▲❚ ⑤ ❊◗ ⑤ ●❚ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❇♦✉♥❞❡❞✱ ❊♥✉♠✱ ❘❡❛❞✱ ❙❤♦✇✮
✶✶✵
➹❐➚➶➚ ✻✳
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
Òèï ▼❛②❜❡ ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññîâ ❋✉♥❝t♦r✱ ▼♦♥❛❞ è ▼♦♥❛❞P❧✉s✳ Òèï ❖r❞❡r✐♥❣ èñïîëüçóåòñÿ ôóíêöèåé ❝♦♠♣❛r❡ â êëàññå ❖r❞✳ Ôóíêöèè ♠❛②❜❡ è ❡✐t❤❡r îïèñàíû â Pr❡✲ ❧✉❞❡✳ ✻✳✷
Ñòðîãîå âû÷èñëåíèå
Ïðèìåíåíèå ôóíêöèé â ❍❛s❦❡❧❧ íå ÿâëÿåòñÿ ñòðîãèì✱ òî åñòü àðãóìåíò ôóíêöèè âû÷èñëÿåòñÿ òîëüêî òîãäà✱ êîãäà òðåáóåòñÿ çíà÷åíèå✳ ➮íîãäà æåëàòåëüíî âûçâàòü âû÷èñëåíèå çíà÷åíèÿ✱ èñïîëüçóÿ ôóíêöèþ s❡q ✿ s❡q ✿✿ ❛ ✲❃ ❜ ✲❃ ❜
Ôóíêöèÿ s❡q îïðåäåëåíà óðàâíåíèÿìè✿ s❡q ⊥ b = ⊥ s❡q a b = b, if a 6= ⊥
Ôóíêöèÿ s❡q îáû÷íî ââîäèòñÿ äëÿ òîãî✱ ÷òîáû óëó÷øèòü ïðîèçâîäèòåëüíîñòü çà ñ÷åò èçáåæàíèÿ íåíóæíîé ëåíèâîñòè✳ Ñòðîãèå òèïû äàííûõ ✭ñì✳ ðàçäåë ✹✳✷✳✶✮ îïðåäåëåíû â òåðìèíàõ îïåðàòîðà ✩✦✳ Òåì íå ìåíåå✱ íàëè÷èå ôóíêöèè s❡q èìååò âàæíûå ñåìàíòè÷åñêèå ïîñëåäñòâèÿ✱ ïîòîìó ÷òî ýòà ôóíêöèÿ äîñòóïíà äëÿ êàæäîãî òèïà✳ ✃àê ñëåäñòâèå✱ ⊥ ✖ ýòî íå òî æå ñàìîå✱ ÷òî ❭① ✲❃ ⊥✱ òàê êàê ìîæíî èñïîëüçîâàòü s❡q äëÿ òîãî✱ ÷òîáû îòëè÷èòü èõ äðóã îò äðóãà✳ Ïî òîé æå ñàìîé ïðè÷èíå ñóùåñòâîâàíèå s❡q îñëàáëÿåò ïàðàìåòðè÷åñêèå ñâîéñòâà ❍❛s❦❡❧❧✳ ❰ïåðàòîð ✩✦ ÿâëÿåòñÿ ñòðîãèì ✭âûçûâàåìûì ïî çíà÷åíèþ✮ ïðèìåíåíèåì✱ îí îïðåäåëåí â òåðìèíàõ s❡q✳ Pr❡❧✉❞❡ òàêæå ñîäåðæèò îïðåäåëåíèå îïåðàòîðà ✩ äëÿ âûïîëíåíèÿ íåñòðîãèõ ïðèìåíåíèé✳ ✐♥❢✐①r ✵ ✩✱ ✩✦ ✭✩✮✱ ✭✩✦✮ ✿✿ ✭❛ ✲❃ ❜✮ ✲❃ ❛ ✲❃ ❜ ❢ ✩ ① ❂ ❢ ① ❢ ✩✦ ① ❂ ① ❵s❡q❵ ❢ ①
❮àëè÷èå îïåðàòîðà íåñòðîãîãî ïðèìåíåíèÿ ✩ ìîæåò êàçàòüñÿ èçáûòî÷íûì✱ òàê êàê îáû÷íîå ïðèìåíåíèå ✭❢ ①✮ îçíà÷àåò òî æå ñàìîå✱ ÷òî ✭❢ ✩ ①✮✳ Òåì íå ìåíåå✱ ✩ èìååò íèçêèé ïðèîðèòåò è ïðàâóþ àññîöèàòèâíîñòü✱ ïîýòîìó èíîãäà êðóãëûå ñêîáêè ìîæíî îïóñòèòü✱ íàïðèìåð✿ ❢ ✩ ❣ ✩ ❤ ① ❂
❢ ✭❣ ✭❤ ①✮✮
Ýòî òàêæå ïîëåçíî â ñèòóàöèÿõ áîëåå âûñîêîãî ïîðÿäêà✱ òàêèõ êàê ♠❛♣
③✐♣❲✐t❤ ✭✩✮ ❢s ①s✳
✭✩ ✵✮ ①s
èëè
✻✳✸✳
✶✶✶
ÑÒ➚❮➘➚ÐÒ❮Û➴ ✃❐➚ÑÑÛ ❍❆❙❑❊▲▲
✻✳✸
Ñòàíäàðòíûå êëàññû ❍❛s❦❡❧❧
❮à ðèñ✳ ✻✳✶ èçîáðàæåíà èåðàðõèÿ êëàññîâ ❍❛s❦❡❧❧✱ îïðåäåëåííûõ â Pr❡❧✉❞❡✱ è òèïû èç Pr❡❧✉❞❡✱ êîòîðûå ÿâëÿþòñÿ ýêçåìïëÿðàìè ýòèõ êëàññîâ✳ ➘ëÿ ìíîãèõ ìåòîäîâ â ñòàíäàðòíûõ êëàññàõ ïðåäóñìîòðåíû çàäàííûå ïî óìîë÷àíèþ îáúÿâëåíèÿ îáúÿâëåíèÿ
ìåòîäîâ
❝❧❛ss
êëàññà
✭ðàçäåë
✹✳✸✮✳
✃îììåíòàðèé✱
äàííûé
äëÿ
êàæäîãî
â ãëàâå ✽✱ îïðåäåëÿåò íàèìåíüøóþ ñîâîêóïíîñòü îïðåäåëåíèé
ìåòîäîâ✱ êîòîðûå âìåñòå ñ çàäàííûìè ïî óìîë÷àíèþ îáúÿâëåíèÿìè îáåñïå÷èâàþò ðàçóìíîå îïðåäåëåíèå äëÿ âñåõ ìåòîäîâ êëàññà✳ ➴ñëè òàêîãî êîììåíòàðèÿ íåò✱ òî äëÿ òîãî✱ ÷òîáû ïîëíîñòüþ îïðåäåëèòü ýêçåìïëÿð✱ äîëæíû áûòü çàäàíû âñå ìåòîäû êëàññà✳
✻✳✸✳✶
✃ëàññ ❊q
❝❧❛ss ❊q ❛ ✇❤❡r❡ ✭❂❂✮✱ ✭✴❂✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❇♦♦❧ ① ✴❂ ② ① ❂❂ ② ✃ëàññ
✭✴❂✮✳
❊q ➶ñå
❂ ♥♦t ✭① ❂❂ ②✮ ❂ ♥♦t ✭① ✴❂ ②✮
ïðåäîñòàâëÿåò ìåòîäû äëÿ ñðàâíåíèÿ íà ðàâåíñòâî ✭❂❂✮ è íåðàâåíñòâî îñíîâíûå
òèïû
äàííûõ✱
çà
ôóíêöèé è ■❖✱ ÿâëÿþòñÿ ❊q ìîæíî èñïîëüçîâàòü äëÿ âûâåäåíèÿ
èñêëþ÷åíèåì
ýêçåìïëÿðàìè ýòîãî êëàññà✳ Ýêçåìïëÿðû êëàññà
ëþáîãî îïðåäåëÿåìîãî ïîëüçîâàòåëåì òèïà äàííûõ✱ ÷üè êîìïîíåíòû òàêæå ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññà
❊q✳
Ýòî îáúÿâëåíèå çàäàåò èñïîëüçóåìûå ïî óìîë÷àíèþ îáúÿâëåíèÿ ìåòîäîâ
✴❂
è
❂❂✱
êàæäûé èç êîòîðûõ îïðåäåëåí â òåðìèíàõ äðóãîãî✳ ➴ñëè îáúÿâëåíèå ýêçåìïëÿðà êëàññà ❊q íå ñîäåðæèò îïèñàíèÿ íè îäíîãî èç ïåðå÷èñëåííûõ ìåòîäîâ✱ òîãäà îáà ìåòîäà îáðàçóþò ïåòëþ✳ ➴ñëè îïðåäåëåí îäèí èç ìåòîäîâ✱ òî äðóãîé✱ çàäàííûé ïî óìîë÷àíèþ ìåòîä✱ áóäåò èñïîëüçîâàòü òîò✱ êîòîðûé îïðåäåëåí✳ ➴ñëè îáà ìåòîäà îïðåäåëåíû✱ çàäàííûå ïî óìîë÷àíèþ ìåòîäû èñïîëüçîâàòüñÿ íå áóäóò✳
✶✶✷
➹❐➚➶➚ ✻✳
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
Ðèñ✳ ✻✳✶✿ Ñòàíäàðòíûå êëàññû ❍❛s❦❡❧❧
✻✳✸✳
ÑÒ➚❮➘➚ÐÒ❮Û➴ ✃❐➚ÑÑÛ ❍❆❙❑❊▲▲
✻✳✸✳✷
✶✶✸
✃ëàññ ❖r❞
❝❧❛ss ✭❊q ❛✮ ❂❃ ❖r❞ ❛ ❝♦♠♣❛r❡ ✭❁✮✱ ✭❁❂✮✱ ✭❃❂✮✱ ✭❃✮ ♠❛①✱ ♠✐♥
✇❤❡r❡ ✿✿ ❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣ ✿✿ ❛ ✲❃ ❛ ✲❃ ❇♦♦❧ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛
❝♦♠♣❛r❡ ① ② ⑤ ① ❂❂ ② ❂ ❊◗ ⑤ ① ❁❂ ② ❂ ▲❚ ⑤ ♦t❤❡r✇✐s❡ ❂ ●❚ ① ① ① ①
❁❂ ❁ ❃❂ ❃
② ② ② ②
❂ ❂ ❂ ❂
❝♦♠♣❛r❡ ❝♦♠♣❛r❡ ❝♦♠♣❛r❡ ❝♦♠♣❛r❡
① ① ① ①
② ② ② ②
✴❂ ❂❂ ✴❂ ❂❂
✲✲ ➬àìåòüòå✱ ÷òî ✭♠✐♥ ♠❛① ① ② ⑤ ① ❁❂ ② ❂ ⑤ ♦t❤❡r✇✐s❡ ❂ ♠✐♥ ① ② ⑤ ① ❁❂ ② ❂ ⑤ ♦t❤❡r✇✐s❡ ❂ ✃ëàññ
❖r❞
òèïû
äàííûõ✱
ýòîãî
êëàññà✳
●❚ ▲❚ ▲❚ ●❚
① ②✱ ♠❛① ① ②✮ ❂ ✭①✱②✮ èëè ✭②✱①✮ ② ① ① ②
èñïîëüçóåòñÿ äëÿ ïîëíîñòüþ óïîðÿäî÷åííûõ òèïîâ äàííûõ✳ ➶ñå îñíîâíûå
îïðåäåëÿåìîãî ❰áúÿâëåííûé
çà
èñêëþ÷åíèåì
Ýêçåìïëÿðû
ïîëüçîâàòåëåì ïîðÿäîê
ôóíêöèé✱
êëàññà
❖r❞
òèïà
êîíñòðóêòîðîâ
ïðîèçâîäíûõ ýêçåìïëÿðàõ êëàññà
❖r❞✳
■❖
ìîæíî
äàííûõ✱ â
è
■❖❊rr♦r✱
ÿâëÿþòñÿ
èñïîëüçîâàòü ÷üè
êîìïîíåíòû
îáúÿâëåíèè
Òèï äàííûõ
äëÿ
äàííûõ
❖r❞❡r✐♥❣
ýêçåìïëÿðàìè
âûâåäåíèÿ
ëþáîãî
íàõîäÿòñÿ
â
îïðåäåëÿåò
❖r❞✳
ïîðÿäîê
â
ïîçâîëÿåò èñïîëüçîâàòü
åäèíîîáðàçíîå ñðàâíåíèå äëÿ îïðåäåëåíèÿ òî÷íîãî ïîðÿäêà äâóõ îáúåêòîâ✳
➬àäàííûå ïî óìîë÷àíèþ îáúÿâëåíèÿ ïîçâîëÿþò ïîëüçîâàòåëþ ñîçäàâàòü ýêçåìïëÿðû êëàññà
❖r❞ ïîñðåäñòâîì ôóíêöèè ❝♦♠♣❛r❡ ñ îïðåäåëåííûì òèïîì èëè ôóíêöèé ❂❂ è ❁❂
ñ îïðåäåëåííûì òèïîì✳
✶✶✹
➹❐➚➶➚ ✻✳
✻✳✸✳✸
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
✃ëàññû ❘❡❛❞ è ❙❤♦✇
t②♣❡ ❘❡❛❞❙ ❛ ❂ ❙tr✐♥❣ ✲❃ ❬✭❛✱❙tr✐♥❣✮❪ t②♣❡ ❙❤♦✇❙ ❂ ❙tr✐♥❣ ✲❃ ❙tr✐♥❣ ❝❧❛ss ❘❡❛❞ ❛ ✇❤❡r❡ r❡❛❞sPr❡❝ ✿✿ ■♥t ✲❃ ❘❡❛❞❙ ❛ r❡❛❞▲✐st ✿✿ ❘❡❛❞❙ ❬❛❪ ✲✲ ✳✳✳ îáúÿâëåíèå r❡❛❞▲✐st ïî óìîë÷àíèþ äàíî â Pr❡❧✉❞❡ ❝❧❛ss ❙❤♦✇ ❛ s❤♦✇sPr❡❝ s❤♦✇ s❤♦✇▲✐st
✇❤❡r❡ ✿✿ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ✿✿ ❛ ✲❃ ❙tr✐♥❣ ✿✿ ❬❛❪ ✲❃ ❙❤♦✇❙
s❤♦✇sPr❡❝ ❴ ① s ❂ s❤♦✇ ① ✰✰ s s❤♦✇ ① ❂ s❤♦✇sPr❡❝ ✵ ① ✲✲ ✳✳✳ îáúÿâëåíèå äëÿ s❤♦✇▲✐st ïî óìîë÷àíèþ äàíî â Pr❡❧✉❞❡ ✃ëàññû
❘❡❛❞
è
❙❤♦✇
èñïîëüçóþòñÿ äëÿ ïðåîáðàçîâàíèÿ çíà÷åíèé ê òèïó ñòðîêà èëè
ïðåîáðàçîâàíèÿ ñòðîê ê äðóãèì çíà÷åíèÿì✳ ➚ðãóìåíò òèïà è
r❡❛❞sPr❡❝
■♥t
â ôóíêöèÿõ
s❤♦✇sPr❡❝
çàäàåò ïðèîðèòåò âíåøíåãî êîíòåêñòà ✭ñì✳ ðàçäåë ✶✵✳✹✮✳
s❤♦✇sPr❡❝ è s❤♦✇▲✐st âîçâðàùàþò ôóíêöèþ✱ äåéñòâóþùóþ èç ❙tr✐♥❣ â ❙tr✐♥❣✱ êîòîðàÿ îáåñïå÷èâàåò ïîñòîÿííóþ êîíêàòåíàöèþ èõ ðåçóëüòàòîâ ïîñðåäñòâîì èñïîëüçîâàíèÿ êîìïîçèöèè ôóíêöèé✳ Òàêæå èìååòñÿ ñïåöèàëèçèðîâàííûé âàðèàíò èñïîëüçóåò íóëåâîé ïðèîðèòåò êîíòåêñòà è âîçâðàùàåò îáû÷íûé
s❤♦✇▲✐st
s❤♦✇✱ êîòîðûé ❙tr✐♥❣✳ ❒åòîä
ïðåäíàçíà÷åí äëÿ òîãî✱ ÷òîáû ïðåäîñòàâèòü ïðîãðàììèñòó âîçìîæíîñòü
çàäàòü ñïåöèàëèçèðîâàííûé ñïîñîá ïðåäñòàâëåíèÿ ñïèñêîâ çíà÷åíèé✳ Ýòî îñîáåííî ïîëåçíî äëÿ òèïà
❈❤❛r✱ ãäå çíà÷åíèÿ òèïà ❙tr✐♥❣ äîëæíû áûòü ïðåäñòàâëåíû â äâîéíûõ
êàâû÷êàõ✱ à íå â êâàäðàòíûõ ñêîáêàõ✳ Ïðîèçâîäíûå ýêçåìïëÿðû êëàññîâ
❘❡❛❞
è
❙❤♦✇
êîïèðóþò ñòèëü✱ â êîòîðîì îáúÿâëåí
êîíñòðóêòîð✿ äëÿ ââîäà è âûâîäà èñïîëüçóþòñÿ èíôèêñíûå êîíñòðóêòîðû è èìåíà ïîëåé✳ Ñòðîêè✱ ïîðîæäàåìûå ➶ñå òèïû
Pr❡❧✉❞❡✱
ôóíêöèè
îáû÷íî ìîãóò áûòü ïðî÷èòàíû
çà èñêëþ÷åíèåì ôóíêöèîíàëüíûõ òèïîâ è òèïîâ
ýêçåìïëÿðàìè êëàññîâ ñäåëàòü
s❤♦✇sPr❡❝✱
è
❙❤♦✇
òèïû
è
■❖
❘❡❛❞✳
r❡❛❞sPr❡❝✳
■❖
✱ ÿâëÿþòñÿ
✭➴ñëè æåëàòåëüíî✱ ïðîãðàììèñò ìîæåò ëåãêî
✭ïóñòûìè✮
ýêçåìïëÿðàìè
êëàññà
❙❤♦✇✱
îáåñïå÷èâ
îáúÿâëåíèå ýêçåìïëÿðà✳✮ ➘ëÿ
óäîáñòâà
ôóíêöèè✿
èñïîëüçîâàíèÿ
Pr❡❧✉❞❡
îáåñïå÷èâàåò
ñëåäóþùèå
âñïîìîãàòåëüíûå
✻✳✸✳
✶✶✺
ÑÒ➚❮➘➚ÐÒ❮Û➴ ✃❐➚ÑÑÛ ❍❆❙❑❊▲▲
r❡❛❞s r❡❛❞s
✿✿ ✭❘❡❛❞ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ❂ r❡❛❞sPr❡❝ ✵
s❤♦✇s s❤♦✇s
✿✿ ✭❙❤♦✇ ❛✮ ❂❃ ❛ ✲❃ ❙❤♦✇❙ ❂ s❤♦✇sPr❡❝ ✵
r❡❛❞ ✿✿ ✭❘❡❛❞ ❛✮ ❂❃ ❙tr✐♥❣ ✲❃ ❛ r❡❛❞ s ❂ ❝❛s❡ ❬① ⑤ ✭①✱t✮ ❁✲ r❡❛❞s s✱ ✭✱✮ ❁✲ ❧❡① t❪ ♦❢ ❬①❪ ✲❃ ① ❬❪ ✲❃ ❡rr♦r ✧Pr❡❧✉❞❡❚❡①t✳r❡❛❞✿ íåò ðàçáîðà✧ ❴ ✲❃ ❡rr♦r ✧Pr❡❧✉❞❡❚❡①t✳r❡❛❞✿ íåîäíîçíà÷íûé ðàçáîð✧ s❤♦✇s
è
r❡❛❞s
èñïîëüçóþò çàäàííûé ïî óìîë÷àíèþ íóëåâîé ïðèîðèòåò✳ Ôóíêöèÿ
r❡❛❞
ñ÷èòûâàåò ââîä èç ñòðîêè✱ êîòîðàÿ äîëæíà áûòü ïîëíîñòüþ ïîòðåáëåíà ïðîöåññîì ââîäà✳ Ôóíêöèÿ
❧❡① ✿✿ ❘❡❛❞❙ ❙tr✐♥❣✱
èñïîëüçóåìàÿ ôóíêöèåé
r❡❛❞✱
òàêæå ÿâëÿåòñÿ ÷àñòüþ
Pr❡❧✉❞❡✳ ❰íà ñ÷èòûâàåò èç ââîäà îäíó ëåêñåìó✱ èãíîðèðóÿ ïðîáåëüíûå ñèìâîëû ïåðåä ëåêñåìîé✱ è âîçâðàùàåò ñèìâîëû✱ êîòîðûå ñîñòàâëÿþò ëåêñåìó✳ ➴ñëè âõîäíàÿ ñòðîêà ñîäåðæèò òîëüêî ïðîáåëüíûå ñèìâîëû✱
❧❡①
âîçâðàùàåò îäíó óñïåøíî ñ÷èòàííóþ
✏ëåêñåìó✑✱ ñîñòîÿùóþ èç ïóñòîé ñòðîêè✳ ✭Òàêèì îáðàçîì âõîäíîé ñòðîêè íåò äîïóñòèìîé ëåêñåìû✱
❬❪✮✳ ✻✳✸✳✹
❧❡①
❧❡①
❂
❬✭✱✮❪✳✮
➴ñëè â íà÷àëå
çàâåðøàåòñÿ ñ îøèáêîé ✭ò✳å✳ âîçâðàùàåò
✃ëàññ ❊♥✉♠
❝❧❛ss ❊♥✉♠ ❛ ✇❤❡r❡ s✉❝❝✱ ♣r❡❞ ✿✿ t♦❊♥✉♠ ✿✿ ❢r♦♠❊♥✉♠ ✿✿ ❡♥✉♠❋r♦♠ ✿✿ ❡♥✉♠❋r♦♠❚❤❡♥ ✿✿ ❡♥✉♠❋r♦♠❚♦ ✿✿ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ✿✿
❛ ✲❃ ❛ ■♥t ✲❃ ❛ ❛ ✲❃ ■♥t ❛ ✲❃ ❬❛❪ ✲✲ ❬♥✳✳❪ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ✲✲ ❬♥✱♥✬✳✳❪ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ✲✲ ❬♥✳✳♠❪ ❛ ✲❃ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ✲✲ ❬♥✱♥✬✳✳♠❪
✲✲ ➬àäàííûå ïî óìîë÷àíèþ îáúÿâëåíèÿ äàíû â Pr❡❧✉❞❡ ✃ëàññ
❊♥✉♠ îïðåäåëÿåò îïåðàöèè s✉❝❝ è ♣r❡❞ âîçâðàùàþò
Ôóíêöèè
íàä
ïîñëåäîâàòåëüíî
óïîðÿäî÷åííûìè
òèïàìè✳
ñîîòâåòñòâåííî ïîñëåäóþùèé è ïðåäøåñòâóþùèé
❢r♦♠❊♥✉♠ è t♦❊♥✉♠ ïðåîáðàçóþò ñîîòâåòñòâåííî ❊♥✉♠ ê òèïó ■♥t è çíà÷åíèÿ òèïà ■♥t ê òèïó ❊♥✉♠✳ ❒åòîäû✱ íà÷èíàþùèåñÿ
ýëåìåíò çàäàííîãî çíà÷åíèÿ✳ Ôóíêöèè çíà÷åíèÿ òèïà ñ
❡♥✉♠❋r♦♠ ✳✳✳✱ èñïîëüçóþòñÿ ïðè ïðåîáðàçîâàíèè àðèôìåòè÷åñêèõ ïîñëåäîâàòåëüíîñòåé
✭ðàçäåë ✸✳✶✵✮✳ Ýêçåìïëÿðû êëàññà
❊♥✉♠
ìîæíî èñïîëüçîâàòü äëÿ âûâåäåíèÿ ëþáîãî ïåðå÷èñëèìîãî
òèïà ✭òèïû✱ ÷üè êîíñòðóêòîðû íå èìåþò ïîëåé✮✱ ñì✳ ãëàâó ✶✵✳
✶✶✻
➹❐➚➶➚ ✻✳
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
➘ëÿ ëþáîãî òèïà✱ êîòîðûé ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà ❇♦✉♥❞❡❞✱ à òàêæå ýêçåìïëÿðîì êëàññà ❊♥✉♠✱ äîëæíû âûïîëíÿòüñÿ ñëåäóþùèå óñëîâèÿ✿ • •
•
➶ûçîâû s✉❝❝ ♠❛①❇♦✉♥❞ è ♣r❡❞ ♠✐♥❇♦✉♥❞ äîëæíû çàâåðøàòüñÿ ñ îøèáêîé âðåìåíè âûïîëíåíèÿ ïðîãðàììû✳ ❢r♦♠❊♥✉♠ è t♦❊♥✉♠ äîëæíû çàâåðøàòüñÿ ñ îøèáêîé âðåìåíè âûïîëíåíèÿ ïðîãðàììû✱ åñëè çíà÷åíèå ðåçóëüòàòà íå ïðåäñòàâèìî â óêàçàííîì òèïå ðåçóëüòàòà✳ ❮àïðèìåð✱ t♦❊♥✉♠ ✼ ✿✿ ❇♦♦❧ ÿâëÿåòñÿ îøèáêîé✳ ❡♥✉♠❋r♦♠ è ❡♥✉♠❋r♦♠❚❤❡♥ äîëæíû áûòü îïðåäåëåíû ñ íåÿâíûì óêàçàíèåì ãðàíèöû✱ òàê✿ ❡♥✉♠❋r♦♠ ① ❂ ❡♥✉♠❋r♦♠❚♦ ① ♠❛①❇♦✉♥❞ ❡♥✉♠❋r♦♠❚❤❡♥ ① ② ❂ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ① ② ❜♦✉♥❞ ✇❤❡r❡ ❜♦✉♥❞ ⑤ ❢r♦♠❊♥✉♠ ② ❃❂ ❢r♦♠❊♥✉♠ ① ❂ ♠❛①❇♦✉♥❞ ⑤ ♦t❤❡r✇✐s❡ ❂ ♠✐♥❇♦✉♥❞
Ñëåäóþùèå òèïû Pr❡❧✉❞❡ ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññà ❊♥✉♠✿ • •
•
Ïåðå÷èñëèìûå òèïû✿ ✭✮✱ ❇♦♦❧ è ❖r❞❡r✐♥❣✳ Ñåìàíòèêà ýòèõ ýêçåìïëÿðîâ îïèñàíà â ãëàâå ✶✵✳ ❮àïðèìåð✱ ❬▲❚✳✳❪ ✖ ñïèñîê ❬▲❚✱❊◗✱●❚❪✳ ❈❤❛r✿ ýêçåìïëÿð îïèñàí â ãëàâå ✽✱ áàçèðóåòñÿ íà ïðèìèòèâíûõ ôóíêöèÿõ✱ êîòîðûå îñóùåñòâëÿþò ïðåîáðàçîâàíèå ìåæäó ❈❤❛r è ■♥t✳ ❮àïðèìåð✱ ❡♥✉♠❋r♦♠❚♦ ✬❛✬ ✬③✬ îáîçíà÷àåò ñïèñîê ñòðî÷íûõ áóêâ â àëôàâèòíîì ïîðÿäêå✳ ×èñëîâûå òèïû✿ ■♥t✱ ■♥t❡❣❡r✱ ❋❧♦❛t✱ ❉♦✉❜❧❡✳ Ñåìàíòèêà ýòèõ ýêçåìïëÿðîâ îïèñàíà äàëåå✳
➘ëÿ âñåõ ÷åòûðåõ ÷èñëîâûõ òèïîâ s✉❝❝ äîáàâëÿåò ✶✱ à ♣r❡❞ âû÷èòàåò ✶✳ Ïðåîáðàçîâàíèÿ ❢r♦♠❊♥✉♠ è t♦❊♥✉♠ îñóùåñòâëÿþò ïðåîáðàçîâàíèå ìåæäó çàäàííûì òèïîì è òèïîì ■♥t✳ ➶ ñëó÷àå ❋❧♦❛t è ❉♦✉❜❧❡ öèôðû ïîñëå òî÷êè ìîãóò áûòü ïîòåðÿíû✳ ×òî âåðíåò ❢r♦♠❊♥✉♠✱ áóäó÷è ïðèìåíåííîé ê çíà÷åíèþ✱ êîòîðîå ñëèøêîì âåëèêî äëÿ òîãî✱ ÷òîáû óìåñòèòüñÿ â ■♥t✱ ✖ çàâèñèò îò ðåàëèçàöèè✳ ➘ëÿ òèïîâ ■♥t è ■♥t❡❣❡r ôóíêöèè ïåðå÷èñëåíèÿ èìåþò ñëåäóþùèé ñìûñë✿ • •
•
Ïîñëåäîâàòåëüíîñòü ❡♥✉♠❋r♦♠ e1 ✖ ýòî ñïèñîê ❬e1 ✱e1 + 1 ✱e1 + 2 ✱ . . . ❪✳ Ïîñëåäîâàòåëüíîñòü ❡♥✉♠❋r♦♠❚❤❡♥ e1 e2 ✖ ýòî ñïèñîê ❬e1 ✱e1 + i ✱e1 + 2i ✱ . . . ❪✱ ãäå ïðèðàùåíèå i ðàâíî e2 − e1 ✳ Ïðèðàùåíèå ìîæåò áûòü íóëåâîå èëè îòðèöàòåëüíîå✳ ➴ñëè ïðèðàùåíèå ðàâíî íóëþ✱ âñå ýëåìåíòû ñïèñêà ñîâïàäàþò✳ Ïîñëåäîâàòåëüíîñòü ❡♥✉♠❋r♦♠❚♦ e1 e3 ✖ ýòî ñïèñîê ❬e1 ✱e1 + 1 ✱e1 + 2 ✱ . . . e3 ❪✳ Ñïèñîê ïóñò✱ åñëè e1 > e3 ✳
✻✳✸✳
ÑÒ➚❮➘➚ÐÒ❮Û➴ ✃❐➚ÑÑÛ ❍❆❙❑❊▲▲
•
✶✶✼
Ïîñëåäîâàòåëüíîñòü
❡♥✉♠❋r♦♠❚❤❡♥❚♦ e1 e2 e3 ✖ ❬e1 ✱e1 + i ✱e1 + 2i ✱ . . . e3 ❪✱ ãäå ïðèðàùåíèå i ðàâíî e2 − e1 ✳
ýòî ñïèñîê ➴ñëè ïðèðàùåíèå ÿâëÿåòñÿ ïîëîæèòåëüíûì èëè íóëåâûì✱ ñïèñîê çàêàí÷èâàåòñÿ✱ êîãäà ñëåäóþùèé ýëåìåíò áóäåò áîëüøå ÷åì e3 ❀ ñïèñîê ïóñò✱ åñëè e1 > e3 ✳ ➴ñëè ïðèðàùåíèå ÿâëÿåòñÿ îòðèöàòåëüíûì✱ ñïèñîê çàêàí÷èâàåòñÿ✱ êîãäà ñëåäóþùèé ýëåìåíò áóäåò ìåíüøå ÷åì e3 ❀ ñïèñîê ïóñò✱ åñëè e1 < e3 ✳
➘ëÿ ❋❧♦❛t è ❉♦✉❜❧❡ ñåìàíòèêà ñåìåéñòâà ôóíêöèé ❡♥✉♠❋r♦♠ çàäàåòñÿ ñ ïîìîùüþ ïðàâèë✱ îïèñàííûõ âûøå äëÿ ■♥t✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî ñïèñîê çàêàí÷èâàåòñÿ✱ êîãäà ýëåìåíòû ñòàíóò áîëüøå ÷åì e3 + i /2 äëÿ ïîëîæèòåëüíîãî ïðèðàùåíèÿ i èëè êîãäà îíè ñòàíóò ìåíüøå ÷åì e3 + i /2 äëÿ îòðèöàòåëüíîãî i ✳ ➘ëÿ âñåõ ÷åòûðåõ ÷èñëîâûõ òèïîâ èç Pr❡❧✉❞❡ âñå ôóíêöèè ñåìåéñòâà ❡♥✉♠❋r♦♠ ÿâëÿþòñÿ ñòðîãèìè ïî âñåì ñâîèì ïàðàìåòðàì✳ ✻✳✸✳✺
✃ëàññ ❋✉♥❝t♦r
❝❧❛ss ❋✉♥❝t♦r ❢ ✇❤❡r❡ ❢♠❛♣ ✿✿ ✭❛ ✲❃ ❜✮ ✲❃ ❢ ❛ ✲❃ ❢ ❜
✃ëàññ ❋✉♥❝t♦r èñïîëüçóåòñÿ äëÿ òèïîâ✱ äëÿ êîòîðûõ ìîæíî óñòàíîâèòü ñîîòâåòñòâèå ✭çàäàòü îòîáðàæåíèå✮✳ Ñïèñêè✱ ■❖ è ▼❛②❜❡ âõîäÿò â ýòîò êëàññ✳ Ýêçåìïëÿðû êëàññà ❋✉♥❝t♦r äîëæíû óäîâëåòâîðÿòü ñëåäóþùèì óñëîâèÿì✿ ❢♠❛♣ ✐❞ = ✐❞ ❢♠❛♣ ✭❢ ✳ ❣✮ = ❢♠❛♣ ❢ ✳ ❢♠❛♣ ❣
➶ñå ýêçåìïëÿðû êëàññà óñëîâèÿì✳ ✻✳✸✳✻
❋✉♥❝t♦r✱
îïðåäåëåííûå â Pr❡❧✉❞❡✱ óäîâëåòâîðÿþò ýòèì
✃ëàññ ▼♦♥❛❞
❝❧❛ss ▼♦♥❛❞ ♠ ✭❃❃❂✮ ✿✿ ✭❃❃✮ ✿✿ r❡t✉r♥ ✿✿ ❢❛✐❧ ✿✿
✇❤❡r❡ ♠ ❛ ✲❃ ♠ ❛ ✲❃ ❛ ✲❃ ♠ ❙tr✐♥❣
✭❛ ✲❃ ♠ ❜✮ ✲❃ ♠ ❜ ♠ ❜ ✲❃ ♠ ❜ ❛ ✲❃ ♠ ❛
♠ ❃❃ ❦ ❂ ♠ ❃❃❂ ❭❴ ✲❃ ❦ ❢❛✐❧ s ❂ ❡rr♦r s
✃ëàññ ▼♦♥❛❞ îïðåäåëÿåò îñíîâíûå îïåðàöèè íàä ìîíàäàìè✳ ➘ëÿ ïîëó÷åíèÿ äîïîëíèòåëüíîé èíôîðìàöèè î ìîíàäàõ ñìîòðèòå ãëàâó ✼✳
✶✶✽
➹❐➚➶➚ ✻✳
✏ ❞♦✑✲âûðàæåíèÿ
ïðåäîñòàâëÿþò
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
óäîáíûé
❢❛✐❧
âûðàæåíèé ✭ñì✳ ðàçäåë ✸✳✶✹✮✳ ❒åòîä îáðàçöîì â
❞♦✲âûðàæåíèè✳ ■❖
äëÿ
çàïèñè
ìîíàäè÷åñêèõ
âûçûâàåòñÿ ïðè îøèáêå ñîïîñòàâëåíèÿ ñ
▼♦♥❛❞✳ ❒åòîä ❢❛✐❧ äëÿ ñïèñêîâ âîçâðàùàåò ïóñòîé ñïèñîê ❬❪✱ äëÿ ▼❛②❜❡ âîçâðàùàåò ◆♦t❤✐♥❣✱ à äëÿ ■❖ âûçûâàåò
➶ Pr❡❧✉❞❡ ñïèñêè✱
▼❛②❜❡
ñèíòàêñèñ
è
ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññà
çàäàííîå ïîëüçîâàòåëåì èñêëþ÷åíèå â ìîíàäå ■❖ ✭ñì✳ ðàçäåë ✼✳✸✮✳ Ýêçåìïëÿðû êëàññà
▼♦♥❛❞
äîëæíû óäîâëåòâîðÿòü ñëåäóþùèì óñëîâèÿì✿
r❡t✉r♥ ❛ ❃❃❂ ❦ = ❦ ❛ ♠ ❃❃❂ r❡t✉r♥ = ♠ ♠ ❃❃❂ ✭❭① ✲❃ ❦ ① ❃❃❂ ❤✮ = ✭♠ ❃❃❂ ❦✮ ❃❃❂ ❤ Ýêçåìïëÿðû êëàññîâ
▼♦♥❛❞
è
❋✉♥❝t♦r
äîëæíû äîïîëíèòåëüíî óäîâëåòâîðÿòü óñëîâèþ✿
❢♠❛♣ ❢ ①s = ①s ❃❃❂ r❡t✉r♥ ✳ ❢ ➶ñå ýêçåìïëÿðû êëàññà
▼♦♥❛❞✱
îïðåäåëåííûå â Pr❡❧✉❞❡✱ óäîâëåòâîðÿþò ýòèì óñëîâèÿì✳
Pr❡❧✉❞❡ îáåñïå÷èâàåò ñëåäóþùèå âñïîìîãàòåëüíûå ôóíêöèè✿
s❡q✉❡♥❝❡ s❡q✉❡♥❝❡❴ ♠❛♣▼ ♠❛♣▼❴ ✭❂❁❁✮
✻✳✸✳✼
✿✿ ✿✿ ✿✿ ✿✿ ✿✿
▼♦♥❛❞ ▼♦♥❛❞ ▼♦♥❛❞ ▼♦♥❛❞ ▼♦♥❛❞
♠ ♠ ♠ ♠ ♠
❂❃ ❂❃ ❂❃ ❂❃ ❂❃
❬♠ ❬♠ ✭❛ ✭❛ ✭❛
❛❪ ❛❪ ✲❃ ✲❃ ✲❃
✲❃ ♠ ✲❃ ♠ ♠ ❜✮ ♠ ❜✮ ♠ ❜✮
❬❛❪ ✭✮ ✲❃ ❬❛❪ ✲❃ ♠ ❬❜❪ ✲❃ ❬❛❪ ✲❃ ♠ ✭✮ ✲❃ ♠ ❛ ✲❃ ♠ ❜
✃ëàññ ❇♦✉♥❞❡❞
❝❧❛ss ❇♦✉♥❞❡❞ ❛ ✇❤❡r❡ ♠✐♥❇♦✉♥❞✱ ♠❛①❇♦✉♥❞ ✿✿ ❛ ✃ëàññ
❖r❞
❇♦✉♥❞❡❞
èñïîëüçóåòñÿ äëÿ èìåíîâàíèÿ âåðõíåé è íèæíåé ãðàíèö òèïà✳ ✃ëàññ
íå ÿâëÿåòñÿ ñóïåðêëàññîì êëàññà
❇♦✉♥❞❡❞✱
òàê êàê òèïû✱ êîòîðûå íå ÿâëÿþòñÿ
ïîëíîñòüþ óïîðÿäî÷åííûìè✱ ìîãóò òàêæå èìåòü âåðõíþþ è íèæíþþ ãðàíèöû✳ Òèïû
■♥t✱ ❈❤❛r✱ ❇♦♦❧✱ ✭✮✱ ❖r❞❡r✐♥❣ è âñå êîðòåæè ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññà ❇♦✉♥❞❡❞✳ ✃ëàññ ❇♦✉♥❞❡❞ ìîæíî èñïîëüçîâàòü äëÿ âûâåäåíèÿ ëþáîãî ïåðå÷èñëèìîãî òèïà❀ ♠✐♥❇♦✉♥❞ ÿâëÿåòñÿ ïåðâûì â ñïèñêå êîíñòðóêòîðîâ îáúÿâëåíèÿ ❞❛t❛✱ à ♠❛①❇♦✉♥❞ ✖ ïîñëåäíèì✳ ✃ëàññ ❇♦✉♥❞❡❞ ìîæíî òàêæå èñïîëüçîâàòü äëÿ âûâåäåíèÿ òèïîâ äàííûõ✱ ó êîòîðûõ îäèí êîíñòðóêòîð è òèïû êîìïîíåíòîâ íàõîäÿòñÿ â ❇♦✉♥❞❡❞✳
✻✳✹
×èñëà
❍❛s❦❡❧❧ ïðåäîñòàâëÿåò íåñêîëüêî âèäîâ ÷èñåë❀ íà ÷èñëîâûå òèïû è îïåðàöèè íàä íèìè
ñèëüíî
ïîâëèÿëè
❈♦♠♠♦♥
▲✐s♣
è
❙❝❤❡♠❡✳
➮ìåíà
÷èñëîâûõ
ôóíêöèé
è
✻✳✹✳
×➮Ñ❐➚
✶✶✾
îïåðàòîðû îáû÷íî ïåðåãðóæåíû ïîñðåäñòâîì èñïîëüçîâàíèÿ íåñêîëüêèõ êëàññîâ òèïîâ ñ îòíîøåíèåì âêëþ÷åíèÿ✱ êîòîðûå èçîáðàæåíû íà ðèñ✳ ✻✳✶✱ ñòð✳ ✶✶✷✳ ✃ëàññ ◆✉♠ ÷èñëîâûõ òèïîâ ÿâëÿåòñÿ ïîäêëàññîì êëàññà ❊q✱ òàê êàê âñå ÷èñëà ìîæíî ñðàâíèòü íà ðàâåíñòâî❀ åãî ïîäêëàññ ❘❡❛❧ òàêæå ÿâëÿåòñÿ ïîäêëàññîì êëàññà ❖r❞✱ òàê êàê îñòàëüíûå îïåðàöèè ñðàâíåíèÿ ïðèìåíèìû êî âñåì ÷èñëàì✱ çà èñêëþ÷åíèåì êîìïëåêñíûõ ✭îïðåäåëåííûõ â áèáëèîòåêå ❈♦♠♣❧❡①✮✳ ✃ëàññ ■♥t❡❣r❛❧ ñîäåðæèò öåëûå ÷èñëà îãðàíè÷åííîãî è íåîãðàíè÷åííîãî äèàïàçîíà❀ êëàññ ❋r❛❝t✐♦♥❛❧ ñîäåðæèò âñå íåöåëûå òèïû❀ à êëàññ ❋❧♦❛t✐♥❣ ñîäåðæèò âñå ÷èñëà ñ ïëàâàþùåé òî÷êîé✱ äåéñòâèòåëüíûå è êîìïëåêñíûå✳ ➶ Pr❡❧✉❞❡ îïðåäåëåíû òîëüêî íàèáîëåå îñíîâíûå ÷èñëîâûå òèïû✿ öåëûå ÷èñëà ôèêñèðîâàííîé òî÷íîñòè ✭■♥t✮✱ öåëûå ÷èñëà ïðîèçâîëüíîé òî÷íîñòè ✭■♥t❡❣❡r✮✱ ÷èñëà ñ ïëàâàþùåé òî÷êîé îäèíàðíîé òî÷íîñòè ✭❋❧♦❛t✮ è äâîéíîé òî÷íîñòè ✭❉♦✉❜❧❡✮✳ ❰ñòàëüíûå ÷èñëîâûå òèïû✱ òàêèå êàê ðàöèîíàëüíûå è êîìïëåêñíûå ÷èñëà✱ îïðåäåëåíû â áèáëèîòåêàõ✳ ➶ ÷àñòíîñòè òèï ❘❛t✐♦♥❛❧ ✖ ýòî îòíîøåíèå äâóõ çíà÷åíèé òèïà ■♥t❡❣❡r✱ îí îïðåäåëåí â áèáëèîòåêå ❘❛t✐♦✳ ➬àäàííûå ïî óìîë÷àíèþ îïåðàöèè íàä ÷èñëàìè ñ ïëàâàþùåé òî÷êîé✱ îïðåäåëåííûå â ❍❛s❦❡❧❧ Pr❡❧✉❞❡✱ íå ñîîòâåòñòâóþò òåêóùèì ñòàíäàðòàì íåçàâèñèìîé îò ÿçûêà àðèôìåòèêè ✭▲■❆✮✳ Ýòè ñòàíäàðòû òðåáóþò çíà÷èòåëüíî áîëüøåé ñëîæíîñòè â ÷èñëîâîé ñòðóêòóðå è ïîòîìó áûëè îòíåñåíû ê áèáëèîòåêå✳ ❮åêîòîðûå✱ íî íå âñå✱ àñïåêòû ñòàíäàðòà ■❊❊❊ ÷èñåë ñ ïëàâàþùåé òî÷êîé áûëè ó÷òåíû â êëàññå ❘❡❛❧❋❧♦❛t èç Pr❡✲ ❧✉❞❡✳ Ñòàíäàðòíûå ÷èñëîâûå òèïû ïåðå÷èñëåíû â òàáëèöå ✻✳✶✳ Òèï ■♥t öåëûõ ÷èñåë êîíå÷íîé òî÷íîñòè îõâàòûâàåò ïî ìåíüøåé ìåðå äèàïàçîí [ − 2 29 , 2 29 − 1 ]✳ Ïîñêîëüêó ■♥t ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññà ❇♦✉♥❞❡❞✱ äëÿ îïðåäåëåíèÿ òî÷íîãî äèàïàçîíà✱ çàäàííîãî ðåàëèçàöèåé✱ ìîæíî èñïîëüçîâàòü ♠❛①❇♦✉♥❞ è ♠✐♥❇♦✉♥❞✳ ❋❧♦❛t îïðåäåëÿåòñÿ ðåàëèçàöèåé❀ æåëàòåëüíî✱ ÷òîáû ýòîò òèï áûë ïî ìåíüøåé ìåðå ðàâåí ïî äèàïàçîíó è òî÷íîñòè òèïó ■❊❊❊ îäèíàðíîé òî÷íîñòè✳ ➚íàëîãè÷íî✱ òèï ❉♦✉❜❧❡ äîëæåí îõâàòûâàòü äèàïàçîí ÷èñåë ■❊❊❊ äâîéíîé òî÷íîñòè✳ Ðåçóëüòàòû èñêëþ÷èòåëüíûõ ñèòóàöèé ✭òàêèõ êàê âûõîä çà âåðõíþþ èëè íèæíþþ ãðàíèöó✮ äëÿ ÷èñåë ôèêñèðîâàííîé òî÷íîñòè íå îïðåäåëåíû❀ â çàâèñèìîñòè îò ðåàëèçàöèè ýòî ìîæåò áûòü îøèáêà ✭ ⊥✮✱ óñå÷åííîå çíà÷åíèå èëè ñïåöèàëüíîå çíà÷åíèå✱ òàêîå êàê áåñêîíå÷íîñòü✱ íåîïðåäåëåííîñòü è ò✳ä✳ Ñòàíäàðòíûå êëàññû ÷èñåë è äðóãèå ÷èñëîâûå ôóíêöèè✱ îïðåäåëåííûå â Pr❡❧✉❞❡✱ èçîáðàæåíû íà ðèñ✳ ✻✳✷✲✻✳✸✳ ❮à ðèñ✳ ✻✳✶ ïîêàçàíû çàâèñèìîñòè ìåæäó êëàññàìè è âñòðîåííûìè òèïàìè✱ êîòîðûå ÿâëÿþòñÿ ýêçåìïëÿðàìè ÷èñëîâûõ êëàññîâ✳ ✻✳✹✳✶
×èñëîâûå ëèòåðàëû
Ñèíòàêñèñ ÷èñëîâûõ ëèòåðàëîâ îïèñàí â ðàçäåëå ✷✳✺✳ Öåëûå ëèòåðàëû ïðåäñòàâëÿåò ñîáîé ïðèìåíåíèå ôóíêöèè ❢r♦♠■♥t❡❣❡r ê ñîîòâåòñòâóþùåìó çíà÷åíèþ òèïà ■♥t❡❣❡r✳ ➚íàëîãè÷íî✱ ëèòåðàëû ñ ïëàâàþùåé òî÷êîé îáîçíà÷àþò ïðèìåíåíèå ❢r♦♠❘❛t✐♦♥❛❧ ê çíà÷åíèþ òèïà ❘❛t✐♦♥❛❧ ✭òî åñòü ❘❛t✐♦ ■♥t❡❣❡r✮✳ Ñ ó÷åòîì çàäàííûõ òèïîâ
✶✷✵
➹❐➚➶➚ ✻✳
Òèï
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
✃ëàññ
■♥t❡❣❡r ■♥t ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❛t✐♦ ❛ ❋❧♦❛t
■♥t❡❣r❛❧ ■♥t❡❣r❛❧ ❘❡❛❧❋r❛❝ ❘❡❛❧❋❧♦❛t
❉♦✉❜❧❡
❘❡❛❧❋❧♦❛t
✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❈♦♠♣❧❡① ❛
❋❧♦❛t✐♥❣
❰ïèñàíèå Öåëûå ÷èñëà ïðîèçâîëüíîé òî÷íîñòè Öåëûå ÷èñëà ôèêñèðîâàííîé òî÷íîñòè Ðàöèîíàëüíûå ÷èñëà ➘åéñòâèòåëüíûå ÷èñëà ñ ïëàâàþùåé òî÷êîé îäèíàðíîé òî÷íîñòè ➘åéñòâèòåëüíûå ÷èñëà ñ ïëàâàþùåé òî÷êîé äâîéíîé òî÷íîñòè ✃îìïëåêñíûå ÷èñëà ñ ïëàâàþùåé òî÷êîé
Òàáëèöà ✻✳✶✿ Ñòàíäàðòíûå ÷èñëîâûå òèïû ❢r♦♠■♥t❡❣❡r ✿✿ ✭◆✉♠ ❛✮ ❂❃ ■♥t❡❣❡r ✲❃ ❛ ❢r♦♠❘❛t✐♦♥❛❧ ✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❘❛t✐♦♥❛❧ ✲❃ ❛
öåëûå ëèòåðàëû è ëèòåðàëû ñ ïëàâàþùåé òî÷êîé èìåþò ñîîòâåòñòâåííî òèï ✭◆✉♠ ❛✮ ❂❃ ❛ è ✭❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❛✳ ×èñëîâûå ëèòåðàëû îïðåäåëåíû êîñâåííûì îáðàçîì äëÿ òîãî✱ ÷òîáû èõ ìîæíî áûëî ðàññìàòðèâàòü êàê çíà÷åíèÿ ëþáîãî ïîäõîäÿùåãî ÷èñëîâîãî òèïà✳ ➶ ðàçäåëå ✹✳✸✳✹ ðàññìàòðèâàåòñÿ íåîäíîçíà÷íîñòü ïåðåãðóçêè✳ ✻✳✹✳✷
➚ðèôìåòè÷åñêèå è òåîðåòèêî✲÷èñëîâûå îïåðàöèè
➮íôèêñíûå ìåòîäû êëàññà ✭✰✮✱ ✭✯✮✱ ✭✲✮ è óíàðíàÿ ôóíêöèÿ ♥❡❣❛t❡ ✭êîòîðàÿ òàêæå ìîæåò áûòü çàïèñàíà êàê çíàê ìèíóñ✱ ñòîÿùèé ïåðåä àðãóìåíòîì✱ ñì✳ ðàçäåë ✸✳✹✮ ïðèìåíèìû êî âñåì ÷èñëàì✳ ❒åòîäû êëàññà q✉♦t✱ r❡♠✱ ❞✐✈ è ♠♦❞ ïðèìåíèìû òîëüêî ê öåëûì ÷èñëàì✱ òîãäà êàê ìåòîä êëàññà ✭✴✮ ïðèìåíèì òîëüêî ê äðîáíûì✳ ❒åòîäû êëàññà q✉♦t✱ r❡♠✱ ❞✐✈ è ♠♦❞ óäîâëåòâîðÿþò ñëåäóþùèì óñëîâèÿì✱ åñëè ② îòëè÷åí îò íóëÿ✿ ✭① ❵q✉♦t❵ ②✮✯② ✰ ✭① ❵r❡♠❵ ②✮ ❂❂ ① ✭① ❵❞✐✈❵ ②✮✯② ✰ ✭① ❵♠♦❞❵ ②✮ ❂❂ ①
❵q✉♦t❵ ✖ ýòî äåëåíèå íàöåëî ñ îêðóãëåíèåì â ñòîðîíó íóëÿ✱ òîãäà êàê ðåçóëüòàò ❵❞✐✈❵ îêðóãëÿåòñÿ â ñòîðîíó îòðèöàòåëüíîé áåñêîíå÷íîñòè✳ ❒åòîä êëàññà q✉♦t❘❡♠ ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ äåëèìîå è äåëèòåëü è âîçâðàùàåò ïàðó ✭÷àñòíîå✱ îñòàòîê✮❀ ❞✐✈▼♦❞
îïðåäåëåí àíàëîãè÷íî✿
q✉♦t❘❡♠ ① ② ❂ ✭① ❵q✉♦t❵ ②✱ ① ❵r❡♠❵ ②✮ ❞✐✈▼♦❞ ① ② ❂ ✭① ❵❞✐✈❵ ②✱ ① ❵♠♦❞❵ ②✮
Òàêæå äëÿ öåëûõ ÷èñåë îïðåäåëåíû ïðåäèêàòû ❡✈❡♥ ✭÷åòíûé✮ è ♦❞❞ ✭íå÷åòíûé✮✿ ❡✈❡♥ ① ❂ ① ❵r❡♠❵ ✷ ❂❂ ✵ ♦❞❞ ❂ ♥♦t ✳ ❡✈❡♥
✻✳✹✳
✶✷✶
×➮Ñ❐➚
❝❧❛ss ✭❊q ❛✱ ❙❤♦✇ ✭✰✮✱ ✭✲✮✱ ✭✯✮ ♥❡❣❛t❡ ❛❜s✱ s✐❣♥✉♠ ❢r♦♠■♥t❡❣❡r
❛✮ ✿✿ ✿✿ ✿✿ ✿✿
❂❃ ◆✉♠ ❛ ✇❤❡r❡ ❛ ✲❃ ❛ ✲❃ ❛ ❛ ✲❃ ❛ ❛ ✲❃ ❛ ■♥t❡❣❡r ✲❃ ❛
❝❧❛ss ✭◆✉♠ ❛✱ ❖r❞ ❛✮ ❂❃ ❘❡❛❧ ❛ ✇❤❡r❡ t♦❘❛t✐♦♥❛❧ ✿✿ ❛ ✲❃ ❘❛t✐♦♥❛❧ ❝❧❛ss ✭❘❡❛❧ ❛✱ ❊♥✉♠ ❛✮ q✉♦t✱ r❡♠✱ ❞✐✈✱ ♠♦❞ q✉♦t❘❡♠✱ ❞✐✈▼♦❞ t♦■♥t❡❣❡r
❂❃ ✿✿ ✿✿ ✿✿
■♥t❡❣r❛❧ ❛ ✇❤❡r❡ ❛ ✲❃ ❛ ✲❃ ❛ ❛ ✲❃ ❛ ✲❃ ✭❛✱❛✮ ❛ ✲❃ ■♥t❡❣❡r
❝❧❛ss ✭◆✉♠ ❛✮ ❂❃ ❋r❛❝t✐♦♥❛❧ ❛ ✇❤❡r❡ ✭✴✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ r❡❝✐♣ ✿✿ ❛ ✲❃ ❛ ❢r♦♠❘❛t✐♦♥❛❧ ✿✿ ❘❛t✐♦♥❛❧ ✲❃ ❛ ❝❧❛ss ✭❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❋❧♦❛t✐♥❣ ❛ ✇❤❡r❡ ♣✐ ✿✿ ❛ ❡①♣✱ ❧♦❣✱ sqrt ✿✿ ❛ ✲❃ ❛ ✭✯✯✮✱ ❧♦❣❇❛s❡ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ s✐♥✱ ❝♦s✱ t❛♥ ✿✿ ❛ ✲❃ ❛ ❛s✐♥✱ ❛❝♦s✱ ❛t❛♥ ✿✿ ❛ ✲❃ ❛ s✐♥❤✱ ❝♦s❤✱ t❛♥❤ ✿✿ ❛ ✲❃ ❛ ❛s✐♥❤✱ ❛❝♦s❤✱ ❛t❛♥❤ ✿✿ ❛ ✲❃ ❛ Ðèñ✳ ✻✳✷✿ Ñòàíäàðòíûå êëàññû ÷èñåë è ñâÿçàííûå ñ íèìè îïåðàöèè✱ ÷àñòü ✶
❮àêîíåö✱ èìåþòñÿ ôóíêöèè✱ êîòîðûå âîçâðàùàþò íàèáîëüøèé îáùèé äåëèòåëü è íàèìåíüøåå îáùåå êðàòíîå✳
❣❝❞ x y âû÷èñëÿåò íàèáîëüøåå ✭ïîëîæèòåëüíîå✮ öåëîå x ✱ è y ✱ íàïðèìåð✱ ❣❝❞ ✭✲✸✮ ✻ ❂ ✸✱ ❣❝❞ ✭✲✸✮ ✭✲✻✮
÷èñëî✱ êîòîðîå ÿâëÿåòñÿ äåëèòåëåì è ❂
✸✱ ❣❝❞ ✵ ✹
❧❝♠ x y
❂
✹✳ ❣❝❞ ✵ ✵
âûçûâàåò îøèáêó âðåìåíè âûïîëíåíèÿ ïðîãðàììû✳
âû÷èñëÿåò íàèìåíüøåå ïîëîæèòåëüíîå öåëîå ÷èñëî✱ äëÿ êîòîðîãî è
x✱
è
y
ÿâëÿþòñÿ äåëèòåëÿìè✳
✻✳✹✳✸
➶îçâåäåíèå â ñòåïåíü è ëîãàðèôìû
Ïîêàçàòåëüíàÿ ôóíêöèÿ
❡①♣
è ëîãàðèôìè÷åñêàÿ ôóíêöèÿ
❧♦❣
ïðèíèìàþò â êà÷åñòâå
àðãóìåíòà ÷èñëî ñ ïëàâàþùåé òî÷êîé è èñïîëüçóþò ïðè âû÷èñëåíèè îñíîâàíèå
❧♦❣❇❛s❡ a x
âîçâðàùàåò ëîãàðèôì
x
ïî îñíîâàíèþ
e✳ a ✳ sqrt âîçâðàùàåò àðèôìåòè÷åñêîå
çíà÷åíèå êâàäðàòíîãî êîðíÿ ÷èñëà ñ ïëàâàþùåé òî÷êîé✳ ➮ìåþòñÿ òðè îïåðàöèè âîçâåäåíèÿ â ñòåïåíü✱ êàæäàÿ èç êîòîðûõ ïðèíèìàåò ïî äâà àðãóìåíòà✿
✭❫✮
âîçâîäèò
✶✷✷
➹❐➚➶➚ ✻✳
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
❝❧❛ss ✭❘❡❛❧ ❛✱ ❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❘❡❛❧❋r❛❝ ♣r♦♣❡r❋r❛❝t✐♦♥ ✿✿ ✭■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ tr✉♥❝❛t❡✱ r♦✉♥❞ ✿✿ ✭■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ ❝❡✐❧✐♥❣✱ ❢❧♦♦r ✿✿ ✭■♥t❡❣r❛❧ ❜✮ ❂❃ ❛
❛ ✲❃ ✲❃ ✲❃
✇❤❡r❡ ✭❜✱❛✮ ❜ ❜
❝❧❛ss ✭❘❡❛❧❋r❛❝ ❛✱ ❋❧♦❛t✐♥❣ ❛✮ ❂❃ ❘❡❛❧❋❧♦❛t ❛ ✇❤❡r❡ ❢❧♦❛t❘❛❞✐① ✿✿ ❛ ✲❃ ■♥t❡❣❡r ❢❧♦❛t❉✐❣✐ts ✿✿ ❛ ✲❃ ■♥t ❢❧♦❛t❘❛♥❣❡ ✿✿ ❛ ✲❃ ✭■♥t✱■♥t✮ ❞❡❝♦❞❡❋❧♦❛t ✿✿ ❛ ✲❃ ✭■♥t❡❣❡r✱■♥t✮ ❡♥❝♦❞❡❋❧♦❛t ✿✿ ■♥t❡❣❡r ✲❃ ■♥t ✲❃ ❛ ❡①♣♦♥❡♥t ✿✿ ❛ ✲❃ ■♥t s✐❣♥✐❢✐❝❛♥❞ ✿✿ ❛ ✲❃ ❛ s❝❛❧❡❋❧♦❛t ✿✿ ■♥t ✲❃ ❛ ✲❃ ❛ ✐s◆❛◆✱ ✐s■♥❢✐♥✐t❡✱ ✐s❉❡♥♦r♠❛❧✐③❡❞✱ ✐s◆❡❣❛t✐✈❡❩❡r♦✱ ✐s■❊❊❊ ✿✿ ❛ ✲❃ ❇♦♦❧ ❛t❛♥✷ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ ❣❝❞✱ ❧❝♠ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❛✲❃ ❛ ✭❫✮ ✿✿ ✭◆✉♠ ❛✱ ■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜ ✲❃ ❛ ✭❫❫✮ ✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✱ ■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜ ✲❃ ❛ ❢r♦♠■♥t❡❣r❛❧ ✿✿ ✭■♥t❡❣r❛❧ ❛✱ ◆✉♠ ❜✮ ❂❃ ❛ ✲❃ ❜ r❡❛❧❚♦❋r❛❝ ✿✿ ✭❘❡❛❧ ❛✱ ❋r❛❝t✐♦♥❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜ Ðèñ✳ ✻✳✸✿ Ñòàíäàðòíûå êëàññû ÷èñåë è ñâÿçàííûå ñ íèìè îïåðàöèè✱ ÷àñòü ✷
✭❫❫✮ âîçâîäèò äðîáíîå ÷èñëî â ëþáóþ ✭✯✯✮ ïðèíèìàåò äâà àðãóìåíòà ñ ïëàâàþùåé òî÷êîé✳ ➬íà÷åíèå x ❫✵ èëè ✶ äëÿ ëþáîãî x ✱ âêëþ÷àÿ íîëü❀ çíà÷åíèå ✵✯✯y íå îïðåäåëåíî✳
ëþáîå ÷èñëî â íåîòðèöàòåëüíóþ öåëóþ ñòåïåíü✱ öåëóþ ñòåïåíü è
x ❫❫✵
ðàâíî
✻✳✹✳✹
➚áñîëþíàÿ âåëè÷èíà è çíàê
×èñëî èìååò
àáñîëþòíóþ âåëè÷èíó è çíàê✳ Ôóíêöèè ❛❜s è s✐❣♥✉♠ ïðèìåíèìû ê ëþáîìó
÷èñëó è óäîâëåòâîðÿþò óñëîâèþ✿
❛❜s ① ✯ s✐❣♥✉♠ ① ❂❂ ① ➘ëÿ äåéñòâèòåëüíûõ ÷èñåë ýòè ôóíêöèè îïðåäåëåíû ñëåäóþùèì îáðàçîì✿
✻✳✹✳
✶✷✸
×➮Ñ❐➚
❛❜s ①
⑤ ① ❃❂ ✵ ❂ ① ⑤ ① ❁ ✵ ❂ ✲①
s✐❣♥✉♠ ① ⑤ ① ❃ ✵ ❂ ✶ ⑤ ① ❂❂ ✵ ❂ ✵ ⑤ ① ❁ ✵ ❂ ✲✶
✻✳✹✳✺
Òðèãîíîìåòðè÷åñêèå ôóíêöèè
✃ëàññ ❋❧♦❛t✐♥❣ ïðåäîñòàâëÿåò ôóíêöèè äëÿ âû÷èñëåíèÿ êðóãîâîãî è ãèïåðáîëè÷åñêîãî ñèíóñà✱ êîñèíóñà✱ òàíãåíñà è îáðàòíûõ ôóíêöèé✳ ➮ìåþòñÿ ðåàëèçàöèè t❛♥✱ t❛♥❤✱ ❧♦❣❇❛s❡✱ ✯✯ è sqrt✱ çàäàííûå ïî óìîë÷àíèþ✱ íî ðàçðàáîò÷èêè ìîãóò ðåàëèçîâàòü ñâîè✱ áîëåå òî÷íûå ôóíêöèè✳ ✃ëàññ ❘❡❛❧❋❧♦❛t ïðåäîñòàâëÿåò âåðñèþ ôóíêöèè äëÿ âû÷èñëåíèÿ àðêòàíãåíñà✱ êîòîðàÿ ïðèíèìàåò äâà äåéñòâèòåëüíûõ àðãóìåíòà ñ ïëàâàþùåé òî÷êîé✳ ➘ëÿ äåéñòâèòåëüíûõ ÷èñåë ñ ïëàâàþùåé òî÷êîé x è y ❛t❛♥✷ y x âû÷èñëÿåò óãîë ✭îò ïîëîæèòåëüíîé îñè ❳✮ âåêòîðà✱ ïðîâåäåííîãî èç íà÷àëà êîîðäèíàò â òî÷êó (x , y)✳ ❛t❛♥✷ y x âîçâðàùàåò çíà÷åíèå â äèàïàçîíå ❬✲♣✐✱ ♣✐❪✳ Ïðè ýòîì✱ â ñîîòâåòñòâèè ñ ñåìàíòèêîé ❈♦♠♠♦♥ ▲✐s♣ äëÿ íà÷àëà êîîðäèíàò✱ ïîääåðæèâþòñÿ íóëè ñî çíàêîì✳ ❛t❛♥✷ y ✶✱ ãäå y íàõîäèòñÿ â òèïå ❘❡❛❧❋❧♦❛t✱ äîëæåí âåðíóòü òî æå ñàìîå çíà÷åíèå✱ ÷òî è ❛t❛♥ y ✳ ➮ìååòñÿ çàäàííîå ïî óìîë÷àíèþ îïðåäåëåíèå ❛t❛♥✷✱ íî ðàçðàáîò÷èêè ìîãóò ðåàëèçîâàòü ñâîþ✱ áîëåå òî÷íóþ ôóíêöèþ✳ Òî÷íîå îïðåäåëåíèå âûøåóïîìÿíóòûõ ôóíêöèé òàêîå æå✱ êàê è â ❈♦♠♠♦♥ ▲✐s♣✱ êîòîðîå✱ â ñâîþ î÷åðåäü✱ ñîîòâåòñòâóåò ïðåäëîæåíèþ Ïåíôèëäà ✭P❡♥❢✐❡❧❞✮ äëÿ ❆P▲ ❬✾❪✳ ➘ëÿ ïîäðîáíîãî îáñóæäåíèÿ âåòâåé✱ ðàçðûâíîñòåé è ðåàëèçàöèè ñìîòðèòå ýòè ññûëêè✳ ✻✳✹✳✻
Ïðèâåäåíèå è èçâëå÷åíèå êîìïîíåíò
✃àæäàÿ èç ôóíêöèé ❝❡✐❧✐♥❣✱ ❢❧♦♦r✱ tr✉♥❝❛t❡ è r♦✉♥❞ ïðèíèìàåò â êà÷åñòâå àðãóìåíòà äåéñòâèòåëüíîå äðîáíîå ÷èñëî è âîçâðàùàåò öåëîå ÷èñëî✳ ❝❡✐❧✐♥❣ x âîçâðàùàåò íàèìåíüøåå öåëîå ÷èñëî✱ êîòîðîå íå ìåíüøå ÷åì x ✱ ❢❧♦♦r x âîçâðàùàåò íàèáîëüøåå öåëîå ÷èñëî✱ êîòîðîå íå áîëüøå ÷åì x ✳ tr✉♥❝❛t❡ x âîçâðàùàåò áëèæàéøåå ê x öåëîå ÷èñëî✱ êîòîðîå íàõîäèòñÿ ìåæäó 0 è x âêëþ÷èòåëüíî✳ r♦✉♥❞ x âîçâðàùàåò áëèæàéøåå ê x öåëîå ÷èñëî✱ ðåçóëüòàò îêðóãëÿåòñÿ â ñòîðîíó ÷åòíîãî ÷èñëà✱ åñëè x íàõîäèòñÿ íà îäèíàêîâîì ðàññòîÿíèè îò äâóõ öåëûõ ÷èñåë✳ Ôóíêöèÿ ♣r♦♣❡r❋r❛❝t✐♦♥ ïðèíèìàåò â êà÷åñòâå àðãóìåíòà äåéñòâèòåëüíîå äðîáíîå ÷èñëî x è âîçâðàùàåò ïàðó (n, f )✱ òàêóþ✱ ÷òî x = n + f ✱ ãäå n ✖ öåëîå ÷èñëî ñ òåì æå çíàêîì✱ ÷òî è x ✱ f ✖ äðîáíîå ÷èñëî ñ òåì æå òèïîì è çíàêîì✱ ÷òî è x ✱ è ñ àáñîëþòíûì çíà÷åíèåì ìåíüøå ✶✳ Ôóíêöèè ❝❡✐❧✐♥❣✱ ❢❧♦♦r✱ tr✉♥❝❛t❡ è r♦✉♥❞ ìîæíî îïðåäåëèòü â òåðìèíàõ ♣r♦♣❡r❋r❛❝t✐♦♥✳
✶✷✹
➹❐➚➶➚ ✻✳
ÏÐ➴➘❰ÏÐ➴➘➴❐➴❮❮Û➴ Ò➮ÏÛ ➮ ✃❐➚ÑÑÛ
➮ìåþòñÿ äâå ôóíêöèè✱ êîòîðûå îñóùåñòâëÿþò ïðåîáðàçîâàíèå ÷èñåë ê òèïó ❘❛t✐♦♥❛❧✿ t♦❘❛t✐♦♥❛❧ âîçâðàùàåò ðàöèîíàëüíûé ýêâèâàëåíò äåéñòâèòåëüíîãî àðãóìåíòà ñ ïîëíîé òî÷íîñòüþ❀ ❛♣♣r♦①❘❛t✐♦♥❛❧ ïðèíèìàåò äâà äåéñòâèòåëüíûõ äðîáíûõ àðãóìåíòà x è ǫ è âîçâðàùàåò ïðîñòåéøåå ðàöèîíàëüíîå ÷èñëî✱ êîòîðîå îòëè÷àåòñÿ îò x íå áîëåå ÷åì íà ǫ✱ ãäå ðàöèîíàëüíîå ÷èñëî p/q✱ íàõîäÿùååñÿ â ïðèâåäåííîì âèäå✱ ñ÷èòàåòñÿ áîëåå ïðîñòûì✱ ÷åì äðóãîå ÷èñëî p′/q′✱ åñëè |p| ≤ |p′| è q ≤ q′✳ ✃àæäûé äåéñòâèòåëüíûé èíòåðâàë ñîäåðæèò åäèíñòâåííîå ïðîñòåéøåå ðàöèîíàëüíîå ÷èñëî✱ â ÷àñòíîñòè✱ îáðàòèòå âíèìàíèå✱ ÷òî 0/1 ÿâëÿåòñÿ ïðîñòåéøèì ðàöèîíàëüíûì ÷èñëîì èç âñåõ✳ ❒åòîäû êëàññà ❘❡❛❧❋❧♦❛t ïðåäîñòàâëÿþò ýôôåêòèâíûé✱ ìàøèíîíåçàâèñèìûé ñïîñîá ïîëó÷èòü äîñòóï ê êîìïîíåíòàì ÷èñëà ñ ïëàâàþùåé òî÷êîé✳ Ôóíêöèè ❢❧♦❛t❘❛❞✐①✱ ❢❧♦❛t❉✐❣✐ts è ❢❧♦❛t❘❛♥❣❡ âîçâðàùàþò ïàðàìåòðû òèïà ñ ïëàâàþùåé òî÷êîé✿ ñîîòâåòñòâåííî îñíîâàíèå ÷èñëîâîãî ïðåäñòàâëåíèÿ✱ êîëè÷åñòâî öèôð ýòîãî îñíîâàíèÿ â ìàíòèññå ✭çíà÷àùåé ÷àñòè ÷èñëà✮ è íàèáîëüøåå è íàèìåíüøåå çíà÷åíèÿ✱ êîòîðîå ìîæåò ïðèíèìàòü ýêñïîíåíòà✳ Ôóíêöèÿ ❞❡❝♦❞❡❋❧♦❛t✱ áóäó÷è ïðèìåíåííîé ê äåéñòâèòåëüíîìó ÷èñëó ñ ïëàâàþùåé òî÷êîé✱ âîçâðàùàåò ìàíòèññó â âèäå ÷èñëà òèïà ■♥t❡❣❡r è ñîîòâåòñòâóþùóþ ýêñïîíåíòó ✭â âèäå ÷èñëà òèïà ■♥t✮✳ ➴ñëè ❞❡❝♦❞❡❋❧♦❛t ① âîçâðàùàåò ✭m ✱n ✮✱ òî ① ðàâíî ïî çíà÷åíèþ mb n ✱ ãäå b ✖ îñíîâàíèå ñ ïëàâàþùåé òî÷êîé✱ è✱ êðîìå òîãî✱ ëèáî m è n ðàâíû íóëþ✱ ëèáî b d−1 ≤ m < b d ✱ ãäå d ✖ çíà÷åíèå ❢❧♦❛t❉✐❣✐ts ①✳ ❡♥❝♦❞❡❋❧♦❛t âûïîëíÿåò îáðàòíîå ïðåîáðàçîâàíèå✳ Ôóíêöèè s✐❣♥✐❢✐❝❛♥❞ è ❡①♣♦♥❡♥t âìåñòå ïðåäîñòàâëÿþò òó æå èíôîðìàöèþ✱ ÷òî è ❞❡❝♦❞❡❋❧♦❛t✱ íî áîëåå òî÷íóþ✱ ÷åì ■♥t❡❣❡r✱ s✐❣♥✐❢✐❝❛♥❞ ① âîçâðàùàåò çíà÷åíèå òîãî òèïà✱ ÷òî è ①✱ íî ëåæàùåå â ïðåäåëàõ îòêðûòîãî èíòåðâàëà (−1 , 1 )✳ ❡①♣♦♥❡♥t ✵ ðàâíî íóëþ✳ s❝❛❧❡❋❧♦❛t óìíîæàåò ÷èñëî ñ ïëàâàþùåé òî÷êîé íà îñíîâàíèå✱ âîçâåäåííîå â öåëóþ ñòåïåíü✳ Ôóíêöèè ✐s◆❛◆✱ ✐s■♥❢✐♥✐t❡✱ ✐s❉❡♥♦r♠❛❧✐③❡❞✱ ✐s◆❡❣❛t✐✈❡❩❡r♦ è ✐s■❊❊❊ ïîääåðæèâàþò ÷èñëà✱ ïðåäñòàâèìûå â ñîîòâåòñòâèè ñî ñòàíäàðòîì ■❊❊❊✳ ➘ëÿ ÷èñåë ñ ïëàâàþùåé òî÷êîé✱ íå ñîîòâåòñòâóþùèõ ñòàíäàðòó ■❊❊❊✱ îíè ìîãóò âåðíóòü ëîæíîå çíà÷åíèå✳ Òàêæå èìåþòñÿ ñëåäóþùèå ôóíêöèè ïðèâåäåíèÿ✿ ❢r♦♠■♥t❡❣r❛❧ ✿✿ ✭■♥t❡❣r❛❧ ❛✱ ◆✉♠ ❜✮ ❂❃ ❛ ✲❃ ❜ r❡❛❧❚♦❋r❛❝ ✿✿ ✭❘❡❛❧ ❛✱ ❋r❛❝t✐♦♥❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜
➹ëàâà ✼ ❰ñíîâíûå îïåðàöèè ââîäà ✲ âûâîäà
Ñèñòåìà ââîäà ✲ âûâîäà â ❍❛s❦❡❧❧ ÿâëÿåòñÿ ÷èñòî ôóíêöèîíàëüíîé✱ íî ïðè ýòîì îáëàäàåò âûðàçèòåëüíîé ìîùüþ îáû÷íûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ✳ ×òîáû äîñòè÷ü ýòîãî✱ ❍❛s❦❡❧❧ èñïîëüçóåò
ìîíàäó
äëÿ èíòåãðàöèè îïåðàöèé ââîäà ✲ âûâîäà â ÷èñòî
ôóíêöèîíàëüíûé êîíòåêñò✳ ❒îíàäà ââîäà ✲ âûâîäà èñïîëüçóåòñÿ â ❍❛s❦❡❧❧ êàê ñâÿçóþùåå çâåíî ìåæäó ïðèñóùèìè ôóíêöèîíàëüíîìó ÿçûêó✱ è
äåéñòâèÿìè✱
çíà÷åíèÿìè✱
õàðàêòåðèçóþùèìè îïåðàöèè
ââîäà ✲ âûâîäà è èìïåðàòèâíîå ïðîãðàììèðîâàíèå â îáùåì✳ Ïîðÿäîê âû÷èñëåíèÿ âûðàæåíèé â ❍❛s❦❡❧❧ îãðàíè÷åí òîëüêî çàâèñèìîñòÿìè äàííûõ❀ ðåàëèçàöèÿ îáëàäàåò çíà÷èòåëüíîé ñâîáîäîé â âûáîðå ýòîãî ïîðÿäêà✳ ➘åéñòâèÿ✱ òåì íå ìåíåå✱ äîëæíû áûòü óïîðÿäî÷åíû îïðåäåëåííûì îáðàçîì äëÿ âûïîëíåíèÿ ïðîãðàììû è✱ â ÷àñòíîñòè✱ ââîäà ✲ âûâîäà✱ äëÿ òîãî ÷òîáû áûòü ïðàâèëüíî èíòåðïðåòèðîâàíû✳ ➶ ❍❛s❦❡❧❧ ìîíàäà ââîäà ✲ âûâîäà ïðåäîñòàâëÿåò ïîëüçîâàòåëþ ñïîñîá óêàçàòü ïîñëåäîâàòåëüíîå ñâÿçûâàíèå äåéñòâèé✱ è ðåàëèçàöèÿ îáÿçàíà ñîáëþäàòü ýòîò ïîðÿäîê✳ Òåðìèí
ìîíàäà
ïðîèñõîäèò èç îòðàñëè ìàòåìàòèêè✱ èçâåñòíîé êàê
òåîðèÿ êàòåãîðèé✳
❰äíàêî✱ ñ òî÷êè çðåíèÿ ïðîãðàììèñòà ❍❛s❦❡❧❧✱ ëó÷øå äóìàòü î ìîíàäå êàê îá
àáñòðàêòíîì òèïå äàííûõ✳ ➶ ñëó÷àå ìîíàäû ââîäà ✲ âûâîäà àáñòðàêòíûìè çíà÷åíèÿìè ÿâëÿþòñÿ óïîìÿíóòûå âûøå äåéñòâèÿ✳ ❮åêîòîðûå îïåðàöèè ÿâëÿþòñÿ ïðèìèòèâíûìè äåéñòâèÿìè✱ ñîîòâåòñòâóþùèìè îáû÷íûì îïåðàöèÿì ââîäà ✲ âûâîäà✳ Ñïåöèàëüíûå îïåðàöèè ✭ìåòîäû â êëàññå
▼♦♥❛❞✱
ñì✳ ðàçäåë ✻✳✸✳✻✮ ïîñëåäîâàòåëüíî ñâÿçûâàþò
äåéñòâèÿ✱ ñîîòâåòñòâóþùèå ïîñëåäîâàòåëüíûì îïåðàòîðàì ✭òàêèì êàê òî÷êà ñ çàïÿòîé✮ â èìïåðàòèâíûõ ÿçûêàõ✳
✼✳✶
Ñòàíäàðòíûå ôóíêöèè ââîäà ✲ âûâîäà
Õîòÿ ❍❛s❦❡❧❧ îáåñïå÷èâàåò äîâîëüíî ñëîæíûå ñðåäñòâà ââîäà ✲ âûâîäà✱ îïðåäåëåííûå â áèáëèîòåêå
■❖✱ ìíîãèå ïðîãðàììû íà ❍❛s❦❡❧❧ ìîæíî ïèñàòü✱ èñïîëüçóÿ ëèøü íåñêîëüêî ✶✷✺
✶✷✻
➹❐➚➶➚ ✼✳
❰Ñ❮❰➶❮Û➴ ❰Ï➴Ð➚Ö➮➮ ➶➶❰➘➚ ✲ ➶Û➶❰➘➚
ïðîñòûõ ôóíêöèé✱ êîòîðûå ýêñïîðòèðóþòñÿ èç Pr❡❧✉❞❡ è êîòîðûå îïèñàíû â ýòîì ðàçäåëå✳ ➶ñå ôóíêöèè ââîäà ✲ âûâîäà✱ îïèñàííûå çäåñü✱ èìåþò äåëî ñ ñèìâîëàìè✳ ❰áðàáîòêà ñèìâîëà íîâîé ñòðîêè áóäåò ðàçëè÷àòüñÿ â ðàçëè÷íûõ ñèñòåìàõ✳ ❮àïðèìåð✱ äâà ñèìâîëà ââîäà✱ âîçâðàò êàðåòêè è ïåðåâîä ñòðîêè✱ ìîãóò áûòü ñ÷èòàíû êàê îäèí ñèìâîë íîâîé ñòðîêè✳ Ýòè ôóíêöèè íåëüçÿ èñïîëüçîâàòü â ïåðåíîñèìûõ ïðîãðàììàõ äëÿ áèíàðíîãî ââîäà ✲ âûâîäà✳ ➘àëåå✱ âñïîìíèì✱ ÷òî ❙tr✐♥❣ ÿâëÿåòñÿ ñèíîíèìîì äëÿ ❬❈❤❛r❪ ✭ðàçäåë ✻✳✶✳✷✮✳
Ôóíêöèè âûâîäà Ýòè ôóíêöèè çàïèñûâàþò â ñòàíäàðòíîå óñòðîéñòâî âûâîäà ✭îáû÷íî ýòî ïîëüçîâàòåëüñêèé òåðìèíàë✮✳ ♣✉t❈❤❛r ♣✉t❙tr ♣✉t❙tr▲♥ ♣r✐♥t
✿✿ ✿✿ ✿✿ ✿✿
❈❤❛r ✲❃ ■❖ ✭✮ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ✲✲ äîáàâëÿåò ñèìâîë íîâîé ñòðîêè ❙❤♦✇ ❛ ❂❃ ❛ ✲❃ ■❖ ✭✮
Ôóíêöèÿ ♣r✐♥t âûâîäèò çíà÷åíèå ëþáîãî ïðèãîäíîãî äëÿ ïå÷àòè òèïà íà ñòàíäàðòíîå óñòðîéñòâî âûâîäà✳ Ïðèãîäíûå äëÿ ïå÷àòè òèïû ✖ ýòî òå òèïû✱ êîòîðûå ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññà ❙❤♦✇❀ ♣r✐♥t ïðåîáðàçóåò çíà÷åíèÿ â ñòðîêè äëÿ âûâîäà✱ èñïîëüçóÿ îïåðàöèþ s❤♦✇✱ è äîáàâëÿåò ñèìâîë íîâîé ñòðîêè✳ ❮àïðèìåð✱ ïðîãðàììà äëÿ ïå÷àòè ïåðâûõ ✷✵ öåëûõ ÷èñåë è èõ ñòåïåíåé ✷ ìîãëà áûòü çàïèñàíà òàê✿ ♠❛✐♥ ❂ ♣r✐♥t ✭❬✭♥✱ ✷❫♥✮ ⑤ ♥ ❁✲ ❬✵✳✳✶✾❪❪✮
Ôóíêöèè ââîäà Ýòè ôóíêöèè ñ÷èòûâàþò äàííûå èç ñòàíäàðòíîãî óñòðîéñòâà ââîäà ✭îáû÷íî ýòî ïîëüçîâàòåëüñêèé òåðìèíàë✮✳ ❣❡t❈❤❛r ❣❡t▲✐♥❡ ❣❡t❈♦♥t❡♥ts ✐♥t❡r❛❝t r❡❛❞■❖ r❡❛❞▲♥
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
■❖ ❈❤❛r ■❖ ❙tr✐♥❣ ■❖ ❙tr✐♥❣ ✭❙tr✐♥❣ ✲❃ ❙tr✐♥❣✮ ✲❃ ■❖ ✭✮ ❘❡❛❞ ❛ ❂❃ ❙tr✐♥❣ ✲❃ ■❖ ❛ ❘❡❛❞ ❛ ❂❃ ■❖ ❛
❰ïåðàöèÿ ❣❡t❈❤❛r âûçûâàåò èñêëþ÷åíèå ✭ðàçäåë ✼✳✸✮ ïðè ïîÿâëåíèè ïðèçíàêà êîíöà ôàéëà✱ ❛ ïðåäèêàò ✐s❊❖❋❊rr♦r✱ êîòîðûé ðàñïîçíàåò ýòî èñêëþ÷åíèå✱ îïðåäåëåí â áèáëèîòåêå ■❖✳ ❰ïåðàöèÿ ❣❡t▲✐♥❡ âûçûâàåò èñêëþ÷åíèå ïðè òåõ æå îáñòîÿòåëüñòâàõ✱ ÷òî è ❤●❡t▲✐♥❡✱ îïðåäåëåííàÿ â áèáëèîòåêå ■❖✳
✼✳✷✳
✶✷✼
Ï❰Ñ❐➴➘❰➶➚Ò➴❐Ü❮Û➴ ❰Ï➴Ð➚Ö➮➮ ➶➶❰➘➚ ✲ ➶Û➶❰➘➚
❰ïåðàöèÿ
❣❡t❈♦♥t❡♥ts
âîçâðàùàåò âåñü ïîëüçîâàòåëüñêèé ââîä â âèäå îäíîé ñòðîêè✱
✐♥t❡r❛❝t
êîòîðàÿ ñ÷èòûâàåòñÿ ëåíèâî✱ ïî ìåðå íàäîáíîñòè✳ Ôóíêöèÿ â êà÷åñòâå àðãóìåíòà ôóíêöèþ òèïà
❙tr✐♥❣✲❃❙tr✐♥❣✳
ïðèíèìàåò
➶åñü ââîä èç ñòàíäàðòíîãî
óñòðîéñòâà ââîäà ïåðåäàåòñÿ ýòîé ôóíêöèè â êà÷åñòâå àðãóìåíòà✱ à ðåçóëüòèðóþùàÿ ñòðîêà âûâîäèòñÿ íà ñòàíäàðòíîå óñòðîéñòâî âûâîäà✳ ❰áû÷íî îïåðàöèÿ â
çíà÷åíèå✳
r❡❛❞
Ôóíêöèÿ
ïðåäóïðåæäàåò
èç êëàññà
r❡❛❞■❖
ìîíàäó
ïðîãðàììû✳ Ôóíêöèÿ
ââîäà
r❡❛❞▲♥
❘❡❛❞
ïîõîæà ✲
èñïîëüçóåòñÿ äëÿ ïðåîáðàçîâàíèÿ ñòðîêè
r❡❛❞✱
íà
âûâîäà
îáúåäèíÿåò
îá
çà
îøèáêå
❣❡t▲✐♥❡
è
èñêëþ÷åíèåì ðàçáîðà
r❡❛❞■❖✳
òîãî✱
âìåñòî
÷òî
îíà
çàâåðøåíèÿ
Ñëåäóþùàÿ ïðîãðàììà ïðîñòî óäàëÿåò âñå ñèìâîëû✱ íå ÿâëÿþùèåñÿ ❆❙❈■■✱ èç ñâîåãî ñòàíäàðòíîãî ââîäà è îòîáðàæàåò ðåçóëüòàò íà ñâîåì ñòàíäàðòíîì âûâîäå✳ ✭Ôóíêöèÿ
✐s❆s❝✐✐
îïðåäåëåíà â áèáëèîòåêå✳✮
♠❛✐♥ ❂ ✐♥t❡r❛❝t ✭❢✐❧t❡r ✐s❆s❝✐✐✮
Ôàéëû
Ýòè
ôóíêöèè
îïåðèðóþò
ôàéëàìè
ñèìâîëîâ✳
Ôàéëû
óêàçûâàþòñÿ
ïîñðåäñòâîì ñòðîê✱ èñïîëüçóÿ íåêîòîðûé✱ çàâèñÿùèé îò ðåàëèçàöèè✱ ìåòîä ðàçðåøåíèÿ ñòðîê êàê èìåí ôàéëîâ✳ Ôóíêöèè
✇r✐t❡❋✐❧❡
è
❛♣♣❡♥❞❋✐❧❡
ñîîòâåòñòâåííî çàïèñûâàþò èëè äîáàâëÿþò â êîíåö
ñòðîêó✱ ñâîé âòîðîé àðãóìåíò✱ â ôàéë✱ ñâîé ïåðâûé àðãóìåíò✳ Ôóíêöèÿ
r❡❛❞❋✐❧❡
ñ÷èòûâàåò ôàéë è âîçâðàùàåò ñîäåðæèìîå ôàéëà â âèäå ñòðîêè✳ Ôàéë ñ÷èòûâàåòñÿ ëåíèâî✱ ïî òðåáîâàíèþ✱ êàê â
t②♣❡ ❋✐❧❡P❛t❤ ❂
❣❡t❈♦♥t❡♥ts✳
❙tr✐♥❣
✇r✐t❡❋✐❧❡ ✿✿ ❋✐❧❡P❛t❤ ✲❃ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❛♣♣❡♥❞❋✐❧❡ ✿✿ ❋✐❧❡P❛t❤ ✲❃ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ r❡❛❞❋✐❧❡ ✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ❙tr✐♥❣ ❰áðàòèòå âíèìàíèå✱ ÷òî
✇r✐t❡❋✐❧❡
è
❛♣♣❡♥❞❋✐❧❡
çàïèñûâàþò ëèòåðàëüíóþ ñòðîêó â
ôàéë✳ ➘ëÿ òîãî ÷òîáû çàïèñàòü çíà÷åíèå ëþáîãî ïðèãîäíîãî äëÿ ïå÷àòè òèïà✱ êàê â
♣r✐♥t✱
ñíà÷àëà èñïîëüçóåòñÿ ôóíêöèÿ
s❤♦✇
äëÿ ïðåîáðàçîâàíèÿ çíà÷åíèÿ â ñòðîêó✳
♠❛✐♥ ❂ ❛♣♣❡♥❞❋✐❧❡ ✧êâàäðàòû✧ ✭s❤♦✇ ❬✭①✱①✯①✮ ⑤ ① ❁✲ ❬✵✱✵✳✶✳✳✷❪❪✮
✼✳✷
Ïîñëåäîâàòåëüíûå îïåðàöèè ââîäà ✲ âûâîäà
✃îíñòðóêòîð
òèïà
■❖
ÿâëÿåòñÿ
ýêçåìïëÿðîì
ñâÿçûâàþùèå ôóíêöèè✱ ìåòîäû â êëàññå
êëàññà
▼♦♥❛❞✱
▼♦♥❛❞✳
➘âå
ìîíàäè÷åñêèå
èñïîëüçóþòñÿ äëÿ ñîñòàâëåíèÿ
➹❐➚➶➚ ✼✳
✶✷✽
ïîñëåäîâàòåëüíîñòåé
îïåðàöèé
ââîäà
❰Ñ❮❰➶❮Û➴ ❰Ï➴Ð➚Ö➮➮ ➶➶❰➘➚ ✲ ➶Û➶❰➘➚
✲
âûâîäà✳
Ôóíêöèÿ
❃❃
èñïîëüçóåòñÿ
òàì✱
ãäå
ðåçóëüòàò ïåðâîé îïåðàöèè íå ïðåäñòàâëÿåò èíòåðåñà✱ íàïðèìåð✱ êîãäà îí ïðåäñòàâëÿåò ñîáîé
✭✮✳
❰ïåðàöèÿ
❃❃❂
ïåðåäàåò ðåçóëüòàò ïåðâîé îïåðàöèè â êà÷åñòâå àðãóìåíòà
âòîðîé îïåðàöèè✳
✭❃❃❂✮ ✿✿ ■❖ ❛ ✲❃ ✭❛ ✲❃ ■❖ ❜✮ ✲❃ ■❖ ❜ ✭❃❃✮ ✿✿ ■❖ ❛ ✲❃ ■❖ ❜ ✲❃ ■❖ ❜ ❮àïðèìåð✱ ïðîãðàììà
♠❛✐♥ ❂ r❡❛❞❋✐❧❡ ✧✐♥♣✉t✲❢✐❧❡✧ ❃❃❂ ❭ s ✲❃ ✇r✐t❡❋✐❧❡ ✧♦✉t♣✉t✲❢✐❧❡✧ ✭❢✐❧t❡r ✐s❆s❝✐✐ s✮ ❃❃ ♣✉t❙tr ✧Ôèëüòðàöèÿ çàâåðøèëàñü óñïåøíî❭♥✧ ïîõîæà èç
íà
ïðåäûäóùèé
✧✐♥♣✉t✲❢✐❧❡✧
è
ïðèìåð✱
çàïèñûâàåò
✐♥t❡r❛❝t✱ íî ✧♦✉t♣✉t✲❢✐❧❡✧✳
èñïîëüçóþùèé
ñâîé
âûâîä
â
ïîëó÷àåò Ïåðåä
ñâîé
ââîä
çàâåðøåíèåì
ïðîãðàììû íà ñòàíäàðòíûé âûâîä ðàñïå÷àòûâàåòñÿ ñîîáùåíèå✳
❮îòàöèÿ
❞♦
ïîçâîëÿåò ïðîãðàììèðîâàòü â áîëåå èìïåðàòèâíîì ñèíòàêñè÷åñêîì ñòèëå✳
Ñëåãêà áîëåå ñëîæíîé âåðñèåé ïðåäûäóùåãî ïðèìåðà áûëà áû ïðîãðàììà✿
♠❛✐♥ ❂ ❞♦ ♣✉t❙tr ✧Ôàéë ââîäà✿ ✧ ✐❢✐❧❡ ❁✲ ❣❡t▲✐♥❡ ♣✉t❙tr ✧Ôàéë âûâîäà✿ ✧ ♦❢✐❧❡ ❁✲ ❣❡t▲✐♥❡ s ❁✲ r❡❛❞❋✐❧❡ ✐❢✐❧❡ ✇r✐t❡❋✐❧❡ ♦❢✐❧❡ ✭❢✐❧t❡r ✐s❆s❝✐✐ s✮ ♣✉t❙tr ✧Ôèëüòðàöèÿ çàâåðøèëàñü óñïåøíî❭♥✧
Ôóíêöèÿ
r❡t✉r♥ èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ðåçóëüòàòà îïåðàöèè ââîäà ✲ âûâîäà✳ ❣❡t▲✐♥❡ îïðåäåëåíà â òåðìèíàõ ❣❡t❈❤❛r✱ èñïîëüçóÿ r❡t✉r♥ äëÿ îïðåäåëåíèÿ
❮àïðèìåð✱
ðåçóëüòàòà✿
❣❡t▲✐♥❡ ✿✿ ■❖ ❙tr✐♥❣ ❣❡t▲✐♥❡ ❂ ❞♦ ❝ ❁✲ ❣❡t❈❤❛r ✐❢ ❝ ❂❂ ✬❭♥✬ t❤❡♥ r❡t✉r♥ ✧✧ ❡❧s❡ ❞♦ s ❁✲ ❣❡t▲✐♥❡ r❡t✉r♥ ✭❝✿s✮
✼✳✸
❰áðàáîòêà èñêëþ÷åíèé â ìîíàäå ââîäà ✲ âûâîäà
❒îíàäà ââîäà ✲ âûâîäà âêëþ÷àåò ïðîñòóþ ñèñòåìó îáðàáîòêè èñêëþ÷åíèé✳ ❐þáàÿ îïåðàöèÿ ââîäà ✲ âûâîäà ìîæåò âûçâàòü èñêëþ÷åíèå âìåñòî âîçâðàùåíèÿ ðåçóëüòàòà✳
✼✳✸✳
✶✷✾
❰➪Ð➚➪❰Ò✃➚ ➮Ñ✃❐Þ×➴❮➮➱ ➶ ❒❰❮➚➘➴ ➶➶❰➘➚ ✲ ➶Û➶❰➘➚
➮ñêëþ÷åíèÿ â ìîíàäå ââîäà ✲ âûâîäà ïðåäñòàâëåíû çíà÷åíèÿìè òèïà Ýòî
■❖
àáñòðàêòíûé îïðåäåëÿåò
òèï✿
åãî
ôóíêöèè✱
êîíñòðóêòîðû
êîòîðûå
ñêðûòû
êîíñòðóèðóþò
îò è
ïîëüçîâàòåëÿ✳
èçó÷àþò
✳ ➴äèíñòâåííîé ôóíêöèåé Pr❡❧✉❞❡✱ êîòîðàÿ ñîçäàåò çíà÷åíèå
■❖❊rr♦r✳
➪èáëèîòåêà
çíà÷åíèÿ
■❖❊rr♦r✱
■❖❊rr♦r
ÿâëÿåòñÿ
✉s❡r❊rr♦r✳ Ïîëüçîâàòåëüñêèå çíà÷åíèÿ îøèáîê âêëþ÷àþò ñòðîêó ñ îïèñàíèåì îøèáêè✳ ✉s❡r❊rr♦r ✿✿ ❙tr✐♥❣ ✲❃ ■❖❊rr♦r ➮ñêëþ÷åíèÿ âûçûâàþòñÿ è îòëàâëèâàþòñÿ ñ ïîìîùüþ ñëåäóþùèõ ôóíêöèé✿
✐♦❊rr♦r ✿✿ ■❖❊rr♦r ✲❃ ■❖ ❛ ❝❛t❝❤ ✿✿ ■❖ ❛ ✲❃ ✭■❖❊rr♦r ✲❃ ■❖ ❛✮ ✲❃ ■❖ ❛ Ôóíêöèÿ
✐♦❊rr♦r
âûçûâàåò èñêëþ÷åíèå❀ ôóíêöèÿ
❝❛t❝❤
óñòàíàâëèâàåò îáðàáîò÷èê✱
êîòîðûé ïîëó÷àåò ëþáîå èñêëþ÷åíèå✱ âûçâàííîå äåéñòâèåì✱ çàùèùåííûì ➮ñêëþ÷åíèå îòëàâëèâàåòñÿ ñàìûì ïîñëåäíèì îáðàáîò÷èêîì✱ óñòàíîâëåííûì Ýòè
îáðàáîò÷èêè
íå
äåéñòâóþò
âûáîðî÷íî✿
îíè
îòëàâëèâàþò
âñå
❝❛t❝❤✳ ❝❛t❝❤✳
èñêëþ÷åíèÿ✳
Ðàñïðîñòðàíåíèå èñêëþ÷åíèÿ íóæíî ÿâíî îáåñïå÷èòü â îáðàáîò÷èêå ïóòåì ïîâòîðíîãî âûçîâà ëþáîãî íåæåëàòåëüíîãî èñêëþ÷åíèÿ✳ ❮àïðèìåð✱ â
❢ ❂ ❝❛t❝❤ ❣ ✭❭❡ ✲❃ ✐❢ ■❖✳✐s❊❖❋❊rr♦r ❡ t❤❡♥ r❡t✉r♥ ❬❪ ❡❧s❡ ✐♦❊rr♦r ❡✮ ôóíêöèÿ
❢
âîçâðàùàåò
❬❪✱
êîãäà â
❣
âîçíèêàåò èñêëþ÷åíèå êîíöà ôàéëà✱ èíà÷å
èñêëþ÷åíèå ïåðåäàåòñÿ ñëåäóþùåìó âíåøíåìó îáðàáîò÷èêó✳ Ôóíêöèÿ ÿâëÿåòñÿ ÷àñòüþ áèáëèîòåêè
■❖✳
✐s❊❖❋❊rr♦r
✃îãäà èñêëþ÷åíèå ïåðåäàåòñÿ çà ïðåäåëû ãëàâíîé ïðîãðàììû✱ ñèñòåìà ❍❛s❦❡❧❧ âûâîäèò ñâÿçàííîå ñ íèì çíà÷åíèå ❒åòîä
❢❛✐❧
ýêçåìïëÿðà
■❖❊rr♦r
■❖
êëàññà
è âûõîäèò èç ïðîãðàììû✳
▼♦♥❛❞
✭ðàçäåë ✻✳✸✳✻✮ âûçûâàåò
✉s❡r❊rr♦r
òàê✿
✐♥st❛♥❝❡ ▼♦♥❛❞ ■❖ ✇❤❡r❡ ✳✳✳❜✐♥❞✐♥❣s ❢♦r r❡t✉r♥✱ ✭❃❃❂✮✱ ✭❃❃✮ ❢❛✐❧ s ❂ ✐♦❊rr♦r ✭✉s❡r❊rr♦r s✮ ➮ñêëþ÷åíèÿ✱ âûçâàííûå ôóíêöèÿìè ââîäà ✲ âûâîäà â Pr❡❧✉❞❡✱ îïèñàíû â ãëàâå ✷✶✳
✶✸✵
➹❐➚➶➚ ✼✳
❰Ñ❮❰➶❮Û➴ ❰Ï➴Ð➚Ö➮➮ ➶➶❰➘➚ ✲ ➶Û➶❰➘➚
➹ëàâà ✽ Ñòàíäàðòíîå íà÷àëî ✭Pr❡❧✉❞❡✮ ➶
ýòîé
ãëàâå
ñïåöèôèêàöèþ
äàåòñÿ
îïèñàíèå
âñåãî
❍❛s❦❡❧❧
Pr❡❧✉❞❡✳
Ýòî
îïèñàíèå
ñîñòàâëÿåò
Pr❡❧✉❞❡✳ ❒íîãèå îïðåäåëåíèÿ çàïèñàíû ñ òî÷êè çðåíèÿ ÿñíîñòè✱ à íå
ýôôåêòèâíîñòè✱ è íåîáÿçàòåëüíî✱ ÷òî ñïåöèôèêàöèÿ ðåàëèçîâàíà òàê✱ êàê ïîêàçàíî çäåñü✳ ➬àäàííûå
ïî
óìîë÷àíèþ
îïðåäåëåíèÿ
ìåòîäîâ✱
äàííûå
â
❝❧❛ss✱
îáúÿâëåíèÿõ
òîëüêî çàäàííîãî ïî óìîë÷àíèþ ìåòîäà✳ ❰íè íå ñîñòàâëÿþò
ñîñòàâëÿþò ñïåöèôèêàöèþ
ñïåöèôèêàöèþ çíà÷åíèÿ ìåòîäà âî âñåõ ýêçåìïëÿðàõ✳ Ðàññìîòðèì îäèí êîíêðåòíûé ïðèìåð✿ çàäàííûé ïî óìîë÷àíèþ ìåòîä äëÿ
❡♥✉♠❋r♦♠
â êëàññå
❊♥✉♠
äîëæíûì îáðàçîì äëÿ òèïîâ✱ ÷åé äèàïàçîí ïðåâûøàåò äèàïàçîí
❢r♦♠❊♥✉♠
íå áóäåò ðàáîòàòü
■♥t
íå ìîæåò îòîáðàæàòü âñå çíà÷åíèÿ òèïà â ðàçëè÷íûå çíà÷åíèÿ
Ïîêàçàííîå
çäåñü
ïîäìîäóëåé✿
Pr❡❧✉❞❡▲✐st✱ Pr❡❧✉❞❡❚❡①t
Pr❡❧✉❞❡
îáðàçîâàíî
èç
è
êîðíåâîãî
Pr❡❧✉❞❡■❖✳
ìîäóëÿ
✭ïîòîìó ÷òî
■♥t✮✳
Pr❡❧✉❞❡
è
òðåõ
Ýòà ñòðóêòóðà ÿâëÿåòñÿ ÷èñòî
ðåïðåçåíòàòèâíîé✳ Ðåàëèçàöèÿ íå îáÿçàíà èñïîëüçîâàòü ýòó îðãàíèçàöèþ äëÿ Pr❡❧✉❞❡✱ òàêæå ýòè òðè ìîäóëÿ íå äîñòóïíû äëÿ èìïîðòà ïî îòäåëüíîñòè✳ Òîëüêî ñïèñîê ýêñïîðòà ìîäóëÿ
Pr❡❧✉❞❡
ÿâëÿåòñÿ çíà÷èìûì✳
❈❤❛r✱ ▼♦♥❛❞✱ ■❖ è ◆✉♠❡r✐❝✳ Ýòè ìîäóëè ïîëíîñòüþ îïèñàíû â ÷àñòè ■■✳ Ýòè ñïèñêè èìïîðòà✱ êîíå÷íî✱ íå ÿâëÿþòñÿ ÷àñòüþ ñïåöèôèêàöèè Pr❡❧✉❞❡✳ Òî åñòü ðåàëèçàöèÿ ñâîáîäíà â âûáîðå
❮åêîòîðûå èç ýòèõ ìîäóëåé èìïîðòèðóþò ìîäóëè áèáëèîòåêè✱ òàêèå êàê
èìïîðòèðîâàòü áîëüøå èëè ìåíüøå ìîäóëåé áèáëèîòåêè✱ ïî ñâîåìó óñìîòðåíèþ✳ Ïðèìèòèâû✱
êîòîðûå
íå
íå
îïðåäåëèìû
íà
❍❛s❦❡❧❧✱
îáîçíà÷àþòñÿ
èìåíàìè✱
íà÷èíàþùèìèñÿ ñ ✏ ♣r✐♠✑❀ îíè îïðåäåëåíû ñèñòåìíîçàâèñèìûì ñïîñîáîì â ìîäóëå
Pr❡❧✉❞❡❇✉✐❧t✐♥
è ïîëíîñòüþ íå ïîêàçàíû✳ ❰áúÿâëåíèÿ ýêçåìïëÿðîâ✱ êîòîðûå ïðîñòî
ñâÿçûâàþò
ïðèìèòèâû
ïîäðîáíûõ
ýêçåìïëÿðîâ
ñ
ìåòîäàìè ñ
êëàññà✱
î÷åâèäíûìè
ïðîïóùåíû✳
❮åêîòîðûå
ôóíêöèîíàëüíûìè
èç
íàèáîëåå
âîçìîæíîñòÿìè
áûëè
ïðîïóùåíû ðàäè êðàòêîñòè✳ ❰áúÿâëåíèÿ ñïåöèàëüíûõ òèïîâ✱ òàêèõ êàê
■♥t❡❣❡r
èëè
✭✮✱
âêëþ÷åíû â Pr❡❧✉❞❡
äëÿ ïîëíîòû✱ äàæå åñëè îáúÿâëåíèå ìîæåò îêàçàòüñÿ íåïîëíûì èëè ñèíòàêñè÷åñêè ✶✸✶
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✶✸✷
íåäîïóñòèìûì✳ Ïðîïóñêè ✏ ✳✳✳✑ ÷àñòî èñïîëüçóþòñÿ â ìåñòàõ✱ ãäå îñòàòîê îïðåäåëåíèÿ íå ìîæåò áûòü çàäàí íà ❍❛s❦❡❧❧✳ ➘ëÿ òîãî ÷òîáû ñîêðàòèòü âîçíèêíîâåíèå íåîæèäàííûõ îøèáîê íåîäíîçíà÷íîñòè è óëó÷øèòü ýôôåêòèâíîñòü✱ ìíîæåñòâî îáùåóïîòðåáèòåëüíûõ ôóíêöèé íàä ñïèñêàìè
■♥t❡❣r❛❧ ❛ èëè ◆✉♠ ❛✳ Ýòèìè ôóíêöèÿìè ÿâëÿþòñÿ✿ t❛❦❡✱ ❞r♦♣✱ ✦✦✱ ❧❡♥❣t❤✱ s♣❧✐t❆t è r❡♣❧✐❝❛t❡✳ ➪îëåå îáùèå âåðñèè çàäàíû â áèáëèîòåêå ▲✐st è èìåþò ïðèñòàâêó ✏ ❣❡♥❡r✐❝✑✱ íàïðèìåð✱ ❣❡♥❡r✐❝▲❡♥❣t❤✳ ÷àùå èñïîëüçóþò òèï
■♥t✱
÷åì áîëåå îáùèé ÷èñëîâîé òèï✱ òàêîé êàê
✶✸✸ ♠♦❞✉❧❡ Pr❡❧✉❞❡ ✭ ♠♦❞✉❧❡ Pr❡❧✉❞❡▲✐st✱ ♠♦❞✉❧❡ Pr❡❧✉❞❡❚❡①t✱ ♠♦❞✉❧❡ Pr❡❧✉❞❡■❖✱ ❇♦♦❧✭❋❛❧s❡✱ ❚r✉❡✮✱ ▼❛②❜❡✭◆♦t❤✐♥❣✱ ❏✉st✮✱ ❊✐t❤❡r✭▲❡❢t✱ ❘✐❣❤t✮✱ ❖r❞❡r✐♥❣✭▲❚✱ ❊◗✱ ●❚✮✱ ❈❤❛r✱ ❙tr✐♥❣✱ ■♥t✱ ■♥t❡❣❡r✱ ❋❧♦❛t✱ ❉♦✉❜❧❡✱ ❘❛t✐♦♥❛❧✱ ■❖✱ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
Ýòè âñòðîåííûå òèïû îïðåäåëåíû â Pr❡❧✉❞❡✱ íî îáîçíà÷åíû âñòðîåííûì ñèíòàêñèñîì è íå ìîãóò ïîÿâëÿòüñÿ â ñïèñêå ýêñïîðòà✳ Ñïèñî÷íûé òèï✿ ❬❪✭✭✿✮✱ ❬❪✮ Òèïû êîðòåæåé✿ ✭✱✮✭✭✱✮✮✱ ✭➼✮✭✭➼✮✮✱ ❡t❝✳ Òðèâèàëüíûé òèï✿ ✭✮✭✭✮✮ Ôóíêöèîíàëüíûé òèï✿ ✭✲❃✮
❊q✭✭❂❂✮✱ ✭✴❂✮✮✱ ❖r❞✭❝♦♠♣❛r❡✱ ✭❁✮✱ ✭❁❂✮✱ ✭❃❂✮✱ ✭❃✮✱ ♠❛①✱ ♠✐♥✮✱ ❊♥✉♠✭s✉❝❝✱ ♣r❡❞✱ t♦❊♥✉♠✱ ❢r♦♠❊♥✉♠✱ ❡♥✉♠❋r♦♠✱ ❡♥✉♠❋r♦♠❚❤❡♥✱ ❡♥✉♠❋r♦♠❚♦✱ ❡♥✉♠❋r♦♠❚❤❡♥❚♦✮✱ ❇♦✉♥❞❡❞✭♠✐♥❇♦✉♥❞✱ ♠❛①❇♦✉♥❞✮✱ ◆✉♠✭✭✰✮✱ ✭✲✮✱ ✭✯✮✱ ♥❡❣❛t❡✱ ❛❜s✱ s✐❣♥✉♠✱ ❢r♦♠■♥t❡❣❡r✮✱ ❘❡❛❧✭t♦❘❛t✐♦♥❛❧✮✱ ■♥t❡❣r❛❧✭q✉♦t✱ r❡♠✱ ❞✐✈✱ ♠♦❞✱ q✉♦t❘❡♠✱ ❞✐✈▼♦❞✱ t♦■♥t❡❣❡r✮✱ ❋r❛❝t✐♦♥❛❧✭✭✴✮✱ r❡❝✐♣✱ ❢r♦♠❘❛t✐♦♥❛❧✮✱ ❋❧♦❛t✐♥❣✭♣✐✱ ❡①♣✱ ❧♦❣✱ sqrt✱ ✭✯✯✮✱ ❧♦❣❇❛s❡✱ s✐♥✱ ❝♦s✱ t❛♥✱ ❛s✐♥✱ ❛❝♦s✱ ❛t❛♥✱ s✐♥❤✱ ❝♦s❤✱ t❛♥❤✱ ❛s✐♥❤✱ ❛❝♦s❤✱ ❛t❛♥❤✮✱ ❘❡❛❧❋r❛❝✭♣r♦♣❡r❋r❛❝t✐♦♥✱ tr✉♥❝❛t❡✱ r♦✉♥❞✱ ❝❡✐❧✐♥❣✱ ❢❧♦♦r✮✱ ❘❡❛❧❋❧♦❛t✭❢❧♦❛t❘❛❞✐①✱ ❢❧♦❛t❉✐❣✐ts✱ ❢❧♦❛t❘❛♥❣❡✱ ❞❡❝♦❞❡❋❧♦❛t✱ ❡♥❝♦❞❡❋❧♦❛t✱ ❡①♣♦♥❡♥t✱ s✐❣♥✐❢✐❝❛♥❞✱ s❝❛❧❡❋❧♦❛t✱ ✐s◆❛◆✱ ✐s■♥❢✐♥✐t❡✱ ✐s❉❡♥♦r♠❛❧✐③❡❞✱ ✐s■❊❊❊✱ ✐s◆❡❣❛t✐✈❡❩❡r♦✱ ❛t❛♥✷✮✱ ▼♦♥❛❞✭✭❃❃❂✮✱ ✭❃❃✮✱ r❡t✉r♥✱ ❢❛✐❧✮✱ ❋✉♥❝t♦r✭❢♠❛♣✮✱ ♠❛♣▼✱ ♠❛♣▼❴✱ s❡q✉❡♥❝❡✱ s❡q✉❡♥❝❡❴✱ ✭❂❁❁✮✱ ♠❛②❜❡✱ ❡✐t❤❡r✱ ✭✫✫✮✱ ✭⑤⑤✮✱ ♥♦t✱ ♦t❤❡r✇✐s❡✱ s✉❜tr❛❝t✱ ❡✈❡♥✱ ♦❞❞✱ ❣❝❞✱ ❧❝♠✱ ✭❫✮✱ ✭❫❫✮✱ ❢r♦♠■♥t❡❣r❛❧✱ r❡❛❧❚♦❋r❛❝✱ ❢st✱ s♥❞✱ ❝✉rr②✱ ✉♥❝✉rr②✱ ✐❞✱ ❝♦♥st✱ ✭✳✮✱ ❢❧✐♣✱ ✭✩✮✱ ✉♥t✐❧✱ ❛s❚②♣❡❖❢✱ ❡rr♦r✱ ✉♥❞❡❢✐♥❡❞✱ s❡q✱ ✭✩✦✮ ✮ ✇❤❡r❡ ✐♠♣♦rt Pr❡❧✉❞❡❇✉✐❧t✐♥ ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt ✐♠♣♦rt
✲✲ Ñîäåðæèò âñå ❵ïðèìèòèâíûå✬ ✲✲ çíà÷åíèÿ ❯♥✐❝♦❞❡Pr✐♠s✭ ♣r✐♠❯♥✐❝♦❞❡▼❛①❈❤❛r ✮ ✲✲ Ïðèìèòèâû ❯♥✐❝♦❞❡ Pr❡❧✉❞❡▲✐st Pr❡❧✉❞❡❚❡①t Pr❡❧✉❞❡■❖ ❘❛t✐♦✭ ❘❛t✐♦♥❛❧ ✮
✶✸✹
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✐♥❢✐①r ✐♥❢✐①r ✐♥❢✐①❧ ✐♥❢✐①❧
✾ ✽ ✼ ✻
✳ ❫✱ ❫❫✱ ✯✯ ✯✱ ✴✱ ❵q✉♦t❵✱ ❵r❡♠❵✱ ❵❞✐✈❵✱ ❵♠♦❞❵ ✰✱ ✲
✲✲ ❰ïåðàòîð ✭✿✮ ÿâëÿåòñÿ âñòðîåííûì ñèíòàêñèñîì è íå ìîæåò áûòü çàäàí ñ ïîìîùüþ ✲✲ ✐♥❢✐①✲îáúÿâëåíèÿ❀ íî åãî àññîöèàòèâíîñòü è ïðèîðèòåò çàäàíû✿ ✲✲ ✐♥❢✐①r ✺ ✿ ✐♥❢✐① ✐♥❢✐①r ✐♥❢✐①r ✐♥❢✐①❧ ✐♥❢✐①r ✐♥❢✐①r
✹ ✸ ✷ ✶ ✶ ✵
❂❂✱ ✴❂✱ ❁✱ ❁❂✱ ❃❂✱ ❃ ✫✫ ⑤⑤ ❃❃✱ ❃❃❂ ❂❁❁ ✩✱ ✩✦✱ ❵s❡q❵
✲✲ Ñòàíäàðòíûå òèïû✱ êëàññû✱ ýêçåìïëÿðû è îòíîñÿùèåñÿ ê íèì ôóíêöèè ✲✲ ✃ëàññû ðàâåíñòâà ✭❊q✮ è óïîðÿäî÷èâàíèÿ ✭❖r❞❡r✐♥❣✮ ❝❧❛ss ❊q ❛ ✇❤❡r❡ ✭❂❂✮✱ ✭✴❂✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❇♦♦❧ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ✭❂❂✮ ♦r ✭✴❂✮ ① ✴❂ ② ❂ ♥♦t ✭① ❂❂ ②✮ ① ❂❂ ② ❂ ♥♦t ✭① ✴❂ ②✮ ❝❧❛ss ✭❊q ❛✮ ❂❃ ❖r❞ ❛ ✇❤❡r❡ ❝♦♠♣❛r❡ ✿✿ ❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣ ✭❁✮✱ ✭❁❂✮✱ ✭❃❂✮✱ ✭❃✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❇♦♦❧ ♠❛①✱ ♠✐♥ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ✭❁❂✮ èëè ❝♦♠♣❛r❡ ✲✲ ➮ñïîëüçîâàíèå ❝♦♠♣❛r❡ ìîæåò îêàçàòüñÿ áîëåå ýôôåêòèâíûì äëÿ ñëîæíûõ ✲✲ òèïîâ✳ ❝♦♠♣❛r❡ ① ② ⑤ ① ❂❂ ② ❂ ❊◗ ⑤ ① ❁❂ ② ❂ ▲❚ ⑤ ♦t❤❡r✇✐s❡ ❂ ●❚ ① ① ① ①
❁❂ ❁ ❃❂ ❃
② ② ② ②
❂ ❂ ❂ ❂
❝♦♠♣❛r❡ ❝♦♠♣❛r❡ ❝♦♠♣❛r❡ ❝♦♠♣❛r❡
① ① ① ①
② ② ② ②
✴❂ ❂❂ ✴❂ ❂❂
●❚ ▲❚ ▲❚ ●❚
✲✲ îáðàòèòå âíèìàíèå✱ ÷òî ✭♠✐♥ ① ②✱ ♠❛① ① ②✮ ❂ ✭①✱②✮ èëè ✭②✱①✮ ♠❛① ① ② ⑤ ① ❁❂ ② ❂ ② ⑤ ♦t❤❡r✇✐s❡ ❂ ① ♠✐♥ ① ② ⑤ ① ❁❂ ② ❂ ① ⑤ ♦t❤❡r✇✐s❡ ❂ ②
✶✸✺ ✲✲ ✃ëàññû ïåðå÷èñëåíèÿ ✭❊♥✉♠✮ è ãðàíèö ✭❇♦✉♥❞❡❞✮ ❝❧❛ss ❊♥✉♠ ❛ ✇❤❡r❡ s✉❝❝✱ ♣r❡❞ t♦❊♥✉♠ ❢r♦♠❊♥✉♠ ❡♥✉♠❋r♦♠ ❡♥✉♠❋r♦♠❚❤❡♥ ❡♥✉♠❋r♦♠❚♦ ❡♥✉♠❋r♦♠❚❤❡♥❚♦
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❛ ✲❃ ❛ ■♥t ✲❃ ❛ ❛ ✲❃ ■♥t ❛ ✲❃ ❬❛❪ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ❛ ✲❃ ❛ ✲❃ ❛ ✲❃ ❬❛❪
✲✲ ✲✲ ✲✲ ✲✲
❬♥✳✳❪ ❬♥✱♥✬✳✳❪ ❬♥✳✳♠❪ ❬♥✱♥✬✳✳♠❪
✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ t♦❊♥✉♠✱ ❢r♦♠❊♥✉♠ ✲✲ ✲✲ ➬➚❒➴×➚❮➮➴✿ ýòè ìåòîäû ïî óìîë÷àíèþ òîëüêî äåëàþò âèä✱ ✲✲ ÷òî èíúåêòèâíî îòîáðàæàþò òèïû â ■♥t✱ èñïîëüçóÿ ✲✲ ❢r♦♠❊♥✉♠ è t♦❊♥✉♠✳ s✉❝❝ ❂ t♦❊♥✉♠ ✳ ✭✰✶✮ ✳ ❢r♦♠❊♥✉♠ ♣r❡❞ ❂ t♦❊♥✉♠ ✳ ✭s✉❜tr❛❝t ✶✮ ✳ ❢r♦♠❊♥✉♠ ❡♥✉♠❋r♦♠ ① ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ① ✳✳❪ ❡♥✉♠❋r♦♠❚♦ ① ② ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ① ✳✳ ❢r♦♠❊♥✉♠ ②❪ ❡♥✉♠❋r♦♠❚❤❡♥ ① ② ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ①✱ ❢r♦♠❊♥✉♠ ② ✳✳❪ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ① ② ③ ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ①✱ ❢r♦♠❊♥✉♠ ② ✳✳ ❢r♦♠❊♥✉♠ ③❪ ❝❧❛ss ❇♦✉♥❞❡❞ ❛ ♠✐♥❇♦✉♥❞ ♠❛①❇♦✉♥❞
✇❤❡r❡ ✿✿ ❛ ✿✿ ❛
✲✲ ×èñëîâûå êëàññû ❝❧❛ss ✭❊q ❛✱ ❙❤♦✇ ❛✮ ❂❃ ◆✉♠ ❛ ✇❤❡r❡ ✭✰✮✱ ✭✲✮✱ ✭✯✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ ♥❡❣❛t❡ ✿✿ ❛ ✲❃ ❛ ❛❜s✱ s✐❣♥✉♠ ✿✿ ❛ ✲❃ ❛ ❢r♦♠■♥t❡❣❡r ✿✿ ■♥t❡❣❡r ✲❃ ❛ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ➶ñå✱ çà èñêëþ÷åíèåì ♥❡❣❛t❡ èëè ✭✲✮ ① ✲ ② ❂ ① ✰ ♥❡❣❛t❡ ② ♥❡❣❛t❡ ① ❂ ✵ ✲ ① ❝❧❛ss ✭◆✉♠ ❛✱ ❖r❞ ❛✮ ❂❃ ❘❡❛❧ ❛ ✇❤❡r❡ t♦❘❛t✐♦♥❛❧ ✿✿ ❛ ✲❃ ❘❛t✐♦♥❛❧
✶✸✻
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
❝❧❛ss ✭❘❡❛❧ ❛✱ ❊♥✉♠ q✉♦t✱ r❡♠ ❞✐✈✱ ♠♦❞ q✉♦t❘❡♠✱ ❞✐✈▼♦❞ t♦■♥t❡❣❡r
❛✮ ✿✿ ✿✿ ✿✿ ✿✿
❂❃ ■♥t❡❣r❛❧ ❛ ✇❤❡r❡ ❛ ✲❃ ❛ ✲❃ ❛ ❛ ✲❃ ❛ ✲❃ ❛ ❛ ✲❃ ❛ ✲❃ ✭❛✱❛✮ ❛ ✲❃ ■♥t❡❣❡r
✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ q✉♦t❘❡♠✱ t♦■♥t❡❣❡r ♥ ❵q✉♦t❵ ❞ ❂ q ✇❤❡r❡ ✭q✱r✮ ❂ q✉♦t❘❡♠ ♥ ❞ ♥ ❵r❡♠❵ ❞ ❂ r ✇❤❡r❡ ✭q✱r✮ ❂ q✉♦t❘❡♠ ♥ ❞ ♥ ❵❞✐✈❵ ❞ ❂ q ✇❤❡r❡ ✭q✱r✮ ❂ ❞✐✈▼♦❞ ♥ ❞ ♥ ❵♠♦❞❵ ❞ ❂ r ✇❤❡r❡ ✭q✱r✮ ❂ ❞✐✈▼♦❞ ♥ ❞ ❞✐✈▼♦❞ ♥ ❞ ❂ ✐❢ s✐❣♥✉♠ r ❂❂ ✲ s✐❣♥✉♠ ❞ t❤❡♥ ✭q✲✶✱ r✰❞✮ ❡❧s❡ qr ✇❤❡r❡ qr❅✭q✱r✮ ❂ q✉♦t❘❡♠ ♥ ❞ ❝❧❛ss ✭◆✉♠ ❛✮ ❂❃ ❋r❛❝t✐♦♥❛❧ ❛ ✇❤❡r❡ ✭✴✮ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ r❡❝✐♣ ✿✿ ❛ ✲❃ ❛ ❢r♦♠❘❛t✐♦♥❛❧ ✿✿ ❘❛t✐♦♥❛❧ ✲❃ ❛ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ❢r♦♠❘❛t✐♦♥❛❧ è ✭r❡❝✐♣ èëè ✭✴✮✮ r❡❝✐♣ ① ❂ ✶ ✴ ① ① ✴ ② ❂ ① ✯ r❡❝✐♣ ② ❝❧❛ss ✭❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❋❧♦❛t✐♥❣ ❛ ✇❤❡r❡ ♣✐ ✿✿ ❛ ❡①♣✱ ❧♦❣✱ sqrt ✿✿ ❛ ✲❃ ❛ ✭✯✯✮✱ ❧♦❣❇❛s❡ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ s✐♥✱ ❝♦s✱ t❛♥ ✿✿ ❛ ✲❃ ❛ ❛s✐♥✱ ❛❝♦s✱ ❛t❛♥ ✿✿ ❛ ✲❃ ❛ s✐♥❤✱ ❝♦s❤✱ t❛♥❤ ✿✿ ❛ ✲❃ ❛ ❛s✐♥❤✱ ❛❝♦s❤✱ ❛t❛♥❤ ✿✿ ❛ ✲❃ ❛ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ♣✐✱ ❡①♣✱ ❧♦❣✱ s✐♥✱ ❝♦s✱ s✐♥❤✱ ❝♦s❤ ✲✲ ❛s✐♥✱ ❛❝♦s✱ ❛t❛♥ ✲✲ ❛s✐♥❤✱ ❛❝♦s❤✱ ❛t❛♥❤ ① ✯✯ ② ❂ ❡①♣ ✭❧♦❣ ① ✯ ②✮ ❧♦❣❇❛s❡ ① ② ❂ ❧♦❣ ② ✴ ❧♦❣ ① sqrt ① ❂ ① ✯✯ ✵✳✺ t❛♥ ① ❂ s✐♥ ① ✴ ❝♦s ① t❛♥❤ ① ❂ s✐♥❤ ① ✴ ❝♦s❤ ①
✶✸✼ ❝❧❛ss ✭❘❡❛❧ ❛✱ ❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❘❡❛❧❋r❛❝ ♣r♦♣❡r❋r❛❝t✐♦♥ ✿✿ ✭■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ tr✉♥❝❛t❡✱ r♦✉♥❞ ✿✿ ✭■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ ❝❡✐❧✐♥❣✱ ❢❧♦♦r ✿✿ ✭■♥t❡❣r❛❧ ❜✮ ❂❃ ❛
❛ ✲❃ ✲❃ ✲❃
✇❤❡r❡ ✭❜✱❛✮ ❜ ❜
✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ♣r♦♣❡r❋r❛❝t✐♦♥ tr✉♥❝❛t❡ ① ❂ ♠ ✇❤❡r❡ ✭♠✱❴✮ ❂ ♣r♦♣❡r❋r❛❝t✐♦♥ ① r♦✉♥❞ ①
❂ ❧❡t ✭♥✱r✮ ❂ ♣r♦♣❡r❋r❛❝t✐♦♥ ① ♠ ❂ ✐❢ r ❁ ✵ t❤❡♥ ♥ ✲ ✶ ❡❧s❡ ♥ ✰ ✶ ✐♥ ❝❛s❡ s✐❣♥✉♠ ✭❛❜s r ✲ ✵✳✺✮ ♦❢ ✲✶ ✲❃ ♥ ✵ ✲❃ ✐❢ ❡✈❡♥ ♥ t❤❡♥ ♥ ❡❧s❡ ♠ ✶ ✲❃ ♠
❝❡✐❧✐♥❣ ①
❂
❢❧♦♦r ①
❂ ✐❢ r ❁ ✵ t❤❡♥ ♥ ✲ ✶ ❡❧s❡ ♥ ✇❤❡r❡ ✭♥✱r✮ ❂ ♣r♦♣❡r❋r❛❝t✐♦♥ ①
✐❢ r ❃ ✵ t❤❡♥ ♥ ✰ ✶ ❡❧s❡ ♥ ✇❤❡r❡ ✭♥✱r✮ ❂ ♣r♦♣❡r❋r❛❝t✐♦♥ ①
✶✸✽
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
❝❧❛ss ✭❘❡❛❧❋r❛❝ ❛✱ ❋❧♦❛t✐♥❣ ❛✮ ❂❃ ❘❡❛❧❋❧♦❛t ❛ ✇❤❡r❡ ❢❧♦❛t❘❛❞✐① ✿✿ ❛ ✲❃ ■♥t❡❣❡r ❢❧♦❛t❉✐❣✐ts ✿✿ ❛ ✲❃ ■♥t ❢❧♦❛t❘❛♥❣❡ ✿✿ ❛ ✲❃ ✭■♥t✱■♥t✮ ❞❡❝♦❞❡❋❧♦❛t ✿✿ ❛ ✲❃ ✭■♥t❡❣❡r✱■♥t✮ ❡♥❝♦❞❡❋❧♦❛t ✿✿ ■♥t❡❣❡r ✲❃ ■♥t ✲❃ ❛ ❡①♣♦♥❡♥t ✿✿ ❛ ✲❃ ■♥t s✐❣♥✐❢✐❝❛♥❞ ✿✿ ❛ ✲❃ ❛ s❝❛❧❡❋❧♦❛t ✿✿ ■♥t ✲❃ ❛ ✲❃ ❛ ✐s◆❛◆✱ ✐s■♥❢✐♥✐t❡✱ ✐s❉❡♥♦r♠❛❧✐③❡❞✱ ✐s◆❡❣❛t✐✈❡❩❡r♦✱ ✐s■❊❊❊ ✿✿ ❛ ✲❃ ❇♦♦❧ ❛t❛♥✷ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ➶ñå✱ çà èñêëþ÷åíèåì ❡①♣♦♥❡♥t✱ s✐❣♥✐❢✐❝❛♥❞✱ ✲✲ s❝❛❧❡❋❧♦❛t✱ ❛t❛♥✷ ❡①♣♦♥❡♥t ① ❂ ✐❢ ♠ ❂❂ ✵ t❤❡♥ ✵ ❡❧s❡ ♥ ✰ ❢❧♦❛t❉✐❣✐ts ① ✇❤❡r❡ ✭♠✱♥✮ ❂ ❞❡❝♦❞❡❋❧♦❛t ① s✐❣♥✐❢✐❝❛♥❞ ①
❂ ❡♥❝♦❞❡❋❧♦❛t ♠ ✭✲ ❢❧♦❛t❉✐❣✐ts ①✮ ✇❤❡r❡ ✭♠✱❴✮ ❂ ❞❡❝♦❞❡❋❧♦❛t ①
s❝❛❧❡❋❧♦❛t ❦ ①
❂ ❡♥❝♦❞❡❋❧♦❛t ♠ ✭♥✰❦✮ ✇❤❡r❡ ✭♠✱♥✮ ❂ ❞❡❝♦❞❡❋❧♦❛t ①
❛t❛♥✷ ② ① ⑤ ①❃✵ ❂ ❛t❛♥ ✭②✴①✮ ⑤ ①❂❂✵ ✫✫ ②❃✵ ❂ ♣✐✴✷ ⑤ ①❁✵ ✫✫ ②❃✵ ❂ ♣✐ ✰ ❛t❛♥ ✭②✴①✮ ⑤✭①❁❂✵ ✫✫ ②❁✵✮ ⑤⑤ ✭①❁✵ ✫✫ ✐s◆❡❣❛t✐✈❡❩❡r♦ ②✮ ⑤⑤ ✭✐s◆❡❣❛t✐✈❡❩❡r♦ ① ✫✫ ✐s◆❡❣❛t✐✈❡❩❡r♦ ②✮ ❂ ✲❛t❛♥✷ ✭✲②✮ ① ⑤ ②❂❂✵ ✫✫ ✭①❁✵ ⑤⑤ ✐s◆❡❣❛t✐✈❡❩❡r♦ ①✮ ❂ ♣✐ ✲✲ äîëæåí áûòü ïîñëå ïðåäûäóùåé ïðîâåðêè ② íà íóëü ⑤ ①❂❂✵ ✫✫ ②❂❂✵ ❂ ② ✲✲ äîëæåí áûòü ïîñëå äðóãèõ äâîéíûõ ïðîâåðîê ✲✲ íà íóëü ⑤ ♦t❤❡r✇✐s❡ ❂ ① ✰ ② ✲✲ ① èëè ② ðàâåí ◆❛◆✱ âîçâðàùàåò ◆❛◆ ✲✲ ✭ïîñðåäñòâîì ✰✮ ✲✲ ×èñëîâûå ôóíêöèè s✉❜tr❛❝t s✉❜tr❛❝t
✿✿ ✭◆✉♠ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❛ ❂ ❢❧✐♣ ✭✲✮
❡✈❡♥✱ ♦❞❞ ❡✈❡♥ ♥ ♦❞❞
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❇♦♦❧ ❂ ♥ ❵r❡♠❵ ✷ ❂❂ ✵ ❂ ♥♦t ✳ ❡✈❡♥
❣❝❞ ❣❝❞ ✵ ✵ ❣❝❞ ① ②
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❛ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳❣❝❞✿ ❣❝❞ ✵ ✵ íå îïðåäåëåí✧ ❂ ❣❝❞✬ ✭❛❜s ①✮ ✭❛❜s ②✮ ✇❤❡r❡ ❣❝❞✬ ① ✵ ❂ ① ❣❝❞✬ ① ② ❂ ❣❝❞✬ ② ✭① ❵r❡♠❵ ②✮
✶✸✾ ❧❝♠ ❧❝♠ ❴ ✵ ❧❝♠ ✵ ❴ ❧❝♠ ① ②
✿✿ ❂ ❂ ❂
✭❫✮ ① ❫ ✵ ① ❫ ♥ ⑤ ♥ ❃ ✵
❴ ❫ ❴
✿✿ ✭◆✉♠ ❛✱ ■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜ ✲❃ ❛ ❂ ✶ ❂ ❢ ① ✭♥✲✶✮ ① ✇❤❡r❡ ❢ ❴ ✵ ② ❂ ② ❢ ① ♥ ② ❂ ❣ ① ♥ ✇❤❡r❡ ❣ ① ♥ ⑤ ❡✈❡♥ ♥ ❂ ❣ ✭①✯①✮ ✭♥ ❵q✉♦t❵ ✷✮ ⑤ ♦t❤❡r✇✐s❡ ❂ ❢ ① ✭♥✲✶✮ ✭①✯②✮ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳❫✿ îòðèöàòåëüíûé ïîêàçàòåëü ñòåïåíè✧
✭❫❫✮ ① ❫❫ ♥
✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✱ ■♥t❡❣r❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜ ✲❃ ❛ ❂ ✐❢ ♥ ❃❂ ✵ t❤❡♥ ①❫♥ ❡❧s❡ r❡❝✐♣ ✭①❫✭✲♥✮✮
❢r♦♠■♥t❡❣r❛❧ ❢r♦♠■♥t❡❣r❛❧
✿✿ ✭■♥t❡❣r❛❧ ❛✱ ◆✉♠ ❜✮ ❂❃ ❛ ✲❃ ❜ ❂ ❢r♦♠■♥t❡❣❡r ✳ t♦■♥t❡❣❡r
r❡❛❧❚♦❋r❛❝ r❡❛❧❚♦❋r❛❝
✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❛ ✵ ✵ ❛❜s ✭✭① ❵q✉♦t❵ ✭❣❝❞ ① ②✮✮ ✯ ②✮
✿✿ ✭❘❡❛❧ ❛✱ ❋r❛❝t✐♦♥❛❧ ❜✮ ❂❃ ❛ ✲❃ ❜ ❂ ❢r♦♠❘❛t✐♦♥❛❧ ✳ t♦❘❛t✐♦♥❛❧
✲✲ ❒îíàäè÷åñêèå êëàññû ❝❧❛ss ❋✉♥❝t♦r ❢ ❢♠❛♣
✇❤❡r❡ ✿✿ ✭❛ ✲❃ ❜✮ ✲❃ ❢ ❛ ✲❃ ❢ ❜
❝❧❛ss ▼♦♥❛❞ ♠ ✇❤❡r❡ ✭❃❃❂✮ ✿✿ ♠ ❛ ✲❃ ✭❛ ✲❃ ♠ ❜✮ ✲❃ ♠ ❜ ✭❃❃✮ ✿✿ ♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❜ r❡t✉r♥ ✿✿ ❛ ✲❃ ♠ ❛ ❢❛✐❧ ✿✿ ❙tr✐♥❣ ✲❃ ♠ ❛ ✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ ✭❃❃❂✮✱ r❡t✉r♥ ♠ ❃❃ ❦ ❂ ♠ ❃❃❂ ❭❴ ✲❃ ❦ ❢❛✐❧ s ❂ ❡rr♦r s s❡q✉❡♥❝❡ s❡q✉❡♥❝❡
✿✿ ▼♦♥❛❞ ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ❬❛❪ ❂ ❢♦❧❞r ♠❝♦♥s ✭r❡t✉r♥ ❬❪✮ ✇❤❡r❡ ♠❝♦♥s ♣ q ❂ ♣ ❃❃❂ ❭① ✲❃ q ❃❃❂ ❭② ✲❃ r❡t✉r♥ ✭①✿②✮
s❡q✉❡♥❝❡❴ s❡q✉❡♥❝❡❴
✿✿ ▼♦♥❛❞ ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ✭✮ ❂ ❢♦❧❞r ✭❃❃✮ ✭r❡t✉r♥ ✭✮✮
✲✲ Ôóíêöèè âèäà ①①①▼ ðàáîòàþò ñî ñïèñêîì àðãóìåíòîâ✱ íî ïîâûøàþò ✲✲ òèï ôóíêöèè èëè ýëåìåíòà ñïèñêà äî ìîíàäè÷åñêîãî òèïà ♠❛♣▼ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ♠ ❜✮ ✲❃ ❬❛❪ ✲❃ ♠ ❬❜❪ ♠❛♣▼ ❢ ❛s ❂ s❡q✉❡♥❝❡ ✭♠❛♣ ❢ ❛s✮ ♠❛♣▼❴ ♠❛♣▼❴ ❢ ❛s
✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ♠ ❜✮ ✲❃ ❬❛❪ ✲❃ ♠ ✭✮ ❂ s❡q✉❡♥❝❡❴ ✭♠❛♣ ❢ ❛s✮
✭❂❁❁✮ ❢ ❂❁❁ ①
✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ♠ ❜✮ ✲❃ ♠ ❛ ✲❃ ♠ ❜ ❂ ① ❃❃❂ ❢
✶✹✵
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✲✲ Òðèâèàëüíûé òèï ❞❛t❛
✭✮ ❂ ✭✮ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✮ ✲✲ ❮åäîïóñòèìî â ❍❛s❦❡❧❧❀ òîëüêî äëÿ ïðèìåðà
✲✲ Ôóíêöèîíàëüíûé òèï ✲✲ èäåíòè÷íàÿ ôóíêöèÿ ✐❞ ✿✿ ❛ ✲❃ ❛ ✐❞ ① ❂ ① ✲✲ êîíñòàíòíàÿ ôóíêöèÿ ❝♦♥st ✿✿ ❛ ✲❃ ❜ ✲❃ ❛ ❝♦♥st ① ❴ ❂ ① ✲✲ êîìïîçèöèÿ ôóíêöèé ✭✳✮ ✿✿ ✭❜ ✲❃ ❝✮ ✲❃ ✭❛ ✲❃ ❜✮ ✲❃ ❛ ✲❃ ❝ ❢ ✳ ❣ ❂ ❭ ① ✲❃ ❢ ✭❣ ①✮ ✲✲ ❢❧✐♣ ❢ ïðèíèìàåò ñâîè ✭ïåðâûå✮ äâà àðãóìåíòà â îáðàòíîì ïîðÿäêå äëÿ ❢✳ ❢❧✐♣ ✿✿ ✭❛ ✲❃ ❜ ✲❃ ❝✮ ✲❃ ❜ ✲❃ ❛ ✲❃ ❝ ❢❧✐♣ ❢ ① ② ❂ ❢ ② ① s❡q ✿✿ ❛ ✲❃ ❜ ✲❃ ❜ s❡q ❂ ✳✳✳ ✲✲ Ïðèìèòèâ ✲✲ ïðàâîàññîöèàòèâíîå èíôèêñíîå ïðèìåíåíèå îïåðàòîðîâ ✲✲ ✭ïîëåçíî â ñòèëå ñ âîçîáíîâëÿþùåéñÿ ïåðåäà÷åé✮ ✭✩✮✱ ✭✩✦✮ ✿✿ ✭❛ ✲❃ ❜✮ ✲❃ ❛ ✲❃ ❜ ❢ ✩ ① ❂ ❢ ① ❢ ✩✦ ① ❂ ① ❵s❡q❵ ❢ ① ✲✲ ➪óëåâñêèé òèï ❞❛t❛
❇♦♦❧
❂ ❋❛❧s❡ ⑤ ❚r✉❡
❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❘❡❛❞✱ ❙❤♦✇✱ ❇♦✉♥❞❡❞✮
✲✲ ➪óëåâû ôóíêöèè ✭✫✫✮✱ ❚r✉❡ ❋❛❧s❡ ❚r✉❡ ❋❛❧s❡
✭⑤⑤✮ ✫✫ ① ✫✫ ❴ ⑤⑤ ❴ ⑤⑤ ①
✿✿ ❂ ❂ ❂ ❂
❇♦♦❧ ✲❃ ❇♦♦❧ ✲❃ ❇♦♦❧ ① ❋❛❧s❡ ❚r✉❡ ①
♥♦t ♥♦t ❚r✉❡ ♥♦t ❋❛❧s❡
✿✿ ❇♦♦❧ ✲❃ ❇♦♦❧ ❂ ❋❛❧s❡ ❂ ❚r✉❡
♦t❤❡r✇✐s❡ ♦t❤❡r✇✐s❡
✿✿ ❇♦♦❧ ❂ ❚r✉❡
✲✲ Ñèìâîëüíûé òèï ❞❛t❛ ❈❤❛r ❂ ✳✳✳ ✬❛✬ ⑤ ✬❜✬ ✳✳✳ ✲✲ çíà÷åíèÿ ❯♥✐❝♦❞❡ ✐♥st❛♥❝❡ ❊q ❈❤❛r ❝ ❂❂ ❝✬
✇❤❡r❡ ❂ ❢r♦♠❊♥✉♠ ❝ ❂❂ ❢r♦♠❊♥✉♠ ❝✬
✶✹✶ ✐♥st❛♥❝❡ ❖r❞ ❈❤❛r ❝ ❁❂ ❝✬
✇❤❡r❡ ❂ ❢r♦♠❊♥✉♠ ❝ ❁❂ ❢r♦♠❊♥✉♠ ❝✬
✐♥st❛♥❝❡ ❊♥✉♠ ❈❤❛r ✇❤❡r❡ t♦❊♥✉♠ ❂ ♣r✐♠■♥t❚♦❈❤❛r ❢r♦♠❊♥✉♠ ❂ ♣r✐♠❈❤❛r❚♦■♥t ❡♥✉♠❋r♦♠ ❝ ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ❝ ✳✳ ❢r♦♠❊♥✉♠ ✭♠❛①❇♦✉♥❞✿✿❈❤❛r✮❪ ❡♥✉♠❋r♦♠❚❤❡♥ ❝ ❝✬ ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ❝✱ ❢r♦♠❊♥✉♠ ❝✬ ✳✳ ❢r♦♠❊♥✉♠ ❧❛st❈❤❛r❪ ✇❤❡r❡ ❧❛st❈❤❛r ✿✿ ❈❤❛r ❧❛st❈❤❛r ⑤ ❝✬ ❁ ❝ ❂ ♠✐♥❇♦✉♥❞ ⑤ ♦t❤❡r✇✐s❡ ❂ ♠❛①❇♦✉♥❞ ✐♥st❛♥❝❡ ❇♦✉♥❞❡❞ ❈❤❛r ✇❤❡r❡ ♠✐♥❇♦✉♥❞ ❂ ✬❭✵✬ ♠❛①❇♦✉♥❞ ❂ ♣r✐♠❯♥✐❝♦❞❡▼❛①❈❤❛r t②♣❡
❙tr✐♥❣ ❂ ❬❈❤❛r❪
✲✲ Òèï ✧ìîæåò áûòü✧ ✭▼❛②❜❡✮ ❞❛t❛
▼❛②❜❡ ❛
❂ ◆♦t❤✐♥❣ ⑤ ❏✉st ❛
❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮
♠❛②❜❡ ✿✿ ❜ ✲❃ ✭❛ ✲❃ ❜✮ ✲❃ ▼❛②❜❡ ❛ ✲❃ ❜ ♠❛②❜❡ ♥ ❢ ◆♦t❤✐♥❣ ❂ ♥ ♠❛②❜❡ ♥ ❢ ✭❏✉st ①✮ ❂ ❢ ① ✐♥st❛♥❝❡ ❋✉♥❝t♦r ▼❛②❜❡ ✇❤❡r❡ ❢♠❛♣ ❢ ◆♦t❤✐♥❣ ❂ ◆♦t❤✐♥❣ ❢♠❛♣ ❢ ✭❏✉st ①✮ ❂ ❏✉st ✭❢ ①✮ ✐♥st❛♥❝❡ ▼♦♥❛❞ ▼❛②❜❡ ✭❏✉st ①✮ ❃❃❂ ❦ ❂ ◆♦t❤✐♥❣ ❃❃❂ ❦ ❂ r❡t✉r♥ ❂ ❢❛✐❧ s ❂
✇❤❡r❡ ❦ ① ◆♦t❤✐♥❣ ❏✉st ◆♦t❤✐♥❣
✲✲ Òèï ✧èëè✧ ✭❊✐t❤❡r✮ ❞❛t❛
❊✐t❤❡r ❛ ❜ ❂
▲❡❢t ❛ ⑤ ❘✐❣❤t ❜
❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮
❡✐t❤❡r ✿✿ ✭❛ ✲❃ ❝✮ ✲❃ ✭❜ ✲❃ ❝✮ ✲❃ ❊✐t❤❡r ❛ ❜ ✲❃ ❝ ❡✐t❤❡r ❢ ❣ ✭▲❡❢t ①✮ ❂ ❢ ① ❡✐t❤❡r ❢ ❣ ✭❘✐❣❤t ②✮ ❂ ❣ ② ✲✲ Òèï ââîäà ✲ âûâîäà ❞❛t❛ ■❖ ❛ ❂ ✳✳✳
✲✲ àáñòðàêòíûé
✐♥st❛♥❝❡ ❋✉♥❝t♦r ■❖ ✇❤❡r❡ ❢♠❛♣ ❢ ① ❂ ① ❃❃❂ ✭r❡t✉r♥ ✳ ❢✮ ✐♥st❛♥❝❡ ▼♦♥❛❞ ■❖ ✇❤❡r❡ ✭❃❃❂✮ ❂ ✳✳✳ r❡t✉r♥ ❂ ✳✳✳ ❢❛✐❧ s ❂ ✐♦❊rr♦r ✭✉s❡r❊rr♦r s✮
✶✹✷
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✲✲ Òèï óïîðÿäî÷èâàíèÿ ❞❛t❛
❖r❞❡r✐♥❣ ❂ ▲❚ ⑤ ❊◗ ⑤ ●❚ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❘❡❛❞✱ ❙❤♦✇✱ ❇♦✉♥❞❡❞✮
✲✲ Ñòàíäàðòíûå ÷èñëîâûå òèïû✳ ❰áúÿâëåíèÿ äàííûõ äëÿ ýòèõ òèïîâ íåëüçÿ ✲✲ âûðàçèòü íåïîñðåäñòâåííî íà ❍❛s❦❡❧❧✱ ò✳ê✳ êîíñòðóèðóåìûå ñïèñêè áûëè áû ✲✲ ñëèøêîì äëèííûìè✳ ❞❛t❛ ■♥t ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
❂ ♠✐♥❇♦✉♥❞ ❊q ■♥t ❖r❞ ■♥t ◆✉♠ ■♥t ❘❡❛❧ ■♥t ■♥t❡❣r❛❧ ■♥t ❊♥✉♠ ■♥t ❇♦✉♥❞❡❞ ■♥t
✳✳✳ ✲✶ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
❞❛t❛ ■♥t❡❣❡r ❂ ✳✳✳ ✲✶ ⑤ ✐♥st❛♥❝❡ ❊q ■♥t❡❣❡r ✐♥st❛♥❝❡ ❖r❞ ■♥t❡❣❡r ✐♥st❛♥❝❡ ◆✉♠ ■♥t❡❣❡r ✐♥st❛♥❝❡ ❘❡❛❧ ■♥t❡❣❡r ✐♥st❛♥❝❡ ■♥t❡❣r❛❧ ■♥t❡❣❡r ✐♥st❛♥❝❡ ❊♥✉♠ ■♥t❡❣❡r
⑤ ✵ ⑤ ✶ ✳✳✳ ♠❛①❇♦✉♥❞ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✵ ⑤ ✶ ✳✳✳ ✇❤❡r❡ ✳✳✳ ✇❤❡r❡ ✳✳✳ ✇❤❡r❡ ✳✳✳ ✇❤❡r❡ ✳✳✳ ✇❤❡r❡ ✳✳✳ ✇❤❡r❡ ✳✳✳
❞❛t❛ ❋❧♦❛t ✐♥st❛♥❝❡ ❊q ✐♥st❛♥❝❡ ❖r❞ ✐♥st❛♥❝❡ ◆✉♠ ✐♥st❛♥❝❡ ❘❡❛❧ ✐♥st❛♥❝❡ ❋r❛❝t✐♦♥❛❧ ✐♥st❛♥❝❡ ❋❧♦❛t✐♥❣ ✐♥st❛♥❝❡ ❘❡❛❧❋r❛❝ ✐♥st❛♥❝❡ ❘❡❛❧❋❧♦❛t
❋❧♦❛t ❋❧♦❛t ❋❧♦❛t ❋❧♦❛t ❋❧♦❛t ❋❧♦❛t ❋❧♦❛t ❋❧♦❛t
❞❛t❛ ❉♦✉❜❧❡ ✐♥st❛♥❝❡ ❊q ✐♥st❛♥❝❡ ❖r❞ ✐♥st❛♥❝❡ ◆✉♠ ✐♥st❛♥❝❡ ❘❡❛❧ ✐♥st❛♥❝❡ ❋r❛❝t✐♦♥❛❧ ✐♥st❛♥❝❡ ❋❧♦❛t✐♥❣ ✐♥st❛♥❝❡ ❘❡❛❧❋r❛❝ ✐♥st❛♥❝❡ ❘❡❛❧❋❧♦❛t
❉♦✉❜❧❡ ❉♦✉❜❧❡ ❉♦✉❜❧❡ ❉♦✉❜❧❡ ❉♦✉❜❧❡ ❉♦✉❜❧❡ ❉♦✉❜❧❡ ❉♦✉❜❧❡
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✶✹✸ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
Ýêçåìïëÿðû ❊♥✉♠ äëÿ ❋❧♦❛t è ❉♦✉❜❧❡ ñëåãêà íåîáû÷íû✳ Ôóíêöèÿ ❵t♦❊♥✉♠✬ âûïîëíÿåò óñå÷åíèå ÷èñëà äî ■♥t✳ ❰ïðåäåëåíèÿ ❡♥✉♠❋r♦♠ è ❡♥✉♠❋r♦♠❚❤❡♥ ïîçâîëÿþò èñïîëüçîâàòü ÷èñëà ñ ïëàâàþùåé òî÷êîé â àðèôìåòè÷åñêèõ ïîñëåäîâàòåëüíîñòÿõ✿ ❬✵✱✵✳✶ ✳✳ ✵✳✾✺❪✳ Òåì íå ìåíåå✱ îøèáêè r♦✉♥❞♦❢❢ äåëàþò ýòî íåñêîëüêî ñîìíèòåëüíûì✳ ➶ ýòîì ïðèìåðå ìîæåò áûòü ✶✵ èëè ✶✶ ýëåìåíòîâ✱ â çàâèñèìîñòè îò òîãî✱ êàê ïðåäñòàâëåíî ✵✳✶✳
✐♥st❛♥❝❡ ❊♥✉♠ ❋❧♦❛t s✉❝❝ ① ♣r❡❞ ① t♦❊♥✉♠ ❢r♦♠❊♥✉♠ ❡♥✉♠❋r♦♠ ❡♥✉♠❋r♦♠❚❤❡♥ ❡♥✉♠❋r♦♠❚♦ ❡♥✉♠❋r♦♠❚❤❡♥❚♦
❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂
✇❤❡r❡ ①✰✶ ①✲✶ ❢r♦♠■♥t❡❣r❛❧ ❢r♦♠■♥t❡❣❡r ✳ tr✉♥❝❛t❡ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚♦ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥❚♦
✲✲ ìîæåò âûçâàòü ïåðåïîëíåíèå
✐♥st❛♥❝❡ ❊♥✉♠ ❉♦✉❜❧❡ s✉❝❝ ① ❂ ♣r❡❞ ① ❂ t♦❊♥✉♠ ❂ ❢r♦♠❊♥✉♠ ❂ ❡♥✉♠❋r♦♠ ❂ ❡♥✉♠❋r♦♠❚❤❡♥ ❂ ❡♥✉♠❋r♦♠❚♦ ❂ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ❂
✇❤❡r❡ ①✰✶ ①✲✶ ❢r♦♠■♥t❡❣r❛❧ ❢r♦♠■♥t❡❣❡r ✳ tr✉♥❝❛t❡ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚♦ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥❚♦
✲✲ ìîæåò âûçâàòü ïåðåïîëíåíèå
♥✉♠❡r✐❝❊♥✉♠❋r♦♠ ✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❛ ✲❃ ❬❛❪ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥ ✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚♦ ✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✱ ❖r❞ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥❚♦ ✿✿ ✭❋r❛❝t✐♦♥❛❧ ❛✱ ❖r❞ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❛ ✲❃ ❬❛❪ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠ ❂ ✐t❡r❛t❡ ✭✰✶✮ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥ ♥ ♠ ❂ ✐t❡r❛t❡ ✭✰✭♠✲♥✮✮ ♥ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚♦ ♥ ♠ ❂ t❛❦❡❲❤✐❧❡ ✭❁❂ ♠✰✶✴✷✮ ✭♥✉♠❡r✐❝❊♥✉♠❋r♦♠ ♥✮ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥❚♦ ♥ ♥✬ ♠ ❂ t❛❦❡❲❤✐❧❡ ♣ ✭♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥ ♥ ♥✬✮ ✇❤❡r❡ ♣ ⑤ ♥✬ ❃❂ ♥ ❂ ✭❁❂ ♠ ✰ ✭♥✬✲♥✮✴✷✮ ⑤ ♦t❤❡r✇✐s❡ ❂ ✭❃❂ ♠ ✰ ✭♥✬✲♥✮✴✷✮ ✲✲ Ñïèñêè ❞❛t❛
❬❛❪ ❂ ❬❪ ⑤ ❛ ✿ ❬❛❪ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✮ ✲✲ ❮åäîïóñòèìî â ❍❛s❦❡❧❧❀ òîëüêî äëÿ ïðèìåðà
✐♥st❛♥❝❡ ❋✉♥❝t♦r ❬❪ ✇❤❡r❡ ❢♠❛♣ ❂ ♠❛♣ ✐♥st❛♥❝❡ ▼♦♥❛❞ ❬❪ ♠ ❃❃❂ ❦ r❡t✉r♥ ① ❢❛✐❧ s
✇❤❡r❡ ❂ ❝♦♥❝❛t ✭♠❛♣ ❦ ♠✮ ❂ ❬①❪ ❂ ❬❪
✶✹✹
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✲✲ ✃îðòåæè ❞❛t❛ ❞❛t❛
✭❛✱❜✮ ❂ ✭❛✱❜✮ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❇♦✉♥❞❡❞✮ ✭❛✱❜✱❝✮ ❂ ✭❛✱❜✱❝✮ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❇♦✉♥❞❡❞✮ ✲✲ ❮åäîïóñòèìî â ❍❛s❦❡❧❧❀ òîëüêî äëÿ ïðèìåðà
✲✲ ïðîåêöèè êîìïîíåíò äëÿ ïàðû✿ ✲✲ ✭◆❇✿ íå ïðåäóñìîòðåíî äëÿ êîðòåæåé ðàçìåðà ✸✱ ✹ è ò✳ä✳✮ ❢st ✿✿ ✭❛✱❜✮ ✲❃ ❛ ❢st ✭①✱②✮ ❂ ① s♥❞ s♥❞ ✭①✱②✮
✿✿ ✭❛✱❜✮ ✲❃ ❜ ❂ ②
✲✲ ❝✉rr② ïðåîáðàçóåò ðàçâåðíóòóþ ôóíêöèþ ✭ôóíêöèþ äâóõ àðãóìåíòîâ✮ â ñâåðíóòóþ ✲✲ ôóíêöèþ ✭ôóíêöèþ íàä ïàðîé àðãóìåíòîâ✮ ✲✲ ✉♥❝✉rr② ïðåîáðàçóåò ñâåðíóòóþ ôóíêöèþ â ðàçâåðíóòóþ ôóíêöèþ ❝✉rr② ✿✿ ✭✭❛✱ ❜✮ ✲❃ ❝✮ ✲❃ ❛ ✲❃ ❜ ✲❃ ❝ ❝✉rr② ❢ ① ② ❂ ❢ ✭①✱ ②✮ ✉♥❝✉rr② ✉♥❝✉rr② ❢ ♣
✿✿ ✭❛ ✲❃ ❜ ✲❃ ❝✮ ✲❃ ✭✭❛✱ ❜✮ ✲❃ ❝✮ ❂ ❢ ✭❢st ♣✮ ✭s♥❞ ♣✮
✲✲ Ðàçíûå ôóíêöèè ✲✲ ✉♥t✐❧ ♣ ❢ ïîëó÷àåò ðåçóëüòàò ïðèìåíåíèÿ ❢ äî òåõ ïîð✱ ïîêà ♣ âûïîëíÿåòñÿ✳ ✉♥t✐❧ ✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ✭❛ ✲❃ ❛✮ ✲❃ ❛ ✲❃ ❛ ✉♥t✐❧ ♣ ❢ ① ⑤ ♣ ① ❂ ① ⑤ ♦t❤❡r✇✐s❡ ❂ ✉♥t✐❧ ♣ ❢ ✭❢ ①✮ ✲✲ ❛s❚②♣❡❖❢ ÿâëÿåòñÿ âåðñèåé ❝♦♥st ñ îãðàíè÷åííûì íàáîðîì òèïîâ✳ ❰íà îáû÷íî ✲✲ èñïîëüçóåòñÿ â êà÷åñòâå èíôèêñíîãî îïåðàòîðà✱ è åå òèïèçàöèÿ ïðèâîäèò ê òîìó✱ ✲✲ ÷òî åå ïåðâûé àðãóìåíò ✭êîòîðûé îáû÷íî ÿâëÿåòñÿ ïåðåãðóæåííûì✮ äîëæåí èìåòü ✲✲ òîò æå òèï✱ ÷òî âòîðîé àðãóìåíò✳ ❛s❚②♣❡❖❢ ✿✿ ❛ ✲❃ ❛ ✲❃ ❛ ❛s❚②♣❡❖❢ ❂ ❝♦♥st ✲✲ ❡rr♦r îñòàíàâëèâàåò âû÷èñëåíèå è âûâîäèò íà ýêðàí ñîîáùåíèå îá îøèáêå ❡rr♦r ❡rr♦r
✿✿ ❙tr✐♥❣ ✲❃ ❛ ❂ ♣r✐♠❊rr♦r
✲✲ ❰æèäàåòñÿ✱ ÷òî êîìïèëÿòîðû ðàñïîçíàþò ýòî è âñòàâÿò ✲✲ áîëåå ïîäõîäÿùèå ñîîáùåíèÿ îá îøèáêàõ äëÿ êîíòåêñòà✱ â êîòîðîì âîçíèê ✲✲ ✉♥❞❡❢✐♥❡❞✳ ✉♥❞❡❢✐♥❡❞ ✉♥❞❡❢✐♥❡❞
✿✿ ❛ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳✉♥❞❡❢✐♥❡❞✧
✽✳✶✳
✽✳✶
P❘❊▲❯❉❊
P❘❊▲❯❉❊▲■❙❚
Pr❡❧✉❞❡
Pr❡❧✉❞❡▲✐st
✲✲ Ñòàíäàðòíûå ôóíêöèè íàä ñïèñêàìè ♠♦❞✉❧❡ Pr❡❧✉❞❡▲✐st ✭ ♠❛♣✱ ✭✰✰✮✱ ❢✐❧t❡r✱ ❝♦♥❝❛t✱ ❝♦♥❝❛t▼❛♣✱ ❤❡❛❞✱ ❧❛st✱ t❛✐❧✱ ✐♥✐t✱ ♥✉❧❧✱ ❧❡♥❣t❤✱ ✭✦✦✮✱ ❢♦❧❞❧✱ ❢♦❧❞❧✶✱ s❝❛♥❧✱ s❝❛♥❧✶✱ ❢♦❧❞r✱ ❢♦❧❞r✶✱ s❝❛♥r✱ s❝❛♥r✶✱ ✐t❡r❛t❡✱ r❡♣❡❛t✱ r❡♣❧✐❝❛t❡✱ ❝②❝❧❡✱ t❛❦❡✱ ❞r♦♣✱ s♣❧✐t❆t✱ t❛❦❡❲❤✐❧❡✱ ❞r♦♣❲❤✐❧❡✱ s♣❛♥✱ ❜r❡❛❦✱ ❧✐♥❡s✱ ✇♦r❞s✱ ✉♥❧✐♥❡s✱ ✉♥✇♦r❞s✱ r❡✈❡rs❡✱ ❛♥❞✱ ♦r✱ ❛♥②✱ ❛❧❧✱ ❡❧❡♠✱ ♥♦t❊❧❡♠✱ ❧♦♦❦✉♣✱ s✉♠✱ ♣r♦❞✉❝t✱ ♠❛①✐♠✉♠✱ ♠✐♥✐♠✉♠✱ ③✐♣✱ ③✐♣✸✱ ③✐♣❲✐t❤✱ ③✐♣❲✐t❤✸✱ ✉♥③✐♣✱ ✉♥③✐♣✸✮ ✇❤❡r❡ ✐♠♣♦rt q✉❛❧✐❢✐❡❞ ❈❤❛r✭✐s❙♣❛❝❡✮ ✐♥❢✐①❧ ✾ ✐♥❢✐①r ✺ ✐♥❢✐① ✹
✦✦ ✰✰ ❵❡❧❡♠❵✱ ❵♥♦t❊❧❡♠❵
✲✲ ❰òîáðàæåíèå ✭♠❛♣✮ è äîáàâëåíèå â êîíåö ✭❛♣♣❡♥❞✮ ♠❛♣ ✿✿ ✭❛ ✲❃ ❜✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ♠❛♣ ❢ ❬❪ ❂ ❬❪ ♠❛♣ ❢ ✭①✿①s✮ ❂ ❢ ① ✿ ♠❛♣ ❢ ①s ✭✰✰✮ ✿✿ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❬❪ ✰✰ ②s ❂ ②s ✭①✿①s✮ ✰✰ ②s ❂ ① ✿ ✭①s ✰✰ ②s✮ ❢✐❧t❡r ✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❢✐❧t❡r ♣ ❬❪ ❂ ❬❪ ❢✐❧t❡r ♣ ✭①✿①s✮ ⑤ ♣ ① ❂ ① ✿ ❢✐❧t❡r ♣ ①s ⑤ ♦t❤❡r✇✐s❡ ❂ ❢✐❧t❡r ♣ ①s ❝♦♥❝❛t ✿✿ ❬❬❛❪❪ ✲❃ ❬❛❪ ❝♦♥❝❛t ①ss ❂ ❢♦❧❞r ✭✰✰✮ ❬❪ ①ss ❝♦♥❝❛t▼❛♣ ✿✿ ✭❛ ✲❃ ❬❜❪✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ❝♦♥❝❛t▼❛♣ ❢ ❂ ❝♦♥❝❛t ✳ ♠❛♣ ❢ ✲✲ ✲✲ ✲✲ ✲✲
❤❡❛❞ è t❛✐❧ èçâëåêàþò ñîîòâåòñòâåííî ïåðâûé è ïîñëåäíèé ýëåìåíòû êîíå÷íîãî ñïèñêà✳ ❧❛st è ✐♥✐t ÿâëÿþòñÿ äâîéñòâåííûìè ôóíêöèÿìè✱ êîòîðûå âûïîëíÿþòñÿ ñ êîíöà êîíå÷íîãî ñïèñêà✱ à íå ñ íà÷àëà✳
❤❡❛❞ ❤❡❛❞ ✭①✿❴✮ ❤❡❛❞ ❬❪
✿✿ ❬❛❪ ✲❃ ❛ ❂ ① ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳❤❡❛❞✿ ïóñòîé ñïèñîê✧
t❛✐❧ t❛✐❧ ✭❴✿①s✮ t❛✐❧ ❬❪
✿✿ ❬❛❪ ✲❃ ❬❛❪ ❂ ①s ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳t❛✐❧✿ ïóñòîé ñïèñîê✧
✶✹✺
✶✹✻
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
❧❛st ❧❛st ❬①❪ ❧❛st ✭❴✿①s✮ ❧❛st ❬❪
✿✿ ❂ ❂ ❂
❬❛❪ ✲❃ ❛ ① ❧❛st ①s ❡rr♦r ✧Pr❡❧✉❞❡✳❧❛st✿ ïóñòîé ñïèñîê✧
✐♥✐t ✐♥✐t ❬①❪ ✐♥✐t ✭①✿①s✮ ✐♥✐t ❬❪
✿✿ ❂ ❂ ❂
❬❛❪ ✲❃ ❬❛❪ ❬❪ ① ✿ ✐♥✐t ①s ❡rr♦r ✧Pr❡❧✉❞❡✳✐♥✐t✿ ïóñòîé ñïèñîê✧
♥✉❧❧ ♥✉❧❧ ❬❪ ♥✉❧❧ ✭❴✿❴✮
✿✿ ❬❛❪ ✲❃ ❇♦♦❧ ❂ ❚r✉❡ ❂ ❋❛❧s❡
✲✲ ❧❡♥❣t❤ âîçâðàùàåò äëèíó êîíå÷íîãî ñïèñêà â âèäå ■♥t✳ ❧❡♥❣t❤ ✿✿ ❬❛❪ ✲❃ ■♥t ❧❡♥❣t❤ ❬❪ ❂ ✵ ❧❡♥❣t❤ ✭❴✿❧✮ ❂ ✶ ✰ ❧❡♥❣t❤ ❧ ✲✲ ❰ïåðàòîð äîñòóïà ê ýëåìåíòàì ñïèñêà ïî èíäåêñó✱ íà÷àëî ✲✲✲ â ✵✳ ✭✦✦✮ ✿✿ ❬❛❪ ✲❃ ■♥t ✲❃ ❛ ①s ✦✦ ♥ ⑤ ♥ ❁ ✵ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳✦✦✿ îòðèöàòåëüíûé èíäåêñ✧ ❬❪ ✦✦ ❴ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳✦✦✿ ñëèøêîì áîëüøîé èíäåêñ✧ ✭①✿❴✮ ✦✦ ✵ ❂ ① ✭❴✿①s✮ ✦✦ ♥ ❂ ①s ✦✦ ✭♥✲✶✮ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
❢♦❧❞❧✱ áóäó÷è ïðèìåíåííîé ê ñâîèì àðãóìåíòàì✿ áèíàðíîìó îïåðàòîðó✱ íà÷àëüíîìó çíà÷åíèþ ✭îáû÷íî ëåâîìó àðãóìåíòó èç òîæäåñòâà îïåðàòîðà✮ è ñïèñêó✱ ñîêðàùàåò ñïèñîê✱ èñïîëüçóÿ áèíàðíûé îïåðàòîð ñëåâà íàïðàâî✿ ❢♦❧❞❧ ❢ ③ ❬①✶✱ ①✷✱ ✳✳✳✱ ①♥❪ ❂❂ ✭✳✳✳✭✭③ ❵❢❵ ①✶✮ ❵❢❵ ①✷✮ ❵❢❵✳✳✳✮ ❵❢❵ ①♥ ❢♦❧❞❧✶ ÿâëÿåòñÿ âàðèàíòîì ïðåäûäóùåé ôóíêöèè✱ îíà íå èìååò àðãóìåíòà ñ íà÷àëüíûì çíà÷åíèåì✱ è ïîýòîìó äîëæíà ïðèìåíÿòüñÿ ê íåïóñòûì ñïèñêàì✳ s❝❛♥❧ ïîõîæà íà ❢♦❧❞❧✱ íî âîçâðàùàåò ñïèñîê óñïåøíî ñîêðàùåííûõ çíà÷åíèé ñëåâà✿ s❝❛♥❧ ❢ ③ ❬①✶✱ ①✷✱ ✳✳✳❪ ❂❂ ❬③✱ ③ ❵❢❵ ①✶✱ ✭③ ❵❢❵ ①✶✮ ❵❢❵ ①✷✱ ✳✳✳❪ ❰áðàòèòå âíèìàíèå✱ ÷òî ❧❛st ✭s❝❛♥❧ ❢ ③ ①s✮ ❂❂ ❢♦❧❞❧ ❢ ③ ①s✳ s❝❛♥❧✶ ïîõîæà íà ïðåäûäóùóþ ôóíêöèþ✱ íî áåç íà÷àëüíîãî ýëåìåíòà✿ s❝❛♥❧✶ ❢ ❬①✶✱ ①✷✱ ✳✳✳❪ ❂❂ ❬①✶✱ ①✶ ❵❢❵ ①✷✱ ✳✳✳❪
❢♦❧❞❧ ✿✿ ✭❛ ✲❃ ❜ ✲❃ ❛✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ❛ ❢♦❧❞❧ ❢ ③ ❬❪ ❂ ③ ❢♦❧❞❧ ❢ ③ ✭①✿①s✮ ❂ ❢♦❧❞❧ ❢ ✭❢ ③ ①✮ ①s ❢♦❧❞❧✶ ✿✿ ✭❛ ✲❃ ❛ ✲❃ ❛✮ ✲❃ ❬❛❪ ✲❃ ❛ ❢♦❧❞❧✶ ❢ ✭①✿①s✮ ❂ ❢♦❧❞❧ ❢ ① ①s ❢♦❧❞❧✶ ❴ ❬❪ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳❢♦❧❞❧✶✿ ïóñòîé ñïèñîê✧ s❝❛♥❧ s❝❛♥❧ ❢ q ①s
✿✿ ✭❛ ✲❃ ❜ ✲❃ ❛✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ❬❛❪ ❂ q ✿ ✭❝❛s❡ ①s ♦❢ ❬❪ ✲❃ ❬❪ ①✿①s ✲❃ s❝❛♥❧ ❢ ✭❢ q ①✮ ①s✮
s❝❛♥❧✶ ✿✿ ✭❛ ✲❃ ❛ ✲❃ ❛✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ s❝❛♥❧✶ ❢ ✭①✿①s✮ ❂ s❝❛♥❧ ❢ ① ①s s❝❛♥❧✶ ❴ ❬❪ ❂ ❬❪
✽✳✶✳
P❘❊▲❯❉❊
P❘❊▲❯❉❊▲■❙❚
✲✲ ❢♦❧❞r✱ ❢♦❧❞r✶✱ s❝❛♥r è s❝❛♥r✶ ÿâëÿþòñÿ äâîéñòâåííûìè äîïîëíåíèÿìè ✲✲ îïèñàííûõ âûøå ôóíêöèé❀ îíè äåéñòâóþò ñïðàâà íàëåâî✳ ❢♦❧❞r ✿✿ ✭❛ ✲❃ ❜ ✲❃ ❜✮ ✲❃ ❜ ✲❃ ❬❛❪ ✲❃ ❜ ❢♦❧❞r ❢ ③ ❬❪ ❂ ③ ❢♦❧❞r ❢ ③ ✭①✿①s✮ ❂ ❢ ① ✭❢♦❧❞r ❢ ③ ①s✮ ❢♦❧❞r✶ ✿✿ ❢♦❧❞r✶ ❢ ❬①❪ ❂ ❢♦❧❞r✶ ❢ ✭①✿①s✮ ❂ ❢♦❧❞r✶ ❴ ❬❪ ❂
✭❛ ✲❃ ❛ ✲❃ ❛✮ ✲❃ ❬❛❪ ✲❃ ❛ ① ❢ ① ✭❢♦❧❞r✶ ❢ ①s✮ ❡rr♦r ✧Pr❡❧✉❞❡✳❢♦❧❞r✶✿ ïóñòîé ñïèñîê✧
s❝❛♥r ✿✿ ✭❛ ✲❃ ❜ ✲❃ ❜✮ ✲❃ ❜ ✲❃ ❬❛❪ ✲❃ ❬❜❪ s❝❛♥r ❢ q✵ ❬❪ ❂ ❬q✵❪ s❝❛♥r ❢ q✵ ✭①✿①s✮ ❂ ❢ ① q ✿ qs ✇❤❡r❡ qs❅✭q✿❴✮ ❂ s❝❛♥r ❢ q✵ ①s s❝❛♥r✶ s❝❛♥r✶ ❢ ❬❪ s❝❛♥r✶ ❢ ❬①❪ s❝❛♥r✶ ❢ ✭①✿①s✮
✿✿ ❂ ❂ ❂
✭❛ ✲❃ ❛ ✲❃ ❛✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❬❪ ❬①❪ ❢ ① q ✿ qs ✇❤❡r❡ qs❅✭q✿❴✮ ❂ s❝❛♥r✶ ❢ ①s
✲✲ ✐t❡r❛t❡ ❢ ① âîçâðàùàåò áåñêîíå÷íûé ñïèñîê ïîâòîðíûõ ïðèìåíåíèé ❢ ê ①✿ ✲✲ ✐t❡r❛t❡ ❢ ① ❂❂ ❬①✱ ❢ ①✱ ❢ ✭❢ ①✮✱ ✳✳✳❪ ✐t❡r❛t❡ ✿✿ ✭❛ ✲❃ ❛✮ ✲❃ ❛ ✲❃ ❬❛❪ ✐t❡r❛t❡ ❢ ① ❂ ① ✿ ✐t❡r❛t❡ ❢ ✭❢ ①✮ ✲✲ r❡♣❡❛t ① ïðåäñòàâëÿåò ñîáîé áåñêîíå÷íûé ñïèñîê✱ ãäå êàæäûé ýëåìåíò ðàâåí ①✳ r❡♣❡❛t ✿✿ ❛ ✲❃ ❬❛❪ r❡♣❡❛t ① ❂ ①s ✇❤❡r❡ ①s ❂ ①✿①s ✲✲ r❡♣❧✐❝❛t❡ ♥ ① ïðåäñòàâëÿåò ñîáîé ñïèñîê äëèíû ♥✱ ãäå êàæäûé ýëåìåíò ðàâåí ①✳ r❡♣❧✐❝❛t❡ ✿✿ ■♥t ✲❃ ❛ ✲❃ ❬❛❪ r❡♣❧✐❝❛t❡ ♥ ① ❂ t❛❦❡ ♥ ✭r❡♣❡❛t ①✮ ✲✲ ❝②❝❧❡ ñâÿçûâàåò êîíå÷íûé ñïèñîê â êðóãîâîé èëè✱ ÷òî òî æå ñàìîå✱ ✲✲ áåñêîíå÷íî ïîâòîðÿåò èñõîäíûé ñïèñîê✳ ❰í èäåíòè÷åí ✲✲ áåñêîíå÷íûì ñïèñêàì✳ ❝②❝❧❡ ❝②❝❧❡ ❬❪ ❝②❝❧❡ ①s ✲✲ ✲✲ ✲✲ ✲✲
✿✿ ❬❛❪ ✲❃ ❬❛❪ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳❝②❝❧❡✿ ïóñòîé ñïèñîê✧ ❂ ①s✬ ✇❤❡r❡ ①s✬ ❂ ①s ✰✰ ①s✬
t❛❦❡ ♥✱ áóäó÷è ïðèìåíåííîé ê ñïèñêó ①s✱ âîçâðàùàåò ïðåôèêñ ①s äëèíû ♥✱ èëè ñàì ①s✱ åñëè ♥ ❃ ❧❡♥❣t❤ ①s✳ ❞r♦♣ ♥ ①s âîçâðàùàåò ñóôôèêñ ①s ïîñëå ïåðâûõ ♥ ýëåìåíòîâ✱ èëè ❬❪✱ åñëè ♥ ❃ ❧❡♥❣t❤ ①s✳ s♣❧✐t❆t ♥ ①s ýêâèâàëåíòíà ✭t❛❦❡ ♥ ①s✱ ❞r♦♣ ♥ ①s✮✳
t❛❦❡ ✿✿ ■♥t ✲❃ ❬❛❪ ✲❃ ❬❛❪ t❛❦❡ ♥ ❴ ⑤ ♥ ❁❂ ✵ ❂ ❬❪ t❛❦❡ ❴ ❬❪ ❂ ❬❪ t❛❦❡ ♥ ✭①✿①s✮ ❂ ① ✿ t❛❦❡ ✭♥✲✶✮ ①s
✶✹✼
✶✹✽
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
❞r♦♣ ✿✿ ■♥t ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❞r♦♣ ♥ ①s ⑤ ♥ ❁❂ ✵ ❂ ①s ❞r♦♣ ❴ ❬❪ ❂ ❬❪ ❞r♦♣ ♥ ✭❴✿①s✮ ❂ ❞r♦♣ ✭♥✲✶✮ ①s s♣❧✐t❆t s♣❧✐t❆t ♥ ①s ✲✲ ✲✲ ✲✲ ✲✲
✿✿ ■♥t ✲❃ ❬❛❪ ✲❃ ✭❬❛❪✱❬❛❪✮ ❂ ✭t❛❦❡ ♥ ①s✱ ❞r♦♣ ♥ ①s✮
t❛❦❡❲❤✐❧❡✱ áóäó÷è ïðèìåíåííîé ê ïðåäèêàòó ♣ è ñïèñêó ①s✱ âîçâðàùàåò ñàìûé äëèííûé ïðåôèêñ ✭âîçìîæíî ïóñòîé✮ ①s✱ ýëåìåíòû êîòîðîãî óäîâëåòâîðÿþò ♣✳ ❞r♦♣❲❤✐❧❡ ♣ ①s âîçâðàùàåò îñòàâøèéñÿ ñóôôèêñ✳ s♣❛♥ ♣ ①s ýêâèâàëåíòíà ✭t❛❦❡❲❤✐❧❡ ♣ ①s✱ ❞r♦♣❲❤✐❧❡ ♣ ①s✮✱ òîãäà êàê ❜r❡❛❦ ♣ èñïîëüçóåò îòðèöàíèå ♣✳
t❛❦❡❲❤✐❧❡ t❛❦❡❲❤✐❧❡ ♣ ❬❪ t❛❦❡❲❤✐❧❡ ♣ ✭①✿①s✮ ⑤ ♣ ① ⑤ ♦t❤❡r✇✐s❡ ❞r♦♣❲❤✐❧❡ ❞r♦♣❲❤✐❧❡ ♣ ❬❪ ❞r♦♣❲❤✐❧❡ ♣ ①s❅✭①✿①s✬✮ ⑤ ♣ ① ⑤ ♦t❤❡r✇✐s❡
✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❬❪ ❂ ① ✿ t❛❦❡❲❤✐❧❡ ♣ ①s ❂ ❬❪ ✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❬❪ ❂ ❞r♦♣❲❤✐❧❡ ♣ ①s✬ ❂ ①s
s♣❛♥✱ ❜r❡❛❦ ✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ✭❬❛❪✱❬❛❪✮ s♣❛♥ ♣ ❬❪ ❂ ✭❬❪✱❬❪✮ s♣❛♥ ♣ ①s❅✭①✿①s✬✮ ⑤ ♣ ① ❂ ✭①✿②s✱③s✮ ⑤ ♦t❤❡r✇✐s❡ ❂ ✭❬❪✱①s✮ ✇❤❡r❡ ✭②s✱③s✮ ❂ s♣❛♥ ♣ ①s✬ ❜r❡❛❦ ♣ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
❂ s♣❛♥ ✭♥♦t ✳ ♣✮
❧✐♥❡s ðàçáèâàåò ñòðîêó â ìåñòàõ ñèìâîëîâ íîâîé ñòðîêè íà ñïèñîê ñòðîê✳ Ïîëó÷åííûå ñòðîêè íå ñîäåðæàò ñèìâîëîâ íîâîé ñòðîêè✳ ➚íàëîãè÷íî✱ ✇♦r❞s ðàçáèâàåò ñòðîêó íà ñïèñîê ñòðîê â ìåñòàõ ïðîáåëüíûõ ñèìâîëîâ✳ ✉♥❧✐♥❡s è ✉♥✇♦r❞s ÿâëÿþòñÿ îáðàòíûìè îïåðàöèÿìè✳ ✉♥❧✐♥❡s ñîåäèíÿåò ñòðîêè✱ äîáàâëÿÿ â êîíåö êàæäîé ñèìâîë íîâîé ñòðîêè✱ à ✉♥✇♦r❞s ñîåäèíÿåò ñëîâà✱ îòäåëÿÿ èõ äðóã îò äðóãà ïðîáåëàìè✳
❧✐♥❡s ❧✐♥❡s ✧✧ ❧✐♥❡s s
✿✿ ❙tr✐♥❣ ✲❃ ❬❙tr✐♥❣❪ ❂ ❬❪ ❂ ❧❡t ✭❧✱ s✬✮ ❂ ❜r❡❛❦ ✭❂❂ ✬❭♥✬✮ s ✐♥ ❧ ✿ ❝❛s❡ s✬ ♦❢ ❬❪ ✲❃ ❬❪ ✭❴✿s✑✮ ✲❃ ❧✐♥❡s s✑
✇♦r❞s ✇♦r❞s s
✿✿ ❙tr✐♥❣ ✲❃ ❬❙tr✐♥❣❪ ❂ ❝❛s❡ ❞r♦♣❲❤✐❧❡ ❈❤❛r✳✐s❙♣❛❝❡ s ♦❢ ✧✧ ✲❃ ❬❪ s✬ ✲❃ ✇ ✿ ✇♦r❞s s✑ ✇❤❡r❡ ✭✇✱ s✑✮ ❂ ❜r❡❛❦ ❈❤❛r✳✐s❙♣❛❝❡ s✬
✽✳✶✳
P❘❊▲❯❉❊
P❘❊▲❯❉❊▲■❙❚
✉♥❧✐♥❡s ✉♥❧✐♥❡s
✿✿ ❬❙tr✐♥❣❪ ✲❃ ❙tr✐♥❣ ❂ ❝♦♥❝❛t▼❛♣ ✭✰✰ ✧❭♥✧✮
✉♥✇♦r❞s ✉♥✇♦r❞s ❬❪ ✉♥✇♦r❞s ✇s
✿✿ ❬❙tr✐♥❣❪ ✲❃ ❙tr✐♥❣ ❂ ✧✧ ❂ ❢♦❧❞r✶ ✭❭✇ s ✲❃ ✇ ✰✰ ✬ ✬✿s✮ ✇s
✶✹✾
✲✲ r❡✈❡rs❡ ①s âîçâðàùàåò ýëåìåíòû ñïèñêà ①s â îáðàòíîì ïîðÿäêå✳ ✲✲ Ñïèñîê ①s äîëæåí áûòü êîíå÷íûì✳ r❡✈❡rs❡ ✿✿ ❬❛❪ ✲❃ ❬❛❪ r❡✈❡rs❡ ❂ ❢♦❧❞❧ ✭❢❧✐♣ ✭✿✮✮ ❬❪ ✲✲ ❛♥❞ âîçâðàùàåò êîíúþíêöèþ ñïèñêà áóëåâûõ çíà÷åíèé✳ ➘ëÿ òîãî ÷òîáû ðåçóëüòàò ✲✲ áûë èñòèíîé✱ ñïèñîê äîëæåí áûòü êîíå÷íûì❀ ❋❛❧s❡ ÿâëÿåòñÿ ðåçóëüòàòîì íàëè÷èÿ ✲✲ çíà÷åíèÿ ❋❛❧s❡ â ýëåìåíòå ñ êîíå÷íûì èíäåêñîì êîíå÷íîãî èëè ✲✲ áåñêîíå÷íîãî ñïèñêà✳ ✲✲ ♦r ÿâëÿåòñÿ äâîéñòâåííîé ê ❛♥❞ ôóíêöèåé✱ â íåé èñïîëüçóåòñÿ äèçúþíêöèÿ✳ ❛♥❞✱ ♦r ✿✿ ❬❇♦♦❧❪ ✲❃ ❇♦♦❧ ❛♥❞ ❂ ❢♦❧❞r ✭✫✫✮ ❚r✉❡ ♦r ❂ ❢♦❧❞r ✭⑤⑤✮ ❋❛❧s❡ ✲✲ ➪óäó÷è ïðèìåíåííîé ê ïðåäèêàòó è ñïèñêó✱ ❛♥② îïðåäåëÿåò✱ åñòü ëè õîòÿ áû îäèí ✲✲ ýëåìåíò ñïèñêà✱ êîòîðûé óäîâëåòâîðÿåò ïðåäèêàòó✳ ➚íàëîãè÷íî ❛❧❧ îïðåäåëÿåò✱ ✲✲ âñå ëè ýëåìåíòû ñïèñêà óäîâëåòâîðÿåò ïðåäèêàòó✳ ❛♥②✱ ❛❧❧ ✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❇♦♦❧ ❛♥② ♣ ❂ ♦r ✳ ♠❛♣ ♣ ❛❧❧ ♣ ❂ ❛♥❞ ✳ ♠❛♣ ♣ ✲✲ ❡❧❡♠ ÿâëÿåòñÿ ïðåäèêàòîì✱ êîòîðûé îïðåäåëÿåò✱ ÿâëÿåòñÿ ëè àðãóìåíò ýëåìåíòîì ✲✲ ñïèñêà❀ îáû÷íî îí çàïèñûâàåòñÿ â èíôèêñíîé ôîðìå✱ ✲✲ íàïðèìåð✱ ① ❵❡❧❡♠❵ ①s✳ ♥♦t❊❧❡♠ ÿâëÿåòñÿ îòðèöàíèåì ïðåäûäóùåé ôóíêöèè✳ ❡❧❡♠✱ ♥♦t❊❧❡♠ ✿✿ ✭❊q ❛✮ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❇♦♦❧ ❡❧❡♠ ① ❂ ❛♥② ✭❂❂ ①✮ ♥♦t❊❧❡♠ ① ❂ ❛❧❧ ✭✴❂ ①✮ ✲✲ ❧♦♦❦✉♣ ❦❡② ❛ss♦❝s èùåò êëþ÷ â àññîöèàòèâíîì ñïèñêå✳ ❧♦♦❦✉♣ ✿✿ ✭❊q ❛✮ ❂❃ ❛ ✲❃ ❬✭❛✱❜✮❪ ✲❃ ▼❛②❜❡ ❜ ❧♦♦❦✉♣ ❦❡② ❬❪ ❂ ◆♦t❤✐♥❣ ❧♦♦❦✉♣ ❦❡② ✭✭①✱②✮✿①②s✮ ⑤ ❦❡② ❂❂ ① ❂ ❏✉st ② ⑤ ♦t❤❡r✇✐s❡ ❂ ❧♦♦❦✉♣ ❦❡② ①②s ✲✲ s✉♠ è ♣r♦❞✉❝t ✲✲ ñïèñêà✳ s✉♠✱ ♣r♦❞✉❝t s✉♠ ♣r♦❞✉❝t
âû÷èñëÿþò ñîîòâåòñòâåííî ñóììó è ïðîèçâåäåíèå ÷èñåë èç êîíå÷íîãî ✿✿ ✭◆✉♠ ❛✮ ❂❃ ❬❛❪ ✲❃ ❛ ❂ ❢♦❧❞❧ ✭✰✮ ✵ ❂ ❢♦❧❞❧ ✭✯✮ ✶
✲✲ ♠❛①✐♠✉♠ è ♠✐♥✐♠✉♠ âîçâðàùàþò ñîîòâåòñòâåííî ìàêñèìàëüíîå è ìèíèìàëüíîå çíà÷åíèå ✲✲ èç ñïèñêà✱ êîòîðûé äîëæåí áûòü íåïóñò✱ êîíå÷åí è ñîäåðæàòü ýëåìåíòû✱ êîòîðûå ✲✲ ìîæíî óïîðÿäî÷èòü✳ ♠❛①✐♠✉♠✱ ♠✐♥✐♠✉♠ ✿✿ ✭❖r❞ ❛✮ ❂❃ ❬❛❪ ✲❃ ❛ ♠❛①✐♠✉♠ ❬❪ ❂ ❡rr♦r ✧Pr❡❧✉❞❡✳♠❛①✐♠✉♠✿ ïóñòîé ñïèñîê✧ ♠❛①✐♠✉♠ ①s ❂ ❢♦❧❞❧✶ ♠❛① ①s
✶✺✵ ♠✐♥✐♠✉♠ ❬❪ ♠✐♥✐♠✉♠ ①s ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
❂ ❂
❡rr♦r ✧Pr❡❧✉❞❡✳♠✐♥✐♠✉♠✿ ïóñòîé ñïèñîê✧ ❢♦❧❞❧✶ ♠✐♥ ①s
③✐♣ ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ äâà ñïèñêà è âîçâðàùàåò ñïèñîê ñîîòâåòñòâóþùèõ ïàð✳ ➴ñëè îäèí èç âõîäíûõ ñïèñêîâ êîðî÷å✱ äîïîëíèòåëüíûå ýëåìåíòû áîëåå äëèííîãî ñïèñêà èãíîðèðóþòñÿ✳ ③✐♣✸ ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ òðè ñïèñêà è âîçâðàùàåò ñïèñîê êîðòåæåé ðàçìåðà ✸✳ Ôóíêöèè ③✐♣ äëÿ áîëåå äëèííûõ êîðòåæåé íàõîäÿòñÿ â áèáëèîòåêå ▲✐st✳
③✐♣ ③✐♣
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬✭❛✱❜✮❪ ❂ ③✐♣❲✐t❤ ✭✱✮
③✐♣✸ ③✐♣✸
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬✭❛✱❜✱❝✮❪ ❂ ③✐♣❲✐t❤✸ ✭➼✮
✲✲ ✲✲ ✲✲ ✲✲ ✲✲
Ñåìåéñòâî ôóíêöèé ③✐♣❲✐t❤ ÿâëÿåòñÿ îáîáùåíèåì ñåìåéñòâà ôóíêöèé ③✐♣❀ îíè óïàêîâûâàþò ýëåìåíòû ñïèñêîâ ñ ïîìîùüþ ôóíêöèè✱ çàäàííîé â êà÷åñòâå ïåðâîãî àðãóìåíòà✱ âìåñòî ôóíêöèè ñîçäàíèÿ êîðòåæåé✳ ❮àïðèìåð✱ ③✐♣❲✐t❤ ✭✰✮✱ áóäó÷è ïðèìåíåííîé ê äâóì ñïèñêàì✱ ïîðîæäàåò ñïèñîê ñîîòâåòñòâóþùèõ ñóìì✳
③✐♣❲✐t❤ ✿✿ ✭❛✲❃❜✲❃❝✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪ ③✐♣❲✐t❤ ③ ✭❛✿❛s✮ ✭❜✿❜s✮ ❂ ③ ❛ ❜ ✿ ③✐♣❲✐t❤ ③ ❛s ❜s ③✐♣❲✐t❤ ❴ ❴ ❴ ❂ ❬❪ ③✐♣❲✐t❤✸ ✿✿ ✭❛✲❃❜✲❃❝✲❃❞✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪ ③✐♣❲✐t❤✸ ③ ✭❛✿❛s✮ ✭❜✿❜s✮ ✭❝✿❝s✮ ❂ ③ ❛ ❜ ❝ ✿ ③✐♣❲✐t❤✸ ③ ❛s ❜s ❝s ③✐♣❲✐t❤✸ ❴ ❴ ❴ ❴ ❂ ❬❪ ✲✲ ✉♥③✐♣ ïðåîáðàçóåò ñïèñîê ïàð â ïàðó ñïèñêîâ✳ ✉♥③✐♣ ✉♥③✐♣
✿✿ ❬✭❛✱❜✮❪ ✲❃ ✭❬❛❪✱❬❜❪✮ ❂ ❢♦❧❞r ✭❭✭❛✱❜✮ ⑦✭❛s✱❜s✮ ✲❃ ✭❛✿❛s✱❜✿❜s✮✮ ✭❬❪✱❬❪✮
✉♥③✐♣✸ ✉♥③✐♣✸
✿✿ ❬✭❛✱❜✱❝✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✮ ❂ ❢♦❧❞r ✭❭✭❛✱❜✱❝✮ ⑦✭❛s✱❜s✱❝s✮ ✲❃ ✭❛✿❛s✱❜✿❜s✱❝✿❝s✮✮ ✭❬❪✱❬❪✱❬❪✮
✽✳✷✳
P❘❊▲❯❉❊
✽✳✷
P❘❊▲❯❉❊❚❊❳❚
Pr❡❧✉❞❡
✶✺✶
Pr❡❧✉❞❡❚❡①t
♠♦❞✉❧❡ Pr❡❧✉❞❡❚❡①t ✭ ❘❡❛❞❙✱ ❙❤♦✇❙✱ ❘❡❛❞✭r❡❛❞sPr❡❝✱ r❡❛❞▲✐st✮✱ ❙❤♦✇✭s❤♦✇sPr❡❝✱ s❤♦✇✱ s❤♦✇▲✐st✮✱ r❡❛❞s✱ s❤♦✇s✱ r❡❛❞✱ ❧❡①✱ s❤♦✇❈❤❛r✱ s❤♦✇❙tr✐♥❣✱ r❡❛❞P❛r❡♥✱ s❤♦✇P❛r❡♥ ✮ ✇❤❡r❡ ✲✲ Ýêçåìïëÿðû êëàññîâ ❘❡❛❞ è ❙❤♦✇ äëÿ ✲✲ ❇♦♦❧✱ ▼❛②❜❡✱ ❊✐t❤❡r✱ ❖r❞❡r✐♥❣ ✲✲ ñîçäàíû ïîñðåäñòâîì èíñòðóêöèé ✧❞❡r✐✈✐♥❣✧ â Pr❡❧✉❞❡✳❤s ✐♠♣♦rt ❈❤❛r✭✐s❙♣❛❝❡✱ ✐s❆❧♣❤❛✱ ✐s❉✐❣✐t✱ ✐s❆❧♣❤❛◆✉♠✱ s❤♦✇▲✐t❈❤❛r✱ r❡❛❞▲✐t❈❤❛r✱ ❧❡①▲✐t❈❤❛r✮ ✐♠♣♦rt ◆✉♠❡r✐❝✭s❤♦✇❙✐❣♥❡❞✱ s❤♦✇■♥t✱ r❡❛❞❙✐❣♥❡❞✱ r❡❛❞❉❡❝✱ s❤♦✇❋❧♦❛t✱ r❡❛❞❋❧♦❛t✱ ❧❡①❉✐❣✐ts✮ t②♣❡ t②♣❡
❘❡❛❞❙ ❛ ❂ ❙tr✐♥❣ ✲❃ ❬✭❛✱❙tr✐♥❣✮❪ ❙❤♦✇❙ ❂ ❙tr✐♥❣ ✲❃ ❙tr✐♥❣
❝❧❛ss ❘❡❛❞ ❛ r❡❛❞sPr❡❝ r❡❛❞▲✐st
✇❤❡r❡
✿✿ ■♥t ✲❃ ❘❡❛❞❙ ❛ ✿✿ ❘❡❛❞❙ ❬❛❪
✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ r❡❛❞sPr❡❝ r❡❛❞▲✐st ❂ r❡❛❞P❛r❡♥ ❋❛❧s❡ ✭❭r ✲❃ ❬♣r ⑤ ✭✧❬✧✱s✮ ♣r ✇❤❡r❡ r❡❛❞❧ s ❂ ❬✭❬❪✱t✮ ⑤ ✭✧❪✧✱t✮ ❬✭①✿①s✱✉✮ ⑤ ✭①✱t✮ ✭①s✱✉✮ r❡❛❞❧✬ s ❂ ❬✭❬❪✱t✮ ⑤ ✭✧❪✧✱t✮ ❬✭①✿①s✱✈✮ ⑤ ✭✧✱✧✱t✮ ✭①✱✉✮ ✭①s✱✈✮ ❝❧❛ss ❙❤♦✇ ❛ s❤♦✇sPr❡❝ s❤♦✇ s❤♦✇▲✐st
✇❤❡r❡
❁✲ ❁✲ ❁✲ ❁✲ ❁✲ ❁✲ ❁✲ ❁✲ ❁✲
❧❡① r✱ r❡❛❞❧ s❪✮ ❧❡① s❪ ✰✰ r❡❛❞s s✱ r❡❛❞❧✬ t❪ ❧❡① s❪ ✰✰ ❧❡① s✱ r❡❛❞s t✱ r❡❛❞❧✬ ✉❪
✿✿ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ✿✿ ❛ ✲❃ ❙tr✐♥❣ ✿✿ ❬❛❪ ✲❃ ❙❤♦✇❙
✲✲ ❒èíèìàëüíîå ïîëíîå îïðåäåëåíèå✿ ✲✲ s❤♦✇ èëè s❤♦✇sPr❡❝ s❤♦✇sPr❡❝ ❴ ① s ❂ s❤♦✇ ① ✰✰ s s❤♦✇ ①
❂ s❤♦✇sPr❡❝ ✵ ① ✧✧
s❤♦✇▲✐st ❬❪ s❤♦✇▲✐st ✭①✿①s✮
❂ s❤♦✇❙tr✐♥❣ ✧❬❪✧ ❂ s❤♦✇❈❤❛r ✬❬✬ ✳ s❤♦✇s ① ✳ s❤♦✇❧ ①s ✇❤❡r❡ s❤♦✇❧ ❬❪ ❂ s❤♦✇❈❤❛r ✬❪✬ s❤♦✇❧ ✭①✿①s✮ ❂ s❤♦✇❈❤❛r ✬✱✬ ✳ s❤♦✇s ① ✳ s❤♦✇❧ ①s
✶✺✷
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
r❡❛❞s r❡❛❞s
✿✿ ✭❘❡❛❞ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ❂ r❡❛❞sPr❡❝ ✵
s❤♦✇s s❤♦✇s
✿✿ ✭❙❤♦✇ ❛✮ ❂❃ ❛ ✲❃ ❙❤♦✇❙ ❂ s❤♦✇sPr❡❝ ✵
r❡❛❞ r❡❛❞ s
✿✿ ✭❘❡❛❞ ❛✮ ❂❃ ❙tr✐♥❣ ✲❃ ❛ ❂ ❝❛s❡ ❬① ⑤ ✭①✱t✮ ❁✲ r❡❛❞s s✱ ✭✧✧✱✧✧✮ ❁✲ ❧❡① t❪ ♦❢ ❬①❪ ✲❃ ① ❬❪ ✲❃ ❡rr♦r ✧Pr❡❧✉❞❡✳r❡❛❞✿ íåò ðàçáîðà✧ ❴ ✲❃ ❡rr♦r ✧Pr❡❧✉❞❡✳r❡❛❞✿ íåîäíîçíà÷íûé ðàçáîð✧
s❤♦✇❈❤❛r s❤♦✇❈❤❛r
✿✿ ❈❤❛r ✲❃ ❙❤♦✇❙ ❂ ✭✿✮
s❤♦✇❙tr✐♥❣ s❤♦✇❙tr✐♥❣
✿✿ ❙tr✐♥❣ ✲❃ ❙❤♦✇❙ ❂ ✭✰✰✮
s❤♦✇P❛r❡♥ s❤♦✇P❛r❡♥ ❜ ♣
✿✿ ❇♦♦❧ ✲❃ ❙❤♦✇❙ ✲❃ ❙❤♦✇❙ ❂ ✐❢ ❜ t❤❡♥ s❤♦✇❈❤❛r ✬✭✬ ✳ ♣ ✳ s❤♦✇❈❤❛r ✬✮✬ ❡❧s❡ ♣
r❡❛❞P❛r❡♥ r❡❛❞P❛r❡♥ ❜ ❣
✿✿ ❇♦♦❧ ✲❃ ❘❡❛❞❙ ❛ ✲❃ ❘❡❛❞❙ ❛ ❂ ✐❢ ❜ t❤❡♥ ♠❛♥❞❛t♦r② ❡❧s❡ ♦♣t✐♦♥❛❧ ✇❤❡r❡ ♦♣t✐♦♥❛❧ r ❂ ❣ r ✰✰ ♠❛♥❞❛t♦r② ♠❛♥❞❛t♦r② r ❂ ❬✭①✱✉✮ ⑤ ✭✧✭✧✱s✮ ✭①✱t✮ ✭✧✮✧✱✉✮
r ❁✲ ❧❡① r✱ ❁✲ ♦♣t✐♦♥❛❧ s✱ ❁✲ ❧❡① t ❪
✲✲ Ýòîò ëåêñè÷åñêèé àíàëèçàòîð íå ïîëíîñòüþ ñîîòâåòñòâóåò ëåêñè÷åñêîìó ñèíòàêñèñó ✲✲ ❍❛s❦❡❧❧✳ ✲✲ Òåêóùèå îãðàíè÷åíèÿ✿ ✲✲ ✃âàëèôèöèðîâàííûå èìåíà íå óïðàâëÿþòñÿ äîëæíûì îáðàçîì ✲✲ ➶îñüìèðè÷íûå è øåñòíàäöàòèðè÷íûå öèôðû íå ðàñïîçíàþòñÿ êàê îòäåëüíûé òîêåí ✲✲ ✃îììåíòàðèè íå îáðàáàòûâàþòñÿ äîëæíûì îáðàçîì ❧❡① ✿✿ ❘❡❛❞❙ ❙tr✐♥❣ ❧❡① ✧✧ ❂ ❬✭✧✧✱✧✧✮❪ ❧❡① ✭❝✿s✮ ⑤ ✐s❙♣❛❝❡ ❝ ❂ ❧❡① ✭❞r♦♣❲❤✐❧❡ ✐s❙♣❛❝❡ s✮ ❧❡① ✭✬❭✑✿s✮ ❂ ❬✭✬❭✑✿❝❤✰✰✧✬✧✱ t✮ ⑤ ✭❝❤✱✬❭✑✿t✮ ❁✲ ❧❡①▲✐t❈❤❛r s✱ ❝❤ ✴❂ \ ✧ ❪ ❧❡① ✭✬\ ✿s✮ ❂ ❬✭✬\ ✿str✱ t✮ ⑤ ✭str✱t✮ ❁✲ ❧❡①❙tr✐♥❣ s❪ ✇❤❡r❡ ❧❡①❙tr✐♥❣ ✭✬\ ✿s✮ ❂ ❬✭✧❭✧✧✱s✮❪ ❧❡①❙tr✐♥❣ s ❂ ❬✭❝❤✰✰str✱ ✉✮ ⑤ ✭❝❤✱t✮ ❁✲ ❧❡①❙tr■t❡♠ s✱ ✭str✱✉✮ ❁✲ ❧❡①❙tr✐♥❣ t ❪ ❧❡①❙tr■t❡♠ ✭✬❭❭✬✿✬✫✬✿s✮ ❂ ❬✭✧❭❭✫✧✱s✮❪ ❧❡①❙tr■t❡♠ ✭✬❭❭✬✿❝✿s✮ ⑤ ✐s❙♣❛❝❡ ❝ ❂ ❬✭✧❭❭✫✧✱t✮ ⑤ ✬❭❭✬✿t ❁✲ ❬❞r♦♣❲❤✐❧❡ ✐s❙♣❛❝❡ s❪❪ ❧❡①❙tr■t❡♠ s ❂ ❧❡①▲✐t❈❤❛r s
✽✳✷✳
P❘❊▲❯❉❊
❧❡① ✭❝✿s✮ ⑤ ⑤ ⑤ ⑤
P❘❊▲❯❉❊❚❊❳❚
✐s❙✐♥❣❧❡ ❝ ✐s❙②♠ ❝ ✐s❆❧♣❤❛ ❝ ✐s❉✐❣✐t ❝
❂ ❂ ❂ ❂
✶✺✸
❬✭❬❝❪✱s✮❪ ❬✭❝✿s②♠✱t✮ ❬✭❝✿♥❛♠✱t✮ ❬✭❝✿❞s✰✰❢❡✱t✮
⑤ ✭s②♠✱t✮ ❁✲ ❬s♣❛♥ ✐s❙②♠ s❪❪ ⑤ ✭♥❛♠✱t✮ ❁✲ ❬s♣❛♥ ✐s■❞❈❤❛r s❪❪ ⑤ ✭❞s✱s✮ ❁✲ ❬s♣❛♥ ✐s❉✐❣✐t s❪✱ ✭❢❡✱t✮ ❁✲ ❧❡①❋r❛❝❊①♣ s ❪ ✲✲ ïëîõîé ñèìâîë
⑤ ♦t❤❡r✇✐s❡ ❂ ❬❪ ✇❤❡r❡ ✐s❙✐♥❣❧❡ ❝ ❂ ❝ ❵❡❧❡♠❵ ✧✱❀✭✮❬❪④⑥❴❵✧ ✐s❙②♠ ❝ ❂ ❝ ❵❡❧❡♠❵ ✧✦❅★✩✪✫✯✰✳✴❁❂❃❄❭❭❫⑤✿✲⑦✧ ✐s■❞❈❤❛r ❝ ❂ ✐s❆❧♣❤❛◆✉♠ ❝ ⑤⑤ ❝ ❵❡❧❡♠❵ ✧❴✬✧
❧❡①❋r❛❝❊①♣ ✭✬✳✬✿❝✿❝s✮ ⑤ ✐s❉✐❣✐t ❝ ❂ ❬✭✬✳✬✿❞s✰✰❡✱✉✮ ⑤ ✭❞s✱t✮ ❁✲ ❧❡①❉✐❣✐ts ✭❝✿❝s✮✱ ✭❡✱✉✮ ❁✲ ❧❡①❊①♣ t❪ ❧❡①❋r❛❝❊①♣ s ❂ ❧❡①❊①♣ s ❧❡①❊①♣ ✭❡✿s✮ ⑤ ❡ ❵❡❧❡♠❵ ✧❡❊✧ ❂ ❬✭❡✿❝✿❞s✱✉✮ ⑤ ✭❝✿t✮ ❬✭❡✿❞s✱t✮ ❧❡①❊①♣ s ❂ ❬✭✧✧✱s✮❪
❁✲ ❬s❪✱ ❝ ❵❡❧❡♠❵ ✧✰✲✧✱ ✭❞s✱✉✮ ❁✲ ❧❡①❉✐❣✐ts t❪ ✰✰ ⑤ ✭❞s✱t✮ ❁✲ ❧❡①❉✐❣✐ts s❪
✐♥st❛♥❝❡ ❙❤♦✇ ■♥t ✇❤❡r❡ s❤♦✇sPr❡❝ ♥ ❂ s❤♦✇sPr❡❝ ♥ ✳ t♦■♥t❡❣❡r ✲✲ Ïðåîáðàçîâàíèå ê ■♥t❡❣❡r ïîçâîëÿåò èçáåæàòü ✲✲ âîçìîæíîãî ïðîòèâîðå÷èÿ ñ ♠✐♥■♥t ✐♥st❛♥❝❡ ❘❡❛❞ ■♥t ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ r ❂ ❬✭❢r♦♠■♥t❡❣❡r ✐✱ t✮ ⑤ ✭✐✱t✮ ❁✲ r❡❛❞sPr❡❝ ♣ r❪ ✲✲ Ñ÷èòûâàíèå â òèï ■♥t❡❣❡r ïîçâîëÿåò èçáåæàòü ✲✲ âîçìîæíîãî ïðîòèâîðå÷èÿ ñ ♠✐♥■♥t ✐♥st❛♥❝❡ ❙❤♦✇ ■♥t❡❣❡r ✇❤❡r❡ s❤♦✇sPr❡❝ ❂ s❤♦✇❙✐❣♥❡❞ s❤♦✇■♥t ✐♥st❛♥❝❡ ❘❡❛❞ ■♥t❡❣❡r ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞❙✐❣♥❡❞ r❡❛❞❉❡❝ ✐♥st❛♥❝❡ ❙❤♦✇ ❋❧♦❛t s❤♦✇sPr❡❝ ♣
✇❤❡r❡ ❂ s❤♦✇❋❧♦❛t
✐♥st❛♥❝❡ ❘❡❛❞ ❋❧♦❛t r❡❛❞sPr❡❝ ♣
✇❤❡r❡ ❂ r❡❛❞❙✐❣♥❡❞ r❡❛❞❋❧♦❛t
✐♥st❛♥❝❡ ❙❤♦✇ ❉♦✉❜❧❡ s❤♦✇sPr❡❝ ♣
✇❤❡r❡ ❂ s❤♦✇❋❧♦❛t
✐♥st❛♥❝❡ ❘❡❛❞ ❉♦✉❜❧❡ r❡❛❞sPr❡❝ ♣
✇❤❡r❡ ❂ r❡❛❞❙✐❣♥❡❞ r❡❛❞❋❧♦❛t
✐♥st❛♥❝❡ ❙❤♦✇ ✭✮ ✇❤❡r❡ s❤♦✇sPr❡❝ ♣ ✭✮ ❂ s❤♦✇❙tr✐♥❣ ✧✭✮✧
✶✺✹
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✐♥st❛♥❝❡ ❘❡❛❞ ✭✮ ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞P❛r❡♥ ❋❛❧s❡ ✭❭r ✲❃ ❬✭✭✮✱t✮ ⑤ ✭✧✭✧✱s✮ ❁✲ ❧❡① r✱ ✭✧✮✧✱t✮ ❁✲ ❧❡① s ❪ ✮ ✐♥st❛♥❝❡ ❙❤♦✇ ❈❤❛r ✇❤❡r❡ s❤♦✇sPr❡❝ ♣ ✬❭✑ ❂ s❤♦✇❙tr✐♥❣ ✧✬❭❭✑✧ s❤♦✇sPr❡❝ ♣ ❝ ❂ s❤♦✇❈❤❛r ✬❭✑ ✳ s❤♦✇▲✐t❈❤❛r ❝ ✳ s❤♦✇❈❤❛r ✬❭✑ s❤♦✇▲✐st ❝s ❂ s❤♦✇❈❤❛r ✬✧✬ ✳ s❤♦✇❧ ❝s ✇❤❡r❡ s❤♦✇❧ ✧✧ ❂ s❤♦✇❈❤❛r ✬\ s❤♦✇❧ ✭✬\ ✿❝s✮ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭❭✧✧ ✳ s❤♦✇❧ ❝s s❤♦✇❧ ✭❝✿❝s✮ ❂ s❤♦✇▲✐t❈❤❛r ❝ ✳ s❤♦✇❧ ❝s ✐♥st❛♥❝❡ ❘❡❛❞ ❈❤❛r ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞P❛r❡♥ ❋❛❧s❡ ✭❭r ✲❃ ❬✭❝✱t✮ ⑤ ✭✬❭✑✿s✱t✮❁✲ ❧❡① r✱ ✭❝✱✧❭✬✧✮ ❁✲ r❡❛❞▲✐t❈❤❛r s❪✮ r❡❛❞▲✐st ❂ r❡❛❞P❛r❡♥ ❋❛❧s❡ ✭❭r ✲❃ ❬✭❧✱t✮ ⑤ ✭✬\ ✿s✱ t✮ ❁✲ ❧❡① r✱ ✭❧✱❴✮ ❁✲ r❡❛❞❧ s ❪✮ ✇❤❡r❡ r❡❛❞❧ ✭✬\ ✿s✮ ❂ ❬✭✧✧✱s✮❪ r❡❛❞❧ ✭✬❭❭✬✿✬✫✬✿s✮ ❂ r❡❛❞❧ s r❡❛❞❧ s ❂ ❬✭❝✿❝s✱✉✮ ⑤ ✭❝ ✱t✮ ❁✲ r❡❛❞▲✐t❈❤❛r s✱ ✭❝s✱✉✮ ❁✲ r❡❛❞❧ t ❪ ✐♥st❛♥❝❡ ✭❙❤♦✇ ❛✮ ❂❃ ❙❤♦✇ ❬❛❪ ✇❤❡r❡ s❤♦✇sPr❡❝ ♣ ❂ s❤♦✇▲✐st ✐♥st❛♥❝❡ ✭❘❡❛❞ ❛✮ ❂❃ ❘❡❛❞ ❬❛❪ ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞▲✐st ✲✲ ✃îðòåæè ✐♥st❛♥❝❡ ✭❙❤♦✇ ❛✱ ❙❤♦✇ ❜✮ ❂❃ ❙❤♦✇ ✭❛✱❜✮ ✇❤❡r❡ s❤♦✇sPr❡❝ ♣ ✭①✱②✮ ❂ s❤♦✇❈❤❛r ✬✭✬ ✳ s❤♦✇s ① ✳ s❤♦✇❈❤❛r ✬✱✬ ✳ s❤♦✇s ② ✳ s❤♦✇❈❤❛r ✬✮✬ ✐♥st❛♥❝❡ ✭❘❡❛❞ ❛✱ ❘❡❛❞ ❜✮ ❂❃ ❘❡❛❞ ✭❛✱❜✮ ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞P❛r❡♥ ❋❛❧s❡ ✭❭r ✲❃ ❬✭✭①✱②✮✱ ✇✮ ⑤ ✭✧✭✧✱s✮ ✭①✱t✮ ✭✧✱✧✱✉✮ ✭②✱✈✮ ✭✧✮✧✱✇✮
❁✲ ❁✲ ❁✲ ❁✲ ❁✲
❧❡① r✱ r❡❛❞s s✱ ❧❡① t✱ r❡❛❞s ✉✱ ❧❡① ✈ ❪ ✮
✲✲ ➘ðóãèå êîðòåæè èìåþò ñõîäíûå ýêçåìïëÿðû êëàññîâ ❘❡❛❞ è ❙❤♦✇
✽✳✸✳
P❘❊▲❯❉❊
✽✳✸
P❘❊▲❯❉❊■❖
Pr❡❧✉❞❡
Pr❡❧✉❞❡■❖
♠♦❞✉❧❡ Pr❡❧✉❞❡■❖ ✭ ❋✐❧❡P❛t❤✱ ■❖❊rr♦r✱ ✐♦❊rr♦r✱ ✉s❡r❊rr♦r✱ ❝❛t❝❤✱ ♣✉t❈❤❛r✱ ♣✉t❙tr✱ ♣✉t❙tr▲♥✱ ♣r✐♥t✱ ❣❡t❈❤❛r✱ ❣❡t▲✐♥❡✱ ❣❡t❈♦♥t❡♥ts✱ ✐♥t❡r❛❝t✱ r❡❛❞❋✐❧❡✱ ✇r✐t❡❋✐❧❡✱ ❛♣♣❡♥❞❋✐❧❡✱ r❡❛❞■❖✱ r❡❛❞▲♥ ✮ ✇❤❡r❡ ✐♠♣♦rt Pr❡❧✉❞❡❇✉✐❧t✐♥ t②♣❡
❋✐❧❡P❛t❤ ❂ ❙tr✐♥❣
❞❛t❛ ■❖❊rr♦r ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
✲✲ ➶íóòðåííåå ïðåäñòàâëåíèå ýòîãî òèïà çàâèñèò îò ñèñòåìû
❙❤♦✇ ■❖❊rr♦r ✇❤❡r❡ ✳✳✳ ❊q ■❖❊rr♦r ✇❤❡r❡ ✳✳✳
✐♦❊rr♦r ✐♦❊rr♦r
✿✿ ■❖❊rr♦r ✲❃ ■❖ ❛ ❂ ♣r✐♠■❖❊rr♦r
✉s❡r❊rr♦r ✉s❡r❊rr♦r
✿✿ ❂
❙tr✐♥❣ ✲❃ ■❖❊rr♦r ♣r✐♠❯s❡r❊rr♦r
❝❛t❝❤ ❝❛t❝❤
✿✿ ❂
■❖ ❛ ✲❃ ✭■❖❊rr♦r ✲❃ ■❖ ❛✮ ✲❃ ■❖ ❛ ♣r✐♠❈❛t❝❤
♣✉t❈❤❛r ♣✉t❈❤❛r
✿✿ ❈❤❛r ✲❃ ■❖ ✭✮ ❂ ♣r✐♠P✉t❈❤❛r
♣✉t❙tr ♣✉t❙tr s
✿✿ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❂ ♠❛♣▼❴ ♣✉t❈❤❛r s
♣✉t❙tr▲♥ ✿✿ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ♣✉t❙tr▲♥ s ❂ ❞♦ ♣✉t❙tr s ♣✉t❙tr ✧❭♥✧ ♣r✐♥t ♣r✐♥t ①
✿✿ ❙❤♦✇ ❛ ❂❃ ❛ ✲❃ ■❖ ✭✮ ❂ ♣✉t❙tr▲♥ ✭s❤♦✇ ①✮
❣❡t❈❤❛r ❣❡t❈❤❛r
✿✿ ■❖ ❈❤❛r ❂ ♣r✐♠●❡t❈❤❛r
❣❡t▲✐♥❡ ❣❡t▲✐♥❡
✿✿ ■❖ ❙tr✐♥❣ ❂ ❞♦ ❝ ❁✲ ❣❡t❈❤❛r ✐❢ ❝ ❂❂ ✬❭♥✬ t❤❡♥ r❡t✉r♥ ✧✧ ❡❧s❡ ❞♦ s ❁✲ ❣❡t▲✐♥❡ r❡t✉r♥ ✭❝✿s✮
❣❡t❈♦♥t❡♥ts ✿✿ ■❖ ❙tr✐♥❣ ❣❡t❈♦♥t❡♥ts ❂ ♣r✐♠●❡t❈♦♥t❡♥ts
✶✺✺
✶✺✻
➹❐➚➶➚ ✽✳ ÑÒ➚❮➘➚ÐÒ❮❰➴ ❮➚×➚❐❰ ✭P❘❊▲❯❉❊✮
✐♥t❡r❛❝t ✿✿ ✭❙tr✐♥❣ ✲❃ ❙tr✐♥❣✮ ✲❃ ■❖ ✭✮ ✲✲ ❤❙❡t❇✉❢❢❡r✐♥❣ ãàðàíòèðóåò îæèäàåìîå èíòåðàêòèâíîå ïîâåäåíèå ✐♥t❡r❛❝t ❢ ❂ ❞♦ ❤❙❡t❇✉❢❢❡r✐♥❣ st❞✐♥ ◆♦❇✉❢❢❡r✐♥❣ ❤❙❡t❇✉❢❢❡r✐♥❣ st❞♦✉t ◆♦❇✉❢❢❡r✐♥❣ s ❁✲ ❣❡t❈♦♥t❡♥ts ♣✉t❙tr ✭❢ s✮ r❡❛❞❋✐❧❡ r❡❛❞❋✐❧❡
✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ❙tr✐♥❣ ❂ ♣r✐♠❘❡❛❞❋✐❧❡
✇r✐t❡❋✐❧❡ ✇r✐t❡❋✐❧❡
✿✿ ❋✐❧❡P❛t❤ ✲❃ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❂ ♣r✐♠❲r✐t❡❋✐❧❡
❛♣♣❡♥❞❋✐❧❡ ✿✿ ❋✐❧❡P❛t❤ ✲❃ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❛♣♣❡♥❞❋✐❧❡ ❂ ♣r✐♠❆♣♣❡♥❞❋✐❧❡ ✲✲ âìåñòî îøèáêè âûçûâàåò èñêëþ÷åíèå r❡❛❞■❖ ✿✿ ❘❡❛❞ ❛ ❂❃ ❙tr✐♥❣ ✲❃ ■❖ ❛ r❡❛❞■❖ s ❂ ❝❛s❡ ❬① ⑤ ✭①✱t✮ ❁✲ r❡❛❞s s✱ ✭✧✧✱✧✧✮ ❁✲ ❧❡① t❪ ♦❢ ❬①❪ ✲❃ r❡t✉r♥ ① ❬❪ ✲❃ ✐♦❊rr♦r ✭✉s❡r❊rr♦r ✧Pr❡❧✉❞❡✳r❡❛❞■❖✿ íåò ðàçáîðà✧✮ ❴ ✲❃ ✐♦❊rr♦r ✭✉s❡r❊rr♦r ✧Pr❡❧✉❞❡✳r❡❛❞■❖✿ íåîäíîçíà÷íûé ðàçáîð✧✮ r❡❛❞▲♥ ✿✿ ❘❡❛❞ ❛ ❂❃ ■❖ ❛ r❡❛❞▲♥ ❂ ❞♦ ❧ ❁✲ ❣❡t▲✐♥❡ r ❁✲ r❡❛❞■❖ ❧ r❡t✉r♥ r
➹ëàâà ✾
Ñèíòàêñè÷åñêèé ñïðàâî÷íèê ✾✳✶
Ñîãëàøåíèÿ îá îáîçíà÷åíèÿõ
Ýòè ñîãëàøåíèÿ îá îáîçíà÷åíèÿõ èñïîëüçóþòñÿ äëÿ ïðåäñòàâëåíèÿ ñèíòàêñèñà✿ [pattern] {pattern} (pattern) pat1 | pat2 pathpat ′ i
❢✐❜♦♥❛❝❝✐
íåîáÿçàòåëüíûé íîëü èëè áîëåå ïîâòîðåíèé ãðóïïèðîâêà âûáîð ðàçíîñòü ✖ ýëåìåíòû✱ ïîðîæäàåìûå ñ ïîìîùüþ pat ✱ çà èñêëþ÷åíèåì ýëåìåíòîâ✱ ïîðîæäàåìûõ ñ ïîìîùüþ pat ′ òåðìèíàëüíûé ñèíòàêñèñ â ìàøèíîïèñíîì øðèôòå
Ïîâñþäó èñïîëüçóåòñÿ ❇◆❋✲ïîäîáíûé ñèíòàêñèñ✱ ÷üè ïðàâèëà âûâîäà èìåþò âèä✿ nonterm
→
alt1 | alt2 | . . . | altn
Ïåðåâîä✿ íåòåðìèíàë
→
àëüòåðíàòèâà1
| àëüòåðíàòèâà2 | ... | àëüòåðíàòèâàn
➶ ñèíòàêñèñå✱ êîòîðûé ñëåäóåò äàëåå✱ åñòü íåêîòîðûå ñåìåéñòâà íåòåðìèíàëîâ✱ èíäåêñèðîâàííûå óðîâíÿìè ïðèîðèòåòà ✭çàïèñàííûìè êàê âåðõíèé èíäåêñ✮✳ ➚íàëîãè÷íî✱ íåòåðìèíàëû op (îïåðàòîð)✱ varop (îïåðàòîð✲ïåðåìåííîé) è conop (îïåðàòîð✲êîíñòðóêòîðà) ìîãóò èìåòü äâîéíîé èíäåêñ✿ áóêâó l ✱ r èëè n ✶✺✼
✶✺✽
➹❐➚➶➚ ✾✳
ñîîòâåòñòâåííî
äëÿ
ëåâîàññîöèàòèâíîñòè✱
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
ïðàâîàññîöèàòèâíîñòè
èëè
àññîöèàòèâíîñòè è óðîâåíü ïðèîðèòåòà✳ Ïåðåìåííàÿ óðîâíÿ ïðèîðèòåòà â ïðåäåëàõ îò ✵ äî ✾✱ ïåðåìåííàÿ àññîöèàòèâíîñòè
a
îòñóòñòâèÿ
i
èçìåíÿåòñÿ
èçìåíÿåòñÿ â äèàïàçîíå
{l , r , n}✳
❮àïðèìåð✱
→
aexp
✭ exp i+1 qop (a,i) ✮
íà ñàìîì äåëå îáîçíà÷àåò ✸✵ ïðàâèë âûâîäà ñ ✶✵ ïîäñòàíîâêàìè äëÿ
i
➮
åñòü
â
ëåêñè÷åñêîì✱
è
â
íåîäíîçíà÷íîñòè✱
êîòîðûå
ôðàç
èç
íàèáîëüøåé
ñèíòàêñè÷åñêîì
êîíòåêñòíî✲ñâîáîäíîì ðàçðåøàþòñÿ
âîçìîæíûõ
àíàëèçå
ïðè
äëèíû✱
êîíôëèêòå
ñèíòàêñèñå
ïîñðåäñòâîì äåéñòâóÿ ñäâèã
✲
ñîçäàíèÿ
ñëåâà
ñâåðòêà
è ✸ äëÿ
a✳
íåêîòîðûå
ãðàììàòè÷åñêèõ
íàïðàâî
✭â
âîñõîäÿùåì
âûïîëíÿåòñÿ
ñäâèã✮✳
➶
ëåêñè÷åñêîì ñèíòàêñèñå ýòî ïðàâèëî ✏ìàêñèìàëüíîãî ïîòðåáëåíèÿ✑ ✳ ➶ êîíòåêñòíî✲ ñâîáîäíîì
ñèíòàêñèñå
ýòî
îçíà÷àåò✱
÷òî
óñëîâíûå
âûðàæåíèÿ✱
ëÿìáäà✲àáñòðàêöèè ïðîäîëæàþòñÿ âïðàâî íàñêîëüêî âîçìîæíî✳
✾✳✷
❐åêñè÷åñêèé ñèíòàêñèñ
literal special
→ → | → →
{ lexeme | whitespace } qvarid | qconid | qvarsym | qconsym literal | special | reservedop | reservedid integer | float | char | string ✭|✮|✱|❀|❬|❪|❵|④|⑥
whitespace whitestuff whitechar newline return linefeed vertab formfeed space tab uniWhite
→ → → → → → → → → → →
whitestuff {whitestuff } whitechar | comment | ncomment newline | vertab | space | tab | uniWhite return linefeed | return | linefeed | formfeed
comment dashes opencom closecom ncomment ANYseq
→ → → → → →
dashes [ anyhsymboli {any} ] newline ✲✲ {✲} ④✲ ✲⑥ opencom ANYseq {ncomment ANYseq} closecom {ANY }h{ANY } ( opencom | closecom ) {ANY }i
program lexeme
âîçâðàò êàðåòêè ïåðåâîä ñòðîêè âåðòèêàëüíàÿ òàáóëÿöèÿ ïåðåâîä ñòðàíèöû ïðîáåë ãîðèçîíòàëüíàÿ òàáóëÿöèÿ ëþáîé ïðîáåëüíûé ñèìâîë ❯♥✐❝♦❞❡
❧❡t✲âûðàæåíèÿ
è
✾✳✷✳
❐➴✃Ñ➮×➴Ñ✃➮➱ Ñ➮❮Ò➚✃Ñ➮Ñ
ANY any graphic
→ → →
graphic | whitechar graphic | space | tab small | large | symbol | digit | special | ✿ | ✧ | ✬
small ascSmall uniSmall
→ → →
ascSmall | uniSmall | ❴ ❛ | ❜ | ... | ③ ëþáàÿ áóêâà ❯♥✐❝♦❞❡ íèæíåãî ðåãèñòðà
large ascLarge uniLarge symbol
→ → → →
ascLarge | uniLarge ❆ | ❇ | ... | ❩ ëþáàÿ áóêâà ❯♥✐❝♦❞❡ âåðõíåãî ðåãèñòðà èëè çàãëàâíàÿ ascSymbol | uniSymbolhspecial | ❴ | ✿ | ✧ | ✬i
ascSymbol → | uniSymbol → digit → ascDigit → uniDigit → octit → hexit →
✦|★|✩|✪|✫|✯|✰|✳|✴|❁|❂|❃|❄|@ ❭|❫|⑤|✲|⑦ ëþáîé ñèìâîë èëè çíàê ïóíêòóàöèè ❯♥✐❝♦❞❡ ascDigit | uniDigit ✵ | ✶ | ... | ✾ ëþáàÿ äåñÿòè÷íàÿ öèôðà ❯♥✐❝♦❞❡ ✵ | ✶ | ... | ✼ digit | ❆ | . . . | ❋ | ❛ | . . . | ❢
Ïåðåâîä✿ ïðîãðàììà
{
→ | ïðîáåëüíàÿ✲ñòðîêà }
ëåêñåìà
ëåêñåìà
→
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé
| | | | | | |
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé êâàëèôèöèðîâàííûé✲ñèìâîë✲êîíñòðóêòîðà ëèòåðàë ñïåöèàëüíàÿ✲ëåêñåìà çàðåçåðâèðîâàííûé✲îïåðàòîð çàðåçåðâèðîâàííûé✲èäåíòèôèêàòîð
ëèòåðàë
→
öåëûé✲ëèòåðàë
| | |
ëèòåðàë✲ñ✲ïëàâàþùåé✲òî÷êîé ñèìâîëüíûé✲ëèòåðàë ñòðîêîâûé✲ëèòåðàë
→ ✭|✮|✱|❀|❬|❪|‘|④|⑥
ñïåöèàëüíàÿ✲ëåêñåìà
ïðîáåëüíàÿ✲ñòðîêà
→
ïðîáåëüíûé✲ýëåìåíò
{ïðîáåëüíûé✲ýëåìåíò}
✶✺✾
✶✻✵
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
→
ïðîáåëüíûé✲ýëåìåíò ïðîáåëüíûé✲ñèìâîë
| |
êîììåíòàðèé âëîæåííûé✲êîììåíòàðèé
ïðîáåëüíûé✲ñèìâîë
→
íîâàÿ✲ñòðîêà
| | | |
âåðòèêàëüíàÿ✲òàáóëÿöèÿ ïðîáåë ãîðèçîíòàëüíàÿ✲òàáóëÿöèÿ ïðîáåëüíûé✲ñèìâîë✲❯♥✐❝♦❞❡
íîâàÿ✲ñòðîêà
→
âîçâðàò✲êàðåòêè ïåðåâîä✲ñòðîêè
| | |
âîçâðàò✲êàðåòêè ïåðåâîä✲ñòðîêè ïåðåâîä✲ñòðàíèöû
êîììåíòàðèé
[ → ✲✲ {✲}
òèðå
→
ëþáîé✲ñèìâîëhñèìâîëi
{ëþáîé✲ñèìâîë} ]
íîâàÿ✲ñòðîêà
òèðå
íà÷àëî✲êîììåíòàðèÿ
→
④✲ êîíåö✲êîììåíòàðèÿ
→
✲⑥ âëîæåííûé✲êîììåíòàðèé
→
íà÷àëî✲êîììåíòàðèÿ ❐Þ➪➚ß✲ïîñëåäîâàòåëüíîñòü
{âëîæåííûé✲êîììåíòàðèé ❐Þ➪➚ß✲ïîñëåäîâàòåëüíîñòü} êîíåö✲êîììåíòàðèÿ ❐Þ➪➚ß✲ïîñëåäîâàòåëüíîñòü → {❐Þ➪❰➱✲ñèìâîë}h{❐Þ➪❰➱✲ñèìâîë} ( íà÷àëî✲êîììåíòàðèÿ | êîíåö✲êîììåíòàðèÿ ) {❐Þ➪❰➱✲ñèìâîë}i ❐Þ➪❰➱✲ñèìâîë
→
ãðàôè÷åñêèé✲ñèìâîë
|
ïðîáåëüíûé✲ñèìâîë
ëþáîé✲ñèìâîë
→
ãðàôè÷åñêèé✲ñèìâîë
| |
ïðîáåë ãîðèçîíòàëüíàÿ✲òàáóëÿöèÿ
ãðàôè÷åñêèé✲ñèìâîë
→
ìàëåíüêàÿ✲áóêâà
| áîëüøàÿ✲áóêâà | ñèìâîë | öèôðà | ñïåöèàëüíàÿ✲ëåêñåìà |✿|✧|✬
✾✳✷✳
✶✻✶
❐➴✃Ñ➮×➴Ñ✃➮➱ Ñ➮❮Ò➚✃Ñ➮Ñ
ìàëåíüêàÿ✲áóêâà
→
ìàëåíüêàÿ✲áóêâà✲❆❙❈■■
| ìàëåíüêàÿ✲áóêâà✲❯♥✐❝♦❞❡ |❴ ìàëåíüêàÿ✲áóêâà✲❆❙❈■■ → ❛ | ❜ | ... | ③ áîëüøàÿ✲áóêâà
→
áîëüøàÿ✲áóêâà✲❆❙❈■■
|
áîëüøàÿ✲áóêâà✲❯♥✐❝♦❞❡
→ ❆ | ❇ | ... | ❩ ñèìâîë →ñèìâîë✲❆❙❈■■ | ñèìâîë✲❯♥✐❝♦❞❡hñïåöèàëüíàÿ✲ëåêñåìà áîëüøàÿ✲áóêâà✲❆❙❈■■
| ❴ | ✿ | ✧ | ✬i
→ ✦|★|✩|✪|✫|✯|✰|✳|✴|❁|❂|❃|❄|@ |❭ | ❫ | ⑤ | ✲ | ⑦ ñèìâîë✲❯♥✐❝♦❞❡ → ëþáîé ñèìâîë èëè çíàê ïóíêòóàöèè ❯♥✐❝♦❞❡ öèôðà → ñèìâîë✲❆❙❈■■
öèôðà✲❆❙❈■■
|
öèôðà✲❯♥✐❝♦❞❡
→ ✵ | ✶ | ... | ✾ öèôðà✲❯♥✐❝♦❞❡ → ëþáàÿ äåñÿòè÷íàÿ öèôðà ❯♥✐❝♦❞❡ âîñüìèðè÷íàÿ✲öèôðà → ✵ | ✶ | ... | ✼ øåñòíàäöàòèðè÷íàÿ✲öèôðà → öèôðà | ❆ | . . . | ❋ | ❛ | . . . | ❢ öèôðà✲❆❙❈■■
varid → conid → reservedid → | |
(small {small | large | digit | ✬ })hreservedidi large {small | large | digit | ✬ } ❝❛s❡ | ❝❧❛ss | ❞❛t❛ | ❞❡❢❛✉❧t | ❞❡r✐✈✐♥❣ | ❞♦ | ❡❧s❡ ✐❢ | ✐♠♣♦rt | ✐♥ | ✐♥❢✐① | ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥st❛♥❝❡ ❧❡t | ♠♦❞✉❧❡ | ♥❡✇t②♣❡ | ♦❢ | t❤❡♥ | t②♣❡ | ✇❤❡r❡ | ❴
varsym → consym → reservedop →
( symbol {symbol | ✿} )hreservedop | dashesi (✿ {symbol | ✿})hreservedopi ✳✳ | ✿ | ✿✿ | ❂ | ❭ | ⑤ | ❁✲ | ✲❃ | @ | ⑦ | ❂❃
varid conid tyvar
→
varid
(ïåðåìåííûå) (êîíñòðóêòîðû) (ïåðåìåííûå òèïîâ)
✶✻✷
➹❐➚➶➚ ✾✳
tycon tycls modid
→ → →
conid conid conid
qvarid qconid qtycon qtycls qvarsym qconsym
→ → → → → →
[ [ [ [ [ [
decimal → octal → hexadecimal→ integer
float exponent char string escape charesc ascii
cntrl gap
modid modid modid modid modid modid
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
(êîíñòðóêòîðû òèïîâ) (êëàññû òèïîâ) (ìîäóëè)
✳ ✳ ✳ ✳ ✳ ✳
] ] ] ] ] ]
varid conid tycon tycls varsym consym
digit{digit} octit{octit} hexit{hexit}
→ | | → | →
decimal ✵♦ octal | ✵❖ octal ✵① hexadecimal | ✵❳ hexadecimal decimal ✳ decimal [exponent] decimal exponent (❡ | ❊) [✰ | ✲] decimal
→ → → → → | | | → →
✬ (graphich✬ | ❭i | space | escapeh❭✫i ) ✬ ✧ {graphich✧ | ❭i | space | escape | gap} ✧ ❭ ( charesc | ascii | decimal | ♦ octal | ① hexadecimal ) ❛|❜|❢|♥|r|t|✈|❭|✧|✬|✫ ❫cntrl | ◆❯▲ | ❙❖❍ | ❙❚❳ | ❊❚❳ | ❊❖❚ | ❊◆◗ | ❆❈❑ ❇❊▲ | ❇❙ | ❍❚ | ▲❋ | ❱❚ | ❋❋ | ❈❘ | ❙❖ | ❙■ | ❉▲❊ ❉❈✶ | ❉❈✷ | ❉❈✸ | ❉❈✹ | ◆❆❑ | ❙❨◆ | ❊❚❇ | ❈❆◆ ❊▼ | ❙❯❇ | ❊❙❈ | ❋❙ | ●❙ | ❘❙ | ❯❙ | ❙P | ❉❊▲ ascLarge | @ | ❬ | ❭ | ❪ | ❫ | ❴ ❭ whitechar {whitechar } ❭
Ïåðåâîä✿
→ (ìàëåíüêàÿ✲áóêâà {ìàëåíüêàÿ✲áóêâà | áîëüøàÿ✲áóêâà | öèôðà | ✬ })hçàðåçåðâèðîâàííûé✲èäåíòèôèêàòîði èäåíòèôèêàòîð✲êîíñòðóêòîðà → áîëüøàÿ✲áóêâà {ìàëåíüêàÿ✲áóêâà | áîëüøàÿ✲áóêâà | öèôðà | ✬ } çàðåçåðâèðîâàííûé✲èäåíòèôèêàòîð → ❝❛s❡ | ❝❧❛ss | ❞❛t❛ | ❞❡❢❛✉❧t | ❞❡r✐✈✐♥❣ | ❞♦ | ❡❧s❡ | ✐❢ | ✐♠♣♦rt | ✐♥ | ✐♥❢✐① | ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥st❛♥❝❡ | ❧❡t | ♠♦❞✉❧❡ | ♥❡✇t②♣❡ | ♦❢ | t❤❡♥ | t②♣❡ | ✇❤❡r❡ | ❴ èäåíòèôèêàòîð✲ïåðåìåííîé
✾✳✷✳
✶✻✸
❐➴✃Ñ➮×➴Ñ✃➮➱ Ñ➮❮Ò➚✃Ñ➮Ñ
→ ( ñèìâîë {ñèìâîë | ✿} )hçàðåçåðâèðîâàííûé✲îïåðàòîð ñèìâîë✲êîíñòðóêòîðà → (✿ {ñèìâîë | ✿})hçàðåçåðâèðîâàííûé✲îïåðàòîði çàðåçåðâèðîâàííûé✲îïåðàòîð → ✳✳ | ✿ | ✿✿ | ❂ | ❭ | ⑤ | ❁✲ | ✲❃ | ❅ | ⑦ | ❂❃
ñèìâîë✲ïåðåìåííîé
|
òèðåi
èäåíòèôèêàòîð✲ïåðåìåííîé
(ïåðåìåííûå) èäåíòèôèêàòîð✲êîíñòðóêòîðà
(êîíñòðóêòîðû) ïåðåìåííàÿ✲òèïà → èäåíòèôèêàòîð✲ïåðåìåííîé
(ïåðåìåííûå òèïîâ) êîíñòðóêòîð✲òèïà → èäåíòèôèêàòîð✲êîíñòðóêòîðà
(êîíñòðóêòîðû òèïîâ) êëàññ✲òèïà → èäåíòèôèêàòîð✲êîíñòðóêòîðà
(êëàññû òèïîâ) èäåíòèôèêàòîð✲ìîäóëÿ
→
èäåíòèôèêàòîð✲êîíñòðóêòîðà
(ìîäóëè) êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
èäåíòèôèêàòîð✲ïåðåìåííîé
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
èäåíòèôèêàòîð✲êîíñòðóêòîðà
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð✲òèïà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
êëàññ✲òèïà
êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
êîíñòðóêòîð✲òèïà
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳]
→
ñèìâîë✲ïåðåìåííîé
êâàëèôèöèðîâàííûé✲ñèìâîë✲êîíñòðóêòîðà
[èäåíòèôèêàòîð✲ìîäóëÿ ✳] äåñÿòè÷íûé✲ëèòåðàë
→
→
ñèìâîë✲êîíñòðóêòîðà
→
öèôðà④öèôðà⑥ âîñüìèðè÷íûé✲ëèòåðàë
→
âîñüìèðè÷íàÿ✲öèôðà{âîñüìèðè÷íàÿ✲öèôðà} øåñòíàäöàòèðè÷íûé✲ëèòåðàë
→
øåñòíàäöàòèðè÷íàÿ✲öèôðà{øåñòíàäöàòèðè÷íàÿ✲öèôðà} öåëûé✲ëèòåðàë
→
✶✻✹
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
äåñÿòè÷íûé✲ëèòåðàë
| | | |
✵♦ ✵❖ ✵① ✵❳
âîñüìèðè÷íûé✲ëèòåðàë âîñüìèðè÷íûé✲ëèòåðàë øåñòíàäöàòèðè÷íûé✲ëèòåðàë øåñòíàäöàòèðè÷íûé✲ëèòåðàë
ëèòåðàë✲ñ✲ïëàâàþùåé✲òî÷êîé äåñÿòè÷íûé✲ëèòåðàë
|
✳
→
äåñÿòè÷íûé✲ëèòåðàë [ýêñïîíåíòà]
äåñÿòè÷íûé✲ëèòåðàë ýêñïîíåíòà
→ (❡ | ❊) [✰ | ✲]
ýêñïîíåíòà
äåñÿòè÷íûé✲ëèòåðàë
ñèìâîëüíûé✲ëèòåðàë
→
✬ (ãðàôè÷åñêèé✲ñèìâîëh✬ | ❭i | ïðîáåë | ýñêåéï✲ñèìâîëh❭✫i ) ✬ → ✧ {ãðàôè÷åñêèé✲ñèìâîëh✧ | ❭i | ïðîáåë | ýñêåéï✲ñèìâîë | ðàçðûâ} ✧ ýñêåéï✲ñèìâîë → ❭ ( ñèìâîë✲ýñêåéï | ñèìâîë✲❛s❝✐✐ | äåñÿòè÷íûé✲ëèòåðàë | ♦ âîñüìèðè÷íûé✲ëèòåðàë | ① øåñòíàäöàòèðè÷íûé✲ëèòåðàë ) ñèìâîë✲ýñêåéï → ❛|❜|❢|♥|r|t|✈|❭|✧|✬|✫ ñèìâîë✲❛s❝✐✐ → ❫óïðàâëÿþùèé✲ñèìâîë | ◆❯▲ | ❙❖❍ | ❙❚❳ | ❊❚❳ | ❊❖❚ | ❊◆◗ | ❆❈❑ | ❇❊▲ | ❇❙ | ❍❚ | ▲❋ | ❱❚ | ❋❋ | ❈❘ | ❙❖ | ❙■ | ❉▲❊ | ❉❈✶ | ❉❈✷ | ❉❈✸ | ❉❈✹ | ◆❆❑ | ❙❨◆ | ❊❚❇ | ❈❆◆ | ❊▼ | ❙❯❇ | ❊❙❈ | ❋❙ | ●❙ | ❘❙ | ❯❙ | ❙P | ❉❊▲ óïðàâëÿþùèé✲ñèìâîë → áîëüøàÿ✲áóêâà✲❆❙❈■■ | @ | ❬ | ❭ | ❪ | ❫ | ❴ ðàçðûâ → ❭ ïðîáåëüíûé✲ñèìâîë {ïðîáåëüíûé✲ñèìâîë} ❭
ñòðîêîâûé✲ëèòåðàë
✾✳✸
Ðàçìåùåíèå
➶ ðàçäåëå ✷✳✼ äàåòñÿ íåôîðìàëüíîå îïðåäåëåíèå ïðàâèëà ðàçìåùåíèÿ✳ ➶ ýòîì ðàçäåëå ýòî ïðàâèëî îïðåäåëåíî áîëåå òî÷íî✳
Ñìûñë
ïðîãðàììû
íà
❍❛s❦❡❧❧
ìîæåò
çàâèñåòü
îò
ðàçìåùåíèÿ
åå
òåêñòà✳
➶ëèÿíèå
ðàçìåùåíèÿ íà åå ñìûñë ìîæåò áûòü ïîëíîñòüþ îïèñàíî ïóòåì äîáàâëåíèÿ ôèãóðíûõ ñêîáîê
è
òî÷åê
ñ
çàïÿòîé
â
ìåñòàõ✱
îïðåäåëÿåìûõ
ðàçìåùåíèåì✳
Ñìûñë
òàêîãî
äîïîëíåíèÿ ïðîãðàììû ñîñòîèò â òîì✱ ÷òîáû ñäåëàòü åå íå çàâèñèìîé îò ðàçìåùåíèÿ òåêñòà✳
➶ëèÿíèå ðàçìåùåíèÿ çàäàíî â ýòîì ðàçäåëå ïîñðåäñòâîì îïèñàíèÿ òîãî✱ êàê äîáàâèòü ôèãóðíûå ñêîáêè è òî÷êè ñ çàïÿòîé â òåêñò ïðîãðàììû✳ Ñïåöèôèêàöèÿ ïðèíèìàåò âèä ôóíêöèè
L✱
êîòîðàÿ âûïîëíÿåò òðàíñëÿöèþ✳ ➶õîäîì äëÿ
L
ÿâëÿþòñÿ✿
✾✳✸✳
•
✶✻✺
Ð➚➬❒➴Ù➴❮➮➴
Ïîòîê
ëåêñåì✱
çàäàííûõ
ëåêñè÷åñêèì
ñèíòàêñèñîì
îïèñàíèÿ
❍❛s❦❡❧❧✱
ñî
ñëåäóþùèìè äîïîëíèòåëüíûìè òîêåíàìè✿
✕
❧❡t✱ ✇❤❡r❡✱ ❞♦
➴ñëè çà êëþ÷åâûì ñëîâîì òîêåí
{n}
✕
0✱
ãäå
n
íå ñëåäóåò ëåêñåìà
n
④✱
òî
✖ îòñòóï ñëåäóþùåé
åñëè áûë äîñòèãíóò êîíåö ôàéëà✳
➴ñëè ïåðâàÿ ëåêñåìà ìîäóëÿ íå ÿâëÿåòñÿ
{n}✱
♦❢
âñòàâëÿåòñÿ ïîñëå êëþ÷åâîãî ñëîâà✱ ãäå
ëåêñåìû✱ åñëè îíà åñòü✱ èëè
✕
èëè
④
èëè
♠♦❞✉❧❡✱
òî îíà ïðåäâàðÿåòñÿ
✖ îòñòóï ëåêñåìû✳
Òàì✱ ãäå íà÷àëî ëåêñåìû ïðåäâàðÿåòñÿ òîëüêî ïðîáåëüíûìè ñèìâîëàìè íà òîé æå ñòðîêå✱ ýòà ëåêñåìà ïðåäâàðÿåòñÿ
< n >✱
ãäå
n
✖ îòñòóï ëåêñåìû✱
ïðè óñëîâèè ÷òî îíà✱ êàê ñëåäñòâèå ïåðâûõ äâóõ ïðàâèë✱ íå ïðåäâàðÿåòñÿ
{n}✳
✭◆❇✿ ñòðîêîâûé ëèòåðàë ìîæåò ïðîñòèðàòüñÿ íà íåñêîëüêî ñòðîê ✭ñì✳
ðàçäåë ✷✳✻✮✳ Ïîýòîìó âî ôðàãìåíòå
❢ ❂ ✭✧➬äðàâñòâóéòå ❭ ❭➪èëë✧✱ ✧➘æåéê✧✮ < n > íå âñòàâëÿþòñÿ íè ïåðåä ❭➪èëë✱ ïîòîìó ÷òî îíà íå ÿâëÿåòñÿ íà÷àëîì çàêîí÷åííîé ëåêñåìû✱ íè ïåðåä ✱✱ ïîòîìó ÷òî îíà íå ïðåäâàðÿåòñÿ òîëüêî ïðîáåëüíûìè ñèìâîëàìè✳✮
•
Ñòåê ✏êîíòåêñòîâ ðàçìåùåíèÿ✑✱ â êîòîðîì êàæäûé ýëåìåíò ÿâëÿåòñÿ✿
✕
➮ëè
íóëåì✱
êîòîðûé
îçíà÷àåò✱
÷òî
âíåøíèé
êîíòåêñò
ÿâëÿåòñÿ
ÿâíûì
✭ò✳å✳ ïðîãðàììèñò ïîñòàâèë îòêðûâàþùóþ ôèãóðíóþ ñêîáêó✮✳ ➴ñëè ñàìûé âíóòðåííèé êîíòåêñò ðàâåí ✵✱ òî íèêàêèõ ðàçìåùàþùèõ òîêåíîâ íå áóäåò äîáàâëåíî✱ ïîêà íå çàâåðøèòñÿ âíåøíèé êîíòåêñò èëè íîâûé êîíòåêñò íå áóäåò ïîìåùåí â ñòåê✳
✕
➮ëè
öåëûì
ïîëîæèòåëüíûì
÷èñëîì✱
êîòîðîå
ÿâëÿåòñÿ
îòñòóïîì
äëÿ
âíåøíåãî êîíòåêñòà ðàçìåùåíèÿ✳
✏❰òñòóïîì✑ îòñòóïîì
ëåêñåìû ÿâëÿåòñÿ íîìåð êîëîíêè äëÿ ïåðâîãî ñèìâîëà ýòîé ëåêñåìû❀
ñòðîêè
ÿâëÿåòñÿ
îòñòóï
åãî
êðàéíåé
ñëåâà
ëåêñåìû✳
➘ëÿ
òîãî
÷òîáû
îïðåäåëèòü íîìåð êîëîíêè✱ ïðåäïîëîæèì✱ ÷òî èñïîëüçóåòñÿ øðèôò ôèêñèðîâàííîé øèðèíû ñî ñëåäóþùèìè óñëîâíîñòÿìè✿
•
Ñèìâîëû
íîâàÿ ñòðîêà✱ âîçâðàò êàðåòêè✱ ïåðåâîä ñòðîêè
è
ïåðåâîä ñòðàíèöû
íà÷èíàþò íîâóþ ñòðîêó✳
•
Ïåðâàÿ êîëîíêà îáîçíà÷àåòñÿ êîëîíêà ✶✱ à íå ✵✳
•
Ïðè òàáóëÿöèè ïðîïóñêàåòñÿ ✽ ñèìâîëîâ✳
•
Ñèìâîë òàáóëÿöèè âûçûâàåò âñòàâêó äîñòàòî÷íîãî êîëè÷åñòâà ïðîáåëîâ äëÿ âûðàâíèâàíèÿ òåêóùåé ïîçèöèè äî ñëåäóþùåé ïîçèöèè òàáóëÿöèè✳
✶✻✻
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
Ñ öåëüþ ñîáëþäåíèÿ ïðàâèë ðàçìåùåíèÿ✱ ñèìâîëû ❯♥✐❝♦❞❡ â èñõîäíîé ïðîãðàììå ðàññìàòðèâàþòñÿ êàê òå æå ñèìâîëû ôèêñèðîâàííîé øèðèíû✱ ÷òî è ñèìâîëû ❆❙❈■■✳ Òåì íå ìåíåå✱ ÷òîáû èçáåæàòü âèçóàëüíîé ïóòàíèöû✱ ïðîãðàììèñòàì ñëåäóåò èçáåãàòü íàïèñàíèÿ ïðîãðàìì✱ â êîòîðûõ ñìûñë íåÿâíîãî ðàçìåùåíèÿ çàâèñèò îò øèðèíû íåïðîáåëüíûõ ñèìâîëîâ✳ Ïðèìåíåíèå
L
òîêåíû
[]
ïåðåäàåò íå çàâèñÿùóþ îò ðàçìåùåíèÿ òðàíñëÿöèþ
òîêåíîâ✱
ãäå
òîêåíû
ÿâëÿþòñÿ
ðåçóëüòàòîì ëåêñè÷åñêîãî àíàëèçà ìîäóëÿ è äîáàâëåíèÿ ê íåìó óêàçàòåëåé íîìåðîâ êîëîíîê✱
êàê
îïèñàíî
âûøå✳
❰ïðåäåëåíèå
L
çàêëþ÷àåòñÿ
â
ñëåäóþùåì✿
ãäå
ìû
èñïîëüçóåì ✏ :✑ â êà÷åñòâå îïåðàòîðà êîíñòðóèðîâàíèÿ ïîòîêà è ✏ [ ]✑ äëÿ ïóñòîãî ïîòîêà✳
L (< n >: ts) (m : ms) = ❀ : (L ts (m : ms)) = ⑥ : (L (< n >: ts) ms) L (< n >: ts) ms = L ts ms
åñëè åñëè
m=n n m (➬àìå÷àíèå 1) = ④ : (L ts [n]) åñëè n > 0 (➬àìå÷àíèå 1) = ④ : ⑥ : (L (< n >: ts) ms) (➬àìå÷àíèå 2)
L (⑥ : ts) (0 : ms) L (⑥ : ts) ms
= ⑥ : (L ts ms) = îøèáêà✲ðàçáîðà
(➬àìå÷àíèå 3) (➬àìå÷àíèå 3)
L (④ : ts) ms
= ④ : (L ts (0 : ms))
(➬àìå÷àíèå 4)
L (t : ts) (m : ms)
= ⑥ : (L (t : ts) ms)
åñëè
m/ = 0
è
îøèáêà✲ðàçáîðà(t)
(➬àìå÷àíèå 5) L (t : ts) ms
= t : (L ts ms)
L [ ] [] L [ ] (m : ms)
= [] = ⑥ : L [ ] ms
åñëè
m 6= 0 (➬àìå÷àíèå 6)
➬àìå÷àíèå ✶✳ ➶ëîæåííûé êîíòåêñò äîëæåí èìåòü áîëüøèé îòñòóï✱ ÷åì âíåøíèé
êîíòåêñò ✭n
> m ✮✳
➴ñëè íåò ✖
L
çàâåðøàåòñÿ ñ îøèáêîé✱ è êîìïèëÿòîðó ñëåäóåò
óêàçàòü íà îøèáêó ðàçìåùåíèÿ✳ Ïðèìåð✿
❢ ① ❂ ❧❡t ❤ ② ❂ ❧❡t ♣ ③ ❂ ③ ✐♥ ♣ ✐♥ ❤ ➬äåñü îïðåäåëåíèå ♣ èìååò
ìåíüøèé îòñòóï✱ ÷åì îòñòóï âíåøíåãî êîíòåêñòà✱
êîòîðûé óñòàíàâëèâàåòñÿ â ýòîì ñëó÷àå ïóòåì îïðåäåëåíèÿ
❤✳
✾✳✸✳
✶✻✼
Ð➚➬❒➴Ù➴❮➮➴
➬àìå÷àíèå ✷✳ ➴ñëè ïåðâûé òîêåí ïîñëå
÷åì
âíåøíèé
êîíòåêñò
✇❤❡r❡
ðàçìåùåíèÿ✱
òî
✭ñêàæåì✮ íå èìååò îòñòóïà✱ áîëüøåãî áëîê
âñòàâëÿþòñÿ ïóñòûå ôèãóðíûå ñêîáêè✳ Òîêåí
äîëæåí
{n}
áûòü
çàìåíÿåòñÿ íà
ïóñò✱
ïîýòîìó
< n >✱
÷òîáû
ñûìèòèðîâàòü ñèòóàöèþ êàê åñëè áû ïóñòûå ôèãóðíûå ñêîáêè áûëè ÿâíûìè✳ ➬àìå÷àíèå ✸✳ Ïîñðåäñòâîì ñîïîñòàâëåíèÿ ñ ✵ òåêóùåãî êîíòåêñòà ðàçìåùåíèÿ✱ ìû
ãàðàíòèðóåì✱ ÷òî ÿâíàÿ çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà ìîæåò áûòü ñîïîñòàâëåíà òîëüêî ÿâíîé îòêðûâàþùåé ôèãóðíîé ñêîáêå✳ ➴ñëè ÿâíàÿ çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà áóäåò ñîïîñòàâëåíà íåÿâíîé îòêðûâàþùåé ôèãóðíîé ñêîáêå ✖ âîçíèêíåò îøèáêà ðàçáîðà✳ ➬àìå÷àíèå ✹✳ Ýòî óòâåðæäåíèå îçíà÷àåò✱ ÷òî âñå ïàðû ôèãóðíûõ ñêîáîê òðàêòóþòñÿ
êàê ÿâíûå êîíòåêñòû ðàçìåùåíèÿ✱ âêëþ÷àÿ èìåíîâàííûå ñîçäàíèå òèïîâ äàííûõ è
èõ
îáíîâëåíèå
✭ðàçäåë
✸✳✶✺✮✳
➶
ýòîì
çàêëþ÷àåòñÿ
ðàçíèöà
ìåæäó
ýòîé
ôîðìóëèðîâêîé è ❍❛s❦❡❧❧ ✶✳✹✳ ➬àìå÷àíèå ✺✳ ➘îïîëíèòåëüíîå
ñëåäóþùèì
îáðàçîì✿
ñëåäóþùèì òîêåíîì
t
åñëè
óñëîâèå òîêåíû✱
îøèáêà✲ðàçáîðà(t) ïîðîæäåííûå
äî
ñèõ
èíòåðïðåòèðóåòñÿ
L
ïîð
âìåñòå
ñî
ïðåäñòàâëÿåò íåäîïóñòèìûé ïðåôèêñ â ãðàììàòèêå ❍❛s✲
❦❡❧❧✱ à òîêåíû✱ ïîðîæäåííûå ê ýòîìó âðåìåíè
L✱
çà êîòîðûì ñëåäóåò òîêåí ✏ ⑥✑✱
ïðåäñòàâëÿþò ïðàâèëüíûé ïðåôèêñ â ãðàììàòèêå ❍❛s❦❡❧❧✱ òî îøèáêà✲ðàçáîðà(t) ðàâíà èñòèíå✳ Ïðîâåðêà
m/ = 0
êîíòðîëèðóåò✱ ÷òî íåÿâíî äîáàâëåííàÿ çàêðûâàþùàÿ ôèãóðíàÿ
ñêîáêà áóäåò ñîïîñòàâëåíà íåÿâíîé îòêðûâàþùåé ôèãóðíîé ñêîáêå✳ ➬àìå÷àíèå ✻✳ ➶ êîíöå ââîäà äîáàâëÿþòñÿ âñå íåçàêîí÷åííûå çàêðûâàþùèå ôèãóðíûå
ñêîáêè✳ ➪óäåò îøèáêîé îêàçàòüñÿ çäåñü â ïðåäåëàõ êîíòåêñòà áåç ðàçìåùåíèÿ ✭ò✳å✳
m = 0 ✮✳
➴ñëè íè îäíî èç äàííûõ âûøå ïðàâèë íå ïîäîéäåò✱ òî àëãîðèòì çàâåðøèòñÿ íåóäà÷åé✳ ❰í ìîæåò çàâåðøèòüñÿ íåóäà÷åé✱ íàïðèìåð✱ êîãäà áóäåò äîñòèãíóò êîíåö ââîäà✱ è êîíòåêñò áåç ðàçìåùåíèÿ áóäåò àêòèâåí✱ òàê êàê çàêðûâàþùàÿ ôèãóðíàÿ ñêîáêà ïðîïóùåíà✳ ❮åêîòîðûå ñáîéíûå ñèòóàöèè íå îáíàðóæèâàþòñÿ àëãîðèòìîì✱ õîòÿ îíè ìîãóò áûòü✿ íàïðèìåð✱
❧❡t ⑥✳
➬àìå÷àíèå ✶ ðåàëèçóåò ñâîéñòâî✱ ïðè êîòîðîì îáðàáîòêà ðàçìåùåíèÿ ìîæåò áûòü îñòàíîâëåíà ïðåæäåâðåìåííî èç✲çà îøèáêè ðàçáîðà✳ ❮àïðèìåð✱
❧❡t ① ❂ ❡❀ ② ❂ ① ✐♥ ❡✬ ïðàâèëüíî✱ ïîòîìó ÷òî îíî òðàíñëèðóåòñÿ â
❧❡t ④ ① ❂ ❡❀ ② ❂ ① ⑥ ✐♥ ❡✬ ➬àêðûâàþùàÿ ôèãóðíàÿ ñêîáêà âñòàâëÿåòñÿ âñëåäñòâèå îïèñàííîãî âûøå ïðàâèëà îøèáêè
ðàçáîðà✳
Ïðàâèëî
îøèáêè
ðàçáîðà
òðóäíî
ðåàëèçîâàòü
â
åãî
ïîëíîé
✶✻✽
➹❐➚➶➚ ✾✳
ïðèìåíèìîñòè
êî
âñåìó✱
ïîòîìó
÷òî
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
âûïîëíåíèå
ýòîãî
âëå÷åò
ïðèìåíåíèå
àññîöèàòèâíîñòåé✳ ❮àïðèìåð✱ âûðàæåíèå
❞♦ ❛ ❂❂ ❜ ❂❂ ❝ èìååò åäèíñòâåííûé îäíîçíà÷íûé ✭õîòÿ✱ âîçìîæíî✱ íåïðàâèëüíûé ñ òî÷êè çðåíèÿ òèïîâ✮ ðàçáîð✱ à èìåííî✿
✭❞♦ ④ ❛ ❂❂ ❜ ⑥✮ ❂❂ ❝ ïîòîìó
÷òî
✭❂❂✮
ÿâëÿåòñÿ
íåàññîöèàòèâíûì✳
Ïîýòîìó
ïðîãðàììèñòàì
ñîâåòóþò
èçáåãàòü íàïèñàíèÿ êîäà✱ êîòîðûé òðåáóåò✱ ÷òîáû ñèíòàêñè÷åñêèé àíàëèçàòîð âñòàâëÿë çàêðûâàþùóþ ôèãóðíóþ ñêîáêó â òàêèõ ñèòóàöèÿõ✳
✾✳✹✳
✶✻✾
➹Ð➚❒❰Ò❮Û➴ ✃❰❒❒➴❮Ò➚Ð➮➮
✾✳✹
➹ðàìîòíûå êîììåíòàðèè
Ñîãëàøåíèå î ✏ãðàìîòíûõ êîììåíòàðèÿõ✑✱ âïåðâûå ðàçðàáîòàííîå Ðè÷àðäîì ➪åðäîì ✭❘✐❝❤❛r❞ ❇✐r❞✮ è Ôèëèïïîì Óîäëåðîì ✭P❤✐❧✐♣ ❲❛❞❧❡r✮ äëÿ ❖r✇❡❧❧✱ è ïîçàèìñòâîâàííîå â ñâîþ î÷åðåäü ➘îíàëüäîì ✃íóòîì ✭❉♦♥❛❧❞ ❑♥✉t❤✮ äëÿ ✏ãðàìîòíîãî ïðîãðàììèðîâàíèÿ✑✱ ÿâëÿåòñÿ
àëüòåðíàòèâíûì
ñòèëåì
ïðîãðàììèðîâàíèÿ
èñõîäíîãî
êîäà
íà
❍❛s❦❡❧❧✳
➹ðàìîòíûé ñòèëü ïîîùðÿåò êîììåíòàðèè✱ ñîçäàâàÿ èõ ïî óìîë÷àíèþ✳ Ñòðîêà✱ â êîòîðîé ✏ ❃✑ ÿâëÿåòñÿ ïåðâûì ñèìâîëîì✱ èíòåðïðåòèðóåòñÿ êàê ÷àñòü ïðîãðàììû❀ âñå îñòàëüíûå ñòðîêè ÿâëÿþòñÿ êîììåíòàðèåì✳ Òåêñò
ïðîãðàììû
âîññòàíàâëèâàåòñÿ
ïóòåì
âûáîðà
òîëüêî
òåõ
ñòðîê✱
êîòîðûå
íà÷èíàþòñÿ ñ ✏ ❃✑✱ è çàìåíû ïåðâîãî ✏ ❃✑ íà ïðîáåë✳ ➶ ïîëó÷åííîì òåêñòå ðàçìåùåíèå è êîììåíòàðèè ïðèìåíÿþòñÿ â òî÷íîñòè êàê îïèñàíî â ãëàâå ✾✳ ×òîáû îõâàòèòü íåêîòîðûå ñëó÷àè✱ ãäå ìîæíî ïî îøèáêå ïðîïóñòèòü ✏ ❃✑✱ âîçíèêíåò îøèáêà✱ åñëè ñòðîêà ïðîãðàììû ïîÿâèòñÿ ðÿäîì ñ íåïðîáåëüíîé ñòðîêîé êîììåíòàðèÿ❀ ñòðîêà ðàññìàòðèâàåòñÿ êàê ïðîáåëüíàÿ✱ åñëè îíà ñîñòîèò òîëüêî èç ïðîáåëüíûõ ñèìâîëîâ✳ Óñëîâíî íà ñòèëü êîììåíòàðèÿ óêàçûâàåò ðàñøèðåíèå ôàéëà✿ ✏ ✳❤s✑
îáû÷íûé ôàéë íà ❍❛s❦❡❧❧✱ à ✏ ✳❧❤s✑
óêàçûâàåò íà
óêàçûâàåò íà ôàéë ñ ãðàìîòíûì ❍❛s❦❡❧❧✳ Ñ
èñïîëüçîâàíèåì ýòîãî ñòèëÿ ïðîñòàÿ ïðîãðàììà âû÷èñëåíèÿ ôàêòîðèàëà ìîãëà áû âûãëÿäåòü òàê✿
Ýòà ãðàìîòíàÿ ïðîãðàììà çàïðàøèâàåò ó ïîëüçîâàòåëÿ ÷èñëî è âûâîäèò íà ýêðàí ôàêòîðèàë ýòîãî ÷èñëà✿ ❃ ♠❛✐♥ ✿✿ ■❖ ✭✮ ❃ ♠❛✐♥ ❂ ❞♦ ♣✉t❙tr ✧➶âåäèòå ÷èñëî✿ ✧ ❃ ❧ ❁✲ r❡❛❞▲✐♥❡ ❃ ♣✉t❙tr ✧♥✦❂ ✧ ❃ ♣r✐♥t ✭❢❛❝t ✭r❡❛❞ ❧✮✮ Ýòî ïðîãðàììà âû÷èñëåíèÿ ôàêòîðèàëà✳ ❃ ❢❛❝t ✿✿ ■♥t❡❣❡r ✲❃ ■♥t❡❣❡r ❃ ❢❛❝t ✵ ❂ ✶ ❃ ❢❛❝t ♥ ❂ ♥ ✯ ❢❛❝t ✭♥✲✶✮ ➚ëüòåðíàòèâíûé
ñòèëü
ãðàìîòíîãî
ïðîãðàììèðîâàíèÿ
îñîáåííî
ïîäõîäèò
äëÿ
èñïîëüçîâàíèÿ âìåñòå ñ ñèñòåìîé îáðàáîòêè òåêñòà ▲❛❚❡❳✳ Ïî ýòîìó ñîãëàøåíèþ òîëüêî òå ÷àñòè ãðàìîòíîé ïðîãðàììû✱ êîòîðûå ïîëíîñòüþ çàêëþ÷åíû ìåæäó ðàçäåëèòåëÿìè
❭❜❡❣✐♥④❝♦❞❡⑥. . .❭❡♥❞④❝♦❞❡⑥✱
ðàññìàòðèâàþòñÿ êàê òåêñò ïðîãðàììû❀ âñå îñòàëüíûå
ñòðîêè ✖ êîììåíòàðèè✳ ➪îëåå òî÷íî✿
•
✃îä ïðîãðàììû íà÷èíàåòñÿ íà ïåðâîé ñòðîêå✱ ñëåäóþùåé çà ñòðîêîé✱ êîòîðàÿ íà÷èíàåò
❭❜❡❣✐♥④❝♦❞❡⑥✳
✶✼✵
➹❐➚➶➚ ✾✳
•
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
✃îä ïðîãðàììû çàêàí÷èâàåòñÿ ñðàçó ïåðåä ïîñëåäóþùåé ñòðîêîé✱ êîòîðàÿ íà÷èíàåò
❭❡♥❞④❝♦❞❡⑥
✭êîíå÷íî✱ èãíîðèðóÿ ñòðîêîâûå ëèòåðàëû✮✳
❮åò íåîáõîäèìîñòè âñòàâëÿòü äîïîëíèòåëüíûå ïóñòûå ñòðîêè äî èëè ïîñëå ýòèõ ðàçäåëèòåëåé✱ õîòÿ ñî ñòèëèñòè÷åñêîé òî÷êè çðåíèÿ ýòî ìîæåò áûòü æåëàòåëüíî✳ ❮àïðèìåð✱
❭❞♦❝✉♠❡♥tst②❧❡④❛rt✐❝❧❡⑥ ❭❜❡❣✐♥④❞♦❝✉♠❡♥t⑥ ❭s❡❝t✐♦♥④■♥tr♦❞✉❝t✐♦♥⑥ Ýòî òðèâèàëüíàÿ ïðîãðàììà✱ êîòîðàÿ âûâîäèò ïåðâûå ✷✵ ôàêòîðèàëîâ✳ ❭❜❡❣✐♥④❝♦❞❡⑥ ♠❛✐♥ ✿✿ ■❖ ✭✮ ♠❛✐♥ ❂ ♣r✐♥t ❬ ✭♥✱ ♣r♦❞✉❝t ❬✶✳✳♥❪✮ ⑤ ♥ ❁✲ ❬✶✳✳✷✵❪❪ ❭❡♥❞④❝♦❞❡⑥ ❭❡♥❞④❞♦❝✉♠❡♥t⑥ Ýòîò ñòèëü èñïîëüçóåò òî æå ðàñøèðåíèå ôàéëà✳ ❮åæåëàòåëüíî ñìåøèâàòü ýòè äâà ñòèëÿ â îäíîì ôàéëå✳
✾✳✺✳
✶✼✶
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
✾✳✺
✃îíòåêñòíî✲ñâîáîäíûé ñèíòàêñèñ
body
→ | → | |
♠♦❞✉❧❡ modid [exports] ✇❤❡r❡ body body ④ impdecls ❀ topdecls ⑥ ④ impdecls ⑥ ④ topdecls ⑥
impdecls
→
impdecl1 ❀ . . . ❀ impdecln
module
(n ≥ 1 )
Ïåðåâîä✿
→ ♠♦❞✉❧❡ èäåíòèôèêàòîð✲ìîäóëÿ [ñïèñîê✲ýêñïîðòà] ✇❤❡r❡ òåëî | òåëî òåëî → ④ ñïèñîê✲îáúÿâëåíèé✲èìïîðòà ❀ ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ ⑥ | ④ ñïèñîê✲îáúÿâëåíèé✲èìïîðòà ⑥ | ④ ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ ⑥ ìîäóëü
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲èìïîðòà îáúÿâëåíèå✲èìïîðòà1
îáúÿâëåíèå✲èìïîðòàn
(n ≥ 1 )
exports
→
✭ export1 ✱ . . . ✱ exportn [ ✱ ] ✮
export
→ | | |
qvar qtycon [✭✳✳✮ | ✭ cname1 ✱ . . . ✱ cnamen ✮] (n ≥ 0 ) qtycls [✭✳✳✮ | ✭ qvar1 ✱ . . . ✱ qvarn ✮] (n ≥ 0 ) ♠♦❞✉❧❡ modid
(n ≥ 0 )
Ïåðåâîä✿
→ ✱ ... ✱
ñïèñîê✲ýêñïîðòà
✭
ýêñïîðò1
ýêñïîðòn
[✱]✮
(n ≥ 0 ) ýêñïîðò
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
|
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð✲òèïà
(n ≥ 0 ) |
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
[✭✳✳✮ |
[✭✳✳✮ | ✭
❝✲èìÿ1
✱ ... ✱
❝✲èìÿn
✮]
✶✼✷
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
✭ êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ1 ✱ . . . ✱ (n ≥ 0 ) | ♠♦❞✉❧❡ èäåíòèôèêàòîð✲ìîäóëÿ
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿn
impdecl
→ |
✐♠♣♦rt [q✉❛❧✐❢✐❡❞] modid [❛s modid ] [impspec] (ïóñòîå îáúÿâëåíèå)
impspec
→ |
✭ import1 ✱ . . . ✱ importn [ ✱ ] ✮ ❤✐❞✐♥❣ ✭ import1 ✱ . . . ✱ importn [ ✱ ] ✮
import
→ | | →
var tycon [ ✭✳✳✮ | ✭ cname1 ✱ . . . ✱ cnamen ✮] (n ≥ 0 ) tycls [✭✳✳✮ | ✭ var1 ✱ . . . ✱ varn ✮] (n ≥ 0 ) var | con
cname
(n ≥ 0 ) (n ≥ 0 )
Ïåðåâîä✿
→ ✐♠♣♦rt [q✉❛❧✐❢✐❡❞] èäåíòèôèêàòîð✲ìîäóëÿ [❛s [ñïåöèôèêàòîð✲èìïîðòà] | (ïóñòîå îáúÿâëåíèå) ñïåöèôèêàòîð✲èìïîðòà → ✭ èìïîðò1 ✱ . . . ✱ èìïîðòn [ ✱ ] ✮ (n ≥ 0 ) | ❤✐❞✐♥❣ ✭ èìïîðò1 ✱ . . . ✱ èìïîðòn [ ✱ ] ✮ (n ≥ 0 ) îáúÿâëåíèå✲èìïîðòà
èìïîðò
èäåíòèôèêàòîð✲ìîäóëÿ]
→
ïåðåìåííàÿ
|
êîíñòðóêòîð✲òèïà
[ ✭✳✳✮ | ✭
❝✲èìÿ1
✱ ... ✱
❝✲èìÿn
✮]
(n ≥ 0 ) |
êëàññ✲òèïà
[✭✳✳✮ | ✭
ïåðåìåííàÿ1
✱ ... ✱
ïåðåìåííàÿn
✮]
(n ≥ 0 ) ❝✲èìÿ → ïåðåìåííàÿ
|
êîíñòðóêòîð
topdecls topdecl
→ → | | |
topdecl1 ❀ . . . ❀ topdecln (n ≥ 0 ) t②♣❡ simpletype ❂ type ❞❛t❛ [context ❂❃] simpletype ❂ constrs [deriving] ♥❡✇t②♣❡ [context ❂❃] simpletype ❂ newconstr [deriving] ❝❧❛ss [scontext ❂❃] tycls tyvar [✇❤❡r❡ cdecls]
✮]
✾✳✺✳
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
| | |
✶✼✸
✐♥st❛♥❝❡ [scontext ❂❃] qtycls inst [✇❤❡r❡ idecls] ❞❡❢❛✉❧t ✭type1 ✱ . . . ✱ typen ✮ (n ≥ 0 ) decl
Ïåðåâîä✿
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲âåðõíåãî✲óðîâíÿ îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ1
îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿn
(n ≥ 1 ) îáúÿâëåíèå✲âåðõíåãî✲óðîâíÿ
→
t②♣❡ ïðîñòîé✲òèï ❂ òèï | ❞❛t❛ [êîíòåêñò ❂❃] ïðîñòîé✲òèï ❂ ñïèñîê✲êîíñòðóêöèé [❞❡r✐✈✐♥❣✲èíñòðóêöèÿ] | ♥❡✇t②♣❡ [êîíòåêñò ❂❃] ïðîñòîé✲òèï ❂ íîâàÿ✲êîíñòðóêöèÿ [❞❡r✐✈✐♥❣✲èíñòðóêöèÿ] | ❝❧❛ss [ïðîñòîé✲êîíòåêñò ❂❃] êëàññ✲òèïà ïåðåìåííàÿ✲òèïà [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé✲êëàññîâ] | ✐♥st❛♥❝❡ [ïðîñòîé✲êîíòåêñò ❂❃] êâàëèôèöèðîâàííûé✲êëàññ✲òèïà ýêçåìïëÿð [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé✲ýêçåìïëÿðîâ] | ❞❡❢❛✉❧t ✭òèï1 ✱ . . . ✱ òèïn ✮ (n ≥ 0 ) | îáúÿâëåíèå
decls decl
→ → |
④ decl1 ❀ . . . ❀ decln ⑥ gendecl (funlhs | pat 0 ) rhs
(n ≥ 0 )
cdecls cdecl
→ → |
④ cdecl1 ❀ . . . ❀ cdecln ⑥ gendecl (funlhs | var ) rhs
(n ≥ 0 )
idecls idecl
→ → |
④ idecl1 ❀ . . . ❀ idecln ⑥ (funlhs | var ) rhs
(n ≥ 0 )
gendecl
→ | |
vars ✿✿ [context ❂❃] type fixity [integer ] ops
(ñèãíàòóðà òèïà) (✐♥❢✐①✲îáúÿâëåíèå) (ïóñòîå îáúÿâëåíèå)
ops vars fixity
→ → →
op1 ✱ . . . ✱ opn var1 ✱ . . . ✱ varn ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥❢✐①
(n ≥ 1 ) (n ≥ 1 )
(❡♠♣t②)
✶✼✹
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
Ïåðåâîä✿
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé
④
îáúÿâëåíèå1
îáúÿâëåíèån
⑥
(n ≥ 0 ) îáúÿâëåíèå → îáùåå✲îáúÿâëåíèå
| (ëåâàÿ✲÷àñòü✲ôóíêöèè |
0 îáðàçåö ) ïðàâàÿ✲÷àñòü
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲êëàññîâ
④
îáúÿâëåíèå✲êëàññà1
îáúÿâëåíèå✲êëàññàn
⑥
(n ≥ 0 ) →
îáúÿâëåíèå✲êëàññà
îáùåå✲îáúÿâëåíèå
| (ëåâàÿ✲÷àñòü✲ôóíêöèè |
ïåðåìåííàÿ) ïðàâàÿ✲÷àñòü
→ ❀ ... ❀
ñïèñîê✲îáúÿâëåíèé✲ýêçåìïëÿðîâ
④
îáúÿâëåíèå✲ýêçåìïëÿðà1
îáúÿâëåíèå✲ýêçåìïëÿðàn
⑥
(n ≥ 0 ) → (ëåâàÿ✲÷àñòü✲ôóíêöèè | | (ïóñòî)
îáúÿâëåíèå✲ýêçåìïëÿðà
îáùåå✲îáúÿâëåíèå
→
ñïèñîê✲ïåðåìåííûõ
(ñèãíàòóðà |
ïåðåìåííàÿ) ïðàâàÿ✲÷àñòü
✿✿ [êîíòåêñò ❂❃]
òèï
òèïà)
àññîöèàòèâíîñòü [öåëûé✲ëèòåðàë] ñïèñîê✲îïåðàòîðîâ
(✐♥❢✐①✲îáúÿâëåíèå) | (ïóñòîå
îáúÿâëåíèå)
→ ✱ . . . ✱ îïåðàòîðn
ñïèñîê✲îïåðàòîðîâ îïåðàòîð1
(n ≥ 1 ) → ✱ ... ✱
ñïèñîê✲ïåðåìåííûõ ïåðåìåííàÿ1
ïåðåìåííàÿn
(n ≥ 1 ) → ✐♥❢✐①❧ | ✐♥❢✐①r | ✐♥❢✐①
àññîöèàòèâíîñòü
type
→
btype [✲❃ type]
(òèï
btype
→
[btype] atype
(íàëîæåíèå
atype
→
gtycon
ôóíêöèè) òèïîâ)
✾✳✺✳
| | | | → | | | |
gtycon
→ | class → | scontext → | simpleclass → context
tyvar ✭ type1 ✱ . . . ✱ typek ✮ ❬ type ❪ ✭ type ✮
(òèï êîðòåæà, k ≥ 2 ) (òèï ñïèñêà) (êîíñòðóêòîð â ñêîáêàõ)
qtycon ✭✮ ❬❪ ✭✲❃✮ ✭✱{✱}✮
(òèï îáúåäèíåíèÿ) (êîíñòðóêòîð ñïèñêà) (êîíñòðóêòîð ôóíêöèè) (êîíñòðóêòîðû êîðòåæåé)
class ✭ class1 ✱ . . . ✱ classn ✮ qtycls tyvar qtycls ✭ tyvar atype1 . . . atypen ✮ simpleclass ✭ simpleclass1 ✱ . . . ✱ simpleclassn ✮ qtycls tyvar
Ïåðåâîä✿ òèï
✶✼✺
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
→ [✲❃ òèï] (òèï ôóíêöèè)
❜✲òèï
→ [❜✲òèï] ❛✲òèï (íàëîæåíèå òèïîâ)
❜✲òèï
❛✲òèï
→
îáùèé✲êîíñòðóêòîð✲òèïà
| ïåðåìåííàÿ✲òèïà | ✭ òèï1 ✱ . . . ✱ òèïk ✮ (òèï êîðòåæà, k ≥ 2 ) | ❬ òèï ❪ (òèï ñïèñêà) | ✭ òèï ✮ (êîíñòðóêòîð â ñêîáêàõ) îáùèé✲êîíñòðóêòîð✲òèïà
→
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð✲òèïà
| ✭✮ (òèï îáúåäèíåíèÿ) | ❬❪ (êîíñòðóêòîð ñïèñêà)
(n ≥ 0 ) (n ≥ 1 ) (n ≥ 0 )
✶✼✻
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
| ✭✲❃✮ (êîíñòðóêòîð ôóíêöèè) | ✭✱{✱}✮ (êîíñòðóêòîðû êîðòåæåé) êîíòåêñò
→
êëàññ
| ✭ êëàññ1 ✱ . . . ✱ (n ≥ 0 ) êëàññ →
êëàññn
✮
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà ïåðåìåííàÿ✲òèïà
|
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
✭
ïåðåìåííàÿ✲òèïà ❛✲òèï1
...
❛✲òèïn
✮
(n ≥ 1 ) ïðîñòîé✲êîíòåêñò
→
ïðîñòîé✲êëàññ
| ✭ ïðîñòîé✲êëàññ1 ✱ . . . ✱ (n ≥ 0 ) ïðîñòîé✲êëàññ →
ïðîñòîé✲êëàññn
✮
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà ïåðåìåííàÿ✲òèïà
simpletype → constrs → constr →
tycon tyvar1 . . . tyvark constr1 ⑤ . . . ⑤ constrn con [✦] atype1 . . . [✦] atypek (btype | ✦ atype) conop (btype | ✦ atype)
|
(k ≥ 0 ) (n ≥ 1 ) (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà con = k, k ≥ 0) (èíôèêñíûé îïåðàòîð conop) (n ≥ 0 )
con ④ fielddecl1 ✱ . . . ✱ fielddecln ⑥ con atype con ④ var ✿✿ type ⑥ vars ✿✿ (type | ✦ atype) ❞❡r✐✈✐♥❣ (dclass | ✭dclass1 ✱ . . . ✱ dclassn ✮) (n ≥ 0 ) qtycls
| newconstr → | fielddecl → deriving → dclass →
Ïåðåâîä✿ ïðîñòîé✲òèï
→
êîíñòðóêòîð✲òèïà ïåðåìåííàÿ✲òèïà1
(k ≥ 0 ) → ⑤ ... ⑤
ñïèñîê✲êîíñòðóêöèé êîíñòðóêöèÿ1
(n ≥ 1 ) êîíñòðóêöèÿ
→
êîíñòðóêöèÿn
...
ïåðåìåííàÿ✲òèïàk
✾✳✺✳
✶✼✼
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
[✦] ❛✲òèï1 . . . [✦] ❛✲òèïk (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà con = k , k ≥ 0 ) | (❜✲òèï | ✦ ❛✲òèï) îïåðàòîð✲êîíñòðóêòîðà (❜✲òèï | ✦ ❛✲òèï) (èíôèêñíûé îïåðàòîð conop) |êîíñòðóêòîð ④ îáúÿâëåíèå✲ïîëÿ1 ✱ . . . ✱ îáúÿâëåíèå✲ïîëÿn ⑥ (n ≥ 0 ) íîâàÿ✲êîíñòðóêöèÿ → êîíñòðóêòîð
êîíñòðóêòîð ❛✲òèï
④ ïåðåìåííàÿ ✿✿ òèï ⑥ îáúÿâëåíèå✲ïîëÿ → ñïèñîê✲ïåðåìåííûõ ✿✿ (òèï | ✦ ❛✲òèï) ❞❡r✐✈✐♥❣✲èíñòðóêöèÿ → ❞❡r✐✈✐♥❣ (ïðîèçâîäíûé✲êëàññ | ✭ïðîèçâîäíûé✲êëàññ1 ✱ . . . ✱ ïðîèçâîäíûé✲êëàññn ✮) (n ≥ 0 ) ïðîèçâîäíûé✲êëàññ → |
êîíñòðóêòîð
êâàëèôèöèðîâàííûé✲êëàññ✲òèïà
inst
→ | | | |
gtycon ✭ gtycon tyvar1 . . . tyvark ✮ ✭ tyvar1 ✱ . . . ✱ tyvark ✮ ❬ tyvar ❪ ✭ tyvar1 ✲❃ tyvar2 ✮
(k ≥ 0 , âñå tyvar ðàçëè÷íû) (k ≥ 2 , âñå tyvar ðàçëè÷íû) (tyvar1 è tyvar2 ðàçëè÷íû)
Ïåðåâîä✿ ýêçåìïëÿð
→
îáùèé✲êîíñòðóêòîð✲òèïà
| ✭ îáùèé✲êîíñòðóêòîð✲òèïà ïåðåìåííàÿ✲òèïà1 . . . ïåðåìåííàÿ✲òèïàk ✮ (k ≥ 0 , âñå ïåðåìåííûå✲òèïà ðàçëè÷íû) | ✭ ïåðåìåííàÿ✲òèïà1 ✱ . . . ✱ ïåðåìåííàÿ✲òèïàk ✮ (k ≥ 2 , âñå ïåðåìåííûå✲òèïà ðàçëè÷íû) | ❬ ïåðåìåííàÿ✲òèïà ❪ | ✭ ïåðåìåííàÿ✲òèïà1 ✲❃ ïåðåìåííàÿ✲òèïà2 ✮ (ïåðåìåííàÿ✲òèïà1 è ïåðåìåííàÿ✲òèïà2 ðàçëè÷íû)
funlhs
→ | | | |
var apat { apat } pat i+1 varop (a,i) pat i+1 lpat i varop (l,i) pat i+1 pat i+1 varop (r,i) rpat i ✭ funlhs ✮ apat { apat }
✶✼✽
➹❐➚➶➚ ✾✳
rhs
→ |
❂ exp [✇❤❡r❡ decls] gdrhs [✇❤❡r❡ decls]
gdrhs
→
gd ❂ exp [gdrhs]
gd
→
⑤ exp 0
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
Ïåðåâîä✿ ëåâàÿ✲÷àñòü✲ôóíêöèè
→
ïåðåìåííàÿ òàêîé✲êàê✲îáðàçåö { òàêîé✲êàê✲îáðàçåö } | îáðàçåöi+1 îïåðàòîð✲ïåðåìåííîé(a,i) îáðàçåöi+1 | ëåâûé✲îáðàçåöi îïåðàòîð✲ïåðåìåííîé(l,i) îáðàçåöi+1 | îáðàçåöi+1 îïåðàòîð✲ïåðåìåííîé(r,i) ïðàâûé✲îáðàçåöi
|✭
ëåâàÿ✲÷àñòü✲ôóíêöèè
✮
òàêîé✲êàê✲îáðàçåö
{
òàêîé✲êàê✲îáðàçåö
}
→ ❂ âûðàæåíèå [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé] | ïðàâàÿ✲÷àñòü✲ñî✲ñòðàæàìè [✇❤❡r❡ ñïèñîê✲îáúÿâëåíèé]
ïðàâàÿ✲÷àñòü
ïðàâàÿ✲÷àñòü✲ñî✲ñòðàæàìè ñòðàæ ñòðàæ
⑤
❂
→
âûðàæåíèå [ïðàâàÿ✲÷àñòü✲ñî✲ñòðàæàìè]
→
âûðàæåíèå
exp exp i
lexp i lexp 6 rexp i exp 10
fexp
Ïåðåâîä✿
→ | → | | → → → → | | | | | →
0
exp 0 ✿✿ [context ❂❃] type exp 0 exp i+1 [qop (n,i) exp i+1 ] lexp i rexp i (lexp i | exp i+1 ) qop (l,i) exp i+1 ✲ exp 7 exp i+1 qop (r,i) (rexp i | exp i+1 ) ❭ apat1 . . . apatn ✲❃ exp ❧❡t decls ✐♥ exp ✐❢ exp t❤❡♥ exp ❡❧s❡ exp ❝❛s❡ exp ♦❢ ④ alts ⑥ ❞♦ ④ stmts ⑥ fexp [fexp] aexp
(ñèãíàòóðà
òèïà âûðàæåíèÿ)
(ëÿìáäà✲àáñòðàêöèÿ, n ≥ 1 ) (❧❡t✲âûðàæåíèå) (óñëîâíîå âûðàæåíèå) (❝❛s❡✲âûðàæåíèå) (❞♦✲âûðàæåíèå) (ïðèìåíåíèå
ôóíêöèè)
✾✳✺✳
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
âûðàæåíèå
✶✼✾
→
âûðàæåíèå
0
(ñèãíàòóðà
✿✿ [êîíòåêñò ❂❃] òèï òèïà âûðàæåíèÿ)
0 âûðàæåíèå i âûðàæåíèå → i+1 âûðàæåíèå
|
[êâàëèôèöèðîâàííûé✲îïåðàòîð(n,i)
âûðàæåíèå
| |
i ëåâîå✲ñå÷åíèå✲âûðàæåíèÿ
❭
. . . òàêîé✲êàê✲îáðàçåön ✲❃ âûðàæåíèå (ëÿìáäà✲àáñòðàêöèÿ, n ≥ 1 ) ❧❡t ñïèñêè✲îáúÿâëåíèé ✐♥ âûðàæåíèå (❧❡t✲âûðàæåíèå) ✐❢ âûðàæåíèå t❤❡♥ âûðàæåíèå ❡❧s❡ âûðàæåíèå (óñëîâíîå âûðàæåíèå) ❝❛s❡ âûðàæåíèå ♦❢ ④ ñïèñîê✲àëüòåðíàòèâ ⑥ (❝❛s❡✲âûðàæåíèå) ❞♦ ④ ñïèñîê✲èíñòðóêöèé ⑥ (❞♦✲âûðàæåíèå)
i+1 ]
i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿ i ëåâîå✲ñå÷åíèå✲âûðàæåíèÿ → (ëåâîå✲ñå÷åíèå✲âûðàæåíèÿi | âûðàæåíèåi+1 ) êâàëèôèöèðîâàííûé✲îïåðàòîð(l,i) i+1 âûðàæåíèå 6 ëåâîå✲ñå÷åíèå✲âûðàæåíèÿ → 7 ✲ âûðàæåíèå i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿ → (r,i) i+1 âûðàæåíèå êâàëèôèöèðîâàííûé✲îïåðàòîð (ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿi | âûðàæåíèåi+1 ) 10 → âûðàæåíèå
| | | | |
òàêîé✲êàê✲îáðàçåö1
ôóíêöèîíàëüíîå✲âûðàæåíèå
→ [ôóíêöèîíàëüíîå✲âûðàæåíèå] (ïðèìåíåíèå ôóíêöèè)
ôóíêöèîíàëüíîå✲âûðàæåíèå
aexp
→ | | | | | | | | |
âûðàæåíèå✲àðãóìåíòà
qvar gcon literal ✭ exp ✮ ✭ exp1 ✱ . . . ✱ expk ✮ ❬ exp1 ✱ . . . ✱ expk ❪ ❬ exp1 [✱ exp2 ] ✳✳ [exp3 ] ❪
❬ exp ⑤ qual1 ✱ . . . ✱ qualn ❪ ✭ exp i+1 qop (a,i) ✮ ✭ lexp i qop (l,i) ✮
(ïåðåìåííàÿ) (îáùèé êîíñòðóêòîð) (âûðàæåíèå â ñêîáêàõ) (êîðòåæ, k ≥ 2 ) (ñïèñîê, k ≥ 1 ) (àðèôìåòè÷åñêàÿ ïîñëåäîâàòåëüíîñòü) (îïèñàíèå ñïèñêà, n ≥ 1 ) (ëåâîå ñå÷åíèå) (ëåâîå ñå÷åíèå)
✶✽✵
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
(a,i)
| |
✭ qoph✲i exp i+1 ✮ (r ,i) ✭ qoph✲i rexp i ✮ qcon ④ fbind1 ✱ . . . ✱ fbindn ⑥
|
aexphqconi ④ fbind1 ✱ . . . ✱ fbindn ⑥
|
(ïðàâîå ñå÷åíèå) (ïðàâîå ñå÷åíèå) (èìåíîâàííàÿ êîíñòðóêöèÿ, n ≥ 0) (èìåíîâàííîå îáíîâëåíèå, n ≥ 1)
Ïåðåâîä✿ âûðàæåíèå✲àðãóìåíòà
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
(ïåðåìåííàÿ) |
îáùèé✲êîíñòðóêòîð
(îáùèé êîíñòðóêòîð) | ëèòåðàë | ✭ âûðàæåíèå ✮ (âûðàæåíèå â ñêîáêàõ) | ✭ âûðàæåíèå1 ✱ . . . ✱ âûðàæåíèåk ✮ (êîðòåæ, k ≥ 2 ) | ❬ âûðàæåíèå1 ✱ . . . ✱ âûðàæåíèåk ❪ (ñïèñîê, k ≥ 1 ) | ❬ âûðàæåíèå1 [✱ âûðàæåíèå2 ] ✳✳ [âûðàæåíèå3 ] ❪ (àðèôìåòè÷åñêàÿ ïîñëåäîâàòåëüíîñòü) | ❬ âûðàæåíèå ⑤ êâàëèôèêàòîð1 ✱ . . . ✱ êâàëèôèêàòîðn ❪ (îïèñàíèå ñïèñêà, n ≥ 1 ) | ✭ âûðàæåíèåi+1 êâàëèôèöèðîâàííûé✲îïåðàòîð(a,i) ✮ (ëåâîå ñå÷åíèå) | ✭ ëåâîå✲ñå÷åíèå✲âûðàæåíèÿi êâàëèôèöèðîâàííûé✲îïåðàòîð(l,i) ✮ (ëåâîå ñå÷åíèå) (a,i) | ✭ êâàëèôèöèðîâàííûé✲îïåðàòîðh✲i âûðàæåíèåi+1 ✮ (ïðàâîå ñå÷åíèå) (r ,i) | ✭ êâàëèôèöèðîâàííûé✲îïåðàòîðh✲i ïðàâîå✲ñå÷åíèå✲âûðàæåíèÿi ✮ (ïðàâîå ñå÷åíèå) | êâàëèôèöèðîâàííûé✲êîíñòðóêòîð ④ ñâÿçûâàíèå✲èìåíè✲ïîëÿ1 ✱ . . . ✱ ñâÿçûâàíèå✲èìåíè✲ïîëÿn ⑥ (èìåíîâàííàÿ êîíñòðóêöèÿ, n ≥ 0 ) | âûðàæåíèå✲àðãóìåíòàhêâàëèôèöèðîâàííûé✲êîíñòðóêòîði ④ ñâÿçûâàíèå✲èìåíè✲ïîëÿ1 ✱ . . . ✱ ñâÿçûâàíèå✲èìåíè✲ïîëÿn ⑥ (èìåíîâàííîå îáíîâëåíèå, n ≥ 1 ) qual
→ | |
pat ❁✲ exp ❧❡t decls exp
(ãåíåðàòîð) (ëîêàëüíîå îáúÿâëåíèå) (ñòðàæ)
✾✳✺✳
✶✽✶
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
→ → | |
alt1 ❀ . . . ❀ altn pat ✲❃ exp [✇❤❡r❡ decls] pat gdpat [✇❤❡r❡ decls]
gdpat
→
gd ✲❃ exp [ gdpat ]
stmts stmt
→ → | | |
stmt1 . . . stmtn exp [❀] exp ❀ pat ❁✲ exp ❀ ❧❡t decls ❀ ❀
→
qvar ❂ exp
alts alt
fbind
(n ≥ 1 )
(ïóñòàÿ
(n ≥ 0 )
(ïóñòàÿ
Ïåðåâîä✿
→ ❁✲ âûðàæåíèå (ãåíåðàòîð) | ❧❡t ñïèñêè✲îáúÿâëåíèé (ëîêàëüíîå îáúÿâëåíèå) | âûðàæåíèå (ñòðàæ)
êâàëèôèêàòîð îáðàçåö
→ ❀ ... ❀
ñïèñîê✲àëüòåðíàòèâ àëüòåðíàòèâà1
àëüòåðíàòèâàn
(n ≥ 1 ) àëüòåðíàòèâà îáðàçåö
| |
✲❃
→
âûðàæåíèå
[✇❤❡r❡
(ïóñòàÿ
ñòðàæ
✲❃
ñïèñîê✲îáúÿâëåíèé]
→
âûðàæåíèå
ñïèñîê✲èíñòðóêöèé èíñòðóêöèÿ1
...
[
îáðàçåö✲ñî✲ñòðàæàìè
→ èíñòðóêöèÿn âûðàæåíèå
(n ≥ 0 ) → ❀ ❁✲ âûðàæåíèå ❀
èíñòðóêöèÿ
âûðàæåíèå îáðàçåö
[✇❤❡r❡
àëüòåðíàòèâà)
îáðàçåö✲ñî✲ñòðàæàìè
|
ñïèñîê✲îáúÿâëåíèé]
îáðàçåö îáðàçåö✲ñî✲ñòðàæàìè
àëüòåðíàòèâà)
[❀]
]
èíñòðóêöèÿ)
✶✽✷
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
| ❧❡t ñïèñîê✲îáúÿâëåíèé ❀ |❀ (ïóñòàÿ èíñòðóêöèÿ) ñâÿçûâàíèå✲èìåíè✲ïîëÿ
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
→ | → | | → → → → |
pat pat i
lpat i lpat 6 rpat i pat 10
❂
âûðàæåíèå
var ✰ integer pat 0 pat i+1 [qconop (n,i) pat i+1 ] lpat i rpat i (lpat i | pat i+1 ) qconop (l,i) pat i+1 ✲ (integer | float) pat i+1 qconop (r,i) (rpat i | pat i+1 ) apat gcon apat1 . . . apatk
(îáðàçåö óïîðÿäî÷èâàíèÿ)
(îòðèöàòåëüíûé ëèòåðàë) (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà gcon = k, k ≥ 1)
Ïåðåâîä✿ îáðàçåö
→
✰ öåëûé✲ëèòåðàë (îáðàçåö óïîðÿäî÷èâàíèÿ)
ïåðåìåííàÿ
0 îáðàçåö i îáðàçåö → i+1 îáðàçåö
|
| |
[êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà(n,i)
i+1 îáðàçåö ]
i ëåâûé✲îáðàçåö
i ïðàâûé✲îáðàçåö i ëåâûé✲îáðàçåö → (ëåâûé✲îáðàçåöi | îáðàçåöi+1 ) êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà(l,i) i+1 îáðàçåö 6 ëåâûé✲îáðàçåö →
✲ (öåëûé✲ëèòåðàë | ëèòåðàë✲ñ✲ïëàâàþùåé✲òî÷êîé) (îòðèöàòåëüíûé ëèòåðàë) i ïðàâûé✲îáðàçåö → i+1 (r,i) îáðàçåö êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà i i+1 (ïðàâûé✲îáðàçåö | îáðàçåö ) 10 îáðàçåö → òàêîé✲êàê✲îáðàçåö
|
. . . òàêîé✲êàê✲îáðàçåök (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà gcon = k , k ≥ 1 )
îáùèé✲êîíñòðóêòîð òàêîé✲êàê✲îáðàçåö1
✾✳✺✳
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
→ |
apat
|
qcon ④ fpat1 ✱ . . . ✱ fpatk ⑥
| | | | | |
literal ❴ ✭ pat ✮ ✭ pat1 ✱ . . . ✱ patk ✮ ❬ pat1 ✱ . . . ✱ patk ❪ ⑦ apat
→
fpat
var [ @ apat] gcon
Ïåðåâîä✿ ïåðåìåííàÿ
(✏òàêîé
[@
→
òàêîé✲êàê✲îáðàçåö]
êàê✑✲îáðàçåö)
|
îáùèé✲êîíñòðóêòîð
|
êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
(÷èñëî
àðãóìåíòîâ êîíñòðóêòîðà
gcon = 0 )
④ îáðàçåö✲ñ✲èìåíåì1 ✱ . . . ✱ îáðàçåö✲ñ✲èìåíåìk ⑥ (èìåíîâàííûé îáðàçåö, k ≥ 0 ) | ëèòåðàë |❴ (ëþáûå ñèìâîëû) | ✭ îáðàçåö ✮ (îáðàçåö â ñêîáêàõ) | ✭ îáðàçåö1 ✱ . . . ✱ îáðàçåök ✮ (îáðàçåö êîðòåæà, k ≥ 2 ) | ❬ îáðàçåö1 ✱ . . . ✱ îáðàçåök ❪ (îáðàçåö ñïèñêà, k ≥ 1 ) | ⑦ òàêîé✲êàê✲îáðàçåö (íåîïðîâåðæèìûé îáðàçåö) îáðàçåö✲ñ✲èìåíåì
→
êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
gcon
→ | | |
✭✮ ❬❪ ✭✱{✱}✮ qcon
❂
(✏òàêîé êàê✑✲îáðàçåö) (÷èñëî àðãóìåíòîâ êîíñòðóêòîðà gcon = 0) (èìåíîâàííûé îáðàçåö, k ≥ 0) (ëþáûå ñèìâîëû) (îáðàçåö â ñêîáêàõ) (îáðàçåö êîðòåæà, k ≥ 2 ) (îáðàçåö ñïèñêà, k ≥ 1 ) (íåîïðîâåðæèìûé îáðàçåö)
qvar ❂ pat
òàêîé✲êàê✲îáðàçåö
✶✽✸
îáðàçåö
✶✽✹
➹❐➚➶➚ ✾✳
var qvar
→ →
varid | ✭ varsym ✮ qvarid | ✭ qvarsym ✮
con qcon
→ →
conid | ✭ consym ✮ qconid | ✭ gconsym ✮
varop qvarop
→ →
varsym | ❵ varid ❵ qvarsym | ❵ qvarid ❵
conop qconop
→ →
consym | ❵ conid ❵ gconsym | ❵ qconid ❵
op qop
→ →
varop | conop qvarop | qconop
gconsym
→
✿ | qconsym
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
Ïåðåâîä✿ îáùèé✲êîíñòðóêòîð
→
✭✮ | ❬❪ | ✭✱{✱}✮ | êâàëèôèöèðîâàííûé✲êîíñòðóêòîð ïåðåìåííàÿ
→
èäåíòèôèêàòîð✲ïåðåìåííîé
| ✭ ñèìâîë✲ïåðåìåííîé ✮ (ïåðåìåííàÿ) êâàëèôèöèðîâàííàÿ✲ïåðåìåííàÿ
→
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé
| ✭ êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé ✮ (êâàëèôèöèðîâàííàÿ ïåðåìåííàÿ) êîíñòðóêòîð → èäåíòèôèêàòîð✲êîíñòðóêòîðà
| ✭ ñèìâîë✲êîíñòðóêòîðà ✮ (êîíñòðóêòîð) êâàëèôèöèðîâàííûé✲êîíñòðóêòîð
→
êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà
| ✭ ñèìâîë✲îáùåãî✲êîíñòðóêòîðà ✮ (êâàëèôèöèðîâàííûé êîíñòðóêòîð) îïåðàòîð✲ïåðåìåííîé → ñèìâîë✲ïåðåìåííîé
| ❵ èäåíòèôèêàòîð✲ïåðåìåííîé ❵
(ïåðåìåííàÿ) (êâàëèôèöèðîâàííàÿ ïåðåìåííàÿ) (êîíñòðóêòîð) (êâàëèôèöèðîâàííûé êîíñòðóêòîð) (îïåðàòîð ïåðåìåííîé) (êâàëèôèöèðîâàííûé îïåðàòîð ïåðåìåííîé) (îïåðàòîð êîíñòðóêòîðà) (êâàëèôèöèðîâàííûé îïåðàòîð êîíñòðóêòîðà) (îïåðàòîð) (êâàëèôèöèðîâàííûé îïåðàòîð)
✾✳✺✳
✃❰❮Ò➴✃ÑÒ❮❰✲Ñ➶❰➪❰➘❮Û➱ Ñ➮❮Ò➚✃Ñ➮Ñ
(îïåðàòîð ïåðåìåííîé) êâàëèôèöèðîâàííûé✲îïåðàòîð✲ïåðåìåííîé
→
êâàëèôèöèðîâàííûé✲ñèìâîë✲ïåðåìåííîé
| ❵ êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲ïåðåìåííîé ❵ (êâàëèôèöèðîâàííûé îïåðàòîð ïåðåìåííîé) îïåðàòîð✲êîíñòðóêòîðà → ñèìâîë✲êîíñòðóêòîðà
| ❵ èäåíòèôèêàòîð✲êîíñòðóêòîðà ❵ (îïåðàòîð êîíñòðóêòîðà) êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà
→
ñèìâîë✲îáùåãî✲êîíñòðóêòîðà
| ❵ êâàëèôèöèðîâàííûé✲èäåíòèôèêàòîð✲êîíñòðóêòîðà ❵ (êâàëèôèöèðîâàííûé îïåðàòîð êîíñòðóêòîðà) îïåðàòîð → îïåðàòîð✲ïåðåìåííîé
|
îïåðàòîð✲êîíñòðóêòîðà
(îïåðàòîð) êâàëèôèöèðîâàííûé✲îïåðàòîð
→
êâàëèôèöèðîâàííûé✲îïåðàòîð✲ïåðåìåííîé
|
êâàëèôèöèðîâàííûé✲îïåðàòîð✲êîíñòðóêòîðà
(êâàëèôèöèðîâàííûé îïåðàòîð) → ✿ | êâàëèôèöèðîâàííûé✲ñèìâîë✲êîíñòðóêòîðà
ñèìâîë✲îáùåãî✲êîíñòðóêòîðà
✶✽✺
✶✽✻
➹❐➚➶➚ ✾✳
Ñ➮❮Ò➚✃Ñ➮×➴Ñ✃➮➱ ÑÏÐ➚➶❰×❮➮✃
➹ëàâà ✶✵
Ñïåöèôèêàöèÿ ïðîèçâîäíûõ ýêçåìïëÿðîâ Ïðîèçâîäíûé ýêçåìïëÿð ïðåäñòàâëÿåò ñîáîé îáúÿâëåíèå ýêçåìïëÿðà✱ êîòîðîå
ãåíåðèðóåòñÿ àâòîìàòè÷åñêè â ñâÿçè ñ îáúÿâëåíèåì ❞❛t❛ èëè ♥❡✇t②♣❡✳ Òåëî îáúÿâëåíèÿ ïðîèçâîäíîãî ýêçåìïëÿðà ïîëó÷àåòñÿ ñèíòàêñè÷åñêè èç îïðåäåëåíèÿ ñâÿçàííîãî ñ íèì òèïà✳ Ïðîèçâîäíûå ýêçåìïëÿðû âîçìîæíû òîëüêî äëÿ êëàññîâ✱ èçâåñòíûõ êîìïèëÿòîðó✿ òåõ✱ êîòîðûå îïðåäåëåíû èëè â Pr❡❧✉❞❡✱ èëè â ñòàíäàðòíîé áèáëèîòåêå✳ ➶ ýòîé ãëàâå ìû îïèøåì âûâåäåíèå ïðîèçâîäíûõ ýêçåìïëÿðîâ êëàññîâ✱ îïðåäåëåííûõ â Pr❡❧✉❞❡✳ ➴ñëè T ✖ àëãåáðàè÷åñêèé òèï äàííûõ✱ îáúÿâëåííûé ñ ïîìîùüþ✿ ❞❛t❛ cx ❂❃ T u1 . . . uk
❂ K1 t11 . . . t1k1 ⑤ · · · ⑤ Kn tn1 . . . tnkn ❞❡r✐✈✐♥❣ ✭C1 ✱ . . . ✱ Cm ✮
✭ãäå m ≥ 0 è êðóãëûå ñêîáêè ìîæíî îïóñòèòü✱ åñëè m = 1 ✮✱ òîãäà îáúÿâëåíèå ïðîèçâîäíîãî ýêçåìïëÿðà âîçìîæíî äëÿ êëàññà C ✱ åñëè âûïîëíÿþòñÿ ñëåäóþùèå óñëîâèÿ✿ ✶✳ C ÿâëÿåòñÿ îäíèì èç êëàññîâ ❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✱ ❙❤♦✇ èëè ❘❡❛❞✳ ✷✳ ➴ñòü êîíòåêñò cx ′ òàêîé✱ ÷òî cx ′ ⇒ C tij âûïîëíÿåòñÿ äëÿ êàæäîãî èç òèïîâ êîìïîíåíò tij ✳ ✸✳ ➴ñëè C ÿâëÿåòñÿ êëàññîì ❇♦✉♥❞❡❞✱ òèï äîëæåí áûòü ïåðå÷èñëèìûì ✭âñå êîíñòðóêòîðû äîëæíû áûòü ñ íóëåâûì ÷èñëîì àðãóìåíòîâ✮ èëè èìåòü òîëüêî îäèí êîíñòðóêòîð✳ ✹✳ ➴ñëè C ÿâëÿåòñÿ êëàññîì ❊♥✉♠✱ òèï äîëæåí áûòü ïåðå÷èñëèìûì✳ ✺✳ ❮å äîëæíî áûòü íèêàêîãî ÿâíîãî îáúÿâëåíèÿ ýêçåìïëÿðà ãäå✲ëèáî â äðóãîì ìåñòå â ïðîãðàììå✱ êîòîðîå äåëàåò T u1 . . . uk ýêçåìïëÿðîì C ✳ ✶✽✼
✶✽✽
➹❐➚➶➚ ✶✵✳
ÑÏ➴Ö➮Ô➮✃➚Ö➮ß ÏÐ❰➮➬➶❰➘❮ÛÕ Ý✃➬➴❒Ï❐ßÐ❰➶
Ñ öåëüþ âûâåäåíèÿ ïðîèçâîäíûõ ýêçåìïëÿðîâ✱ îáúÿâëåíèå îáúÿâëåíèå
❞❛t❛
♥❡✇t②♣❡ îáðàáàòûâàåòñÿ êàê
ñ îäíèì êîíñòðóêòîðîì✳
➴ñëè ïðèñóòñòâóåò èíñòðóêöèÿ ãåíåðèðóåòñÿ äëÿ
T u1 . . . uk
❞❡r✐✈✐♥❣✱
îáúÿâëåíèå ýêçåìïëÿðà àâòîìàòè÷åñêè
ïî êàæäîìó êëàññó
Ci ✳ ➴ñëè îáúÿâëåíèå ïðîèçâîäíîãî Ci ✱ òî âîçíèêíåò ñòàòè÷åñêàÿ îøèáêà✳ ➴ñëè ïðîèçâîäíûå ýêçåìïëÿðû íå òðåáóþòñÿ✱ èíñòðóêöèþ ❞❡r✐✈✐♥❣ ìîæíî îïóñòèòü èëè ìîæíî èñïîëüçîâàòü èíñòðóêöèþ ❞❡r✐✈✐♥❣ ✭✮✳
ýêçåìïëÿðà íåâîçìîæíî äëÿ êàêîãî✲ëèáî èç
✃àæäîå îáúÿâëåíèå ïðîèçâîäíîãî ýêçåìïëÿðà áóäåò èìåòü âèä✿
✐♥st❛♥❝❡ ✭cx ✱ cx ′ ✮ ❂❃ Ci (T u1 . . . uk ) ✇❤❡r❡ ④ d ⑥ ãäå
d
âûâîäèòñÿ àâòîìàòè÷åñêè â çàâèñèìîñòè îò
Ci
è îáúÿâëåíèÿ òèïà äàííûõ äëÿ
T
✭êàê áóäåò îïèñàíî â îñòàâøåéñÿ ÷àñòè ýòîãî ðàçäåëà✮✳ ✃îíòåêñò
cx ′
ÿâëÿåòñÿ ñàìûì ìàëåíüêèì êîíòåêñòîì✱ óäîâëåòâîðÿþùèì ïðèâåäåííîìó
âûøå ïóíêòó ✭✷✮✳ ➘ëÿ âçàèìíî ðåêóðñèâíûõ òèïîâ äàííûõ êîìïèëÿòîð ìîæåò ïîòðåáîâàòü âûïîëíåíèÿ âû÷èñëåíèÿ ñ ôèêñèðîâàííîé òî÷êîé✱ ÷òîáû åãî âû÷èñëèòü✳ Òåïåðü äàäèì îñòàâøèåñÿ äåòàëè ïðîèçâîäíûõ ýêçåìïëÿðîâ äëÿ êàæäîãî èç âûâîäèìûõ êëàññîâ Pr❡❧✉❞❡✳ Ñâîáîäíûå ïåðåìåííûå è êîíñòðóêòîðû✱ èñïîëüçóåìûå â ýòèõ òðàíñëÿöèÿõ✱ âñåãäà ññûëàþòñÿ íà îáúåêòû✱ îïðåäåëåííûå â
✶✵✳✶
Ïðîèçâîäíûå ýêçåìïëÿðû êëàññîâ
Pr❡❧✉❞❡✳
❊q
è
❖r❞
❊q è ❖r❞ àâòîìàòè÷åñêè ââîäÿò ìåòîäû êëàññà ✭❂❂✮✱ ✭✴❂✮✱ ❝♦♠♣❛r❡✱ ✭❁✮✱ ✭❁❂✮✱ ✭❃✮✱ ✭❃❂✮✱ ♠❛① è ♠✐♥✳ Ïîñëåäíèå ñåìü îïåðàòîðîâ îïðåäåëåíû
Ïðîèçâîäíûå ýêçåìïëÿðû êëàññîâ
òàê✱ ÷òîáû ñðàâíèâàòü ñâîè àðãóìåíòû ëåêñèêîãðàôè÷åñêè ïî îòíîøåíèþ ê çàäàííîìó íàáîðó êîíñòðóêòîðîâ✿ ÷åì ðàíüøå ñòîèò êîíñòðóêòîð â îáúÿâëåíèè òèïà äàííûõ✱ òåì ìåíüøå îí ñ÷èòàåòñÿ ïî ñðàâíåíèþ ñ áîëåå ïîçäíèìè✳ ❮àïðèìåð✱ äëÿ òèïà äàííûõ ìû ïîëó÷èì✿
✭❚r✉❡ ❃ ❋❛❧s❡✮ ❂❂ ❚r✉❡✳
❇♦♦❧
➶ûâåäåííûå ñðàâíåíèÿ âñåãäà îáõîäÿò êîíñòðóêòîðû ñëåâà íàïðàâî✳ Ïðèâåäåííûå íèæå ïðèìåðû èëëþñòðèðóþò ýòî ñâîéñòâî✿
✭✶✱✉♥❞❡❢✐♥❡❞✮ ❂❂ ✭✷✱✉♥❞❡❢✐♥❡❞✮ ⇒ ✭✉♥❞❡❢✐♥❡❞✱✶✮ ❂❂ ✭✉♥❞❡❢✐♥❡❞✱✷✮ ⇒
❋❛❧s❡ ⊥
❊q è ❖r❞ ÿâëÿþòñÿ àðãóìåíòîâ✳ ❮àïðèìåð✱ ❋❛❧s❡ ❁❂ ⊥ ÿâëÿåòñÿ ⊥✱ äàæå êîíñòðóêòîðîì òèïà ❇♦♦❧ ✳ ➶ñå âûâåäåííûå îïåðàöèè êëàññîâ
ñòðîãèìè â îòíîøåíèè îáîèõ åñëè
❋❛❧s❡
ÿâëÿåòñÿ ïåðâûì
✶✵✳✷✳
ÏÐ❰➮➬➶❰➘❮Û➴ Ý✃➬➴❒Ï❐ßÐÛ ✃❐➚ÑÑ➚
✶✵✳✷
✶✽✾
❊◆❯▼
Ïðîèçâîäíûå ýêçåìïëÿðû êëàññà
❊♥✉♠
❰áúÿâëåíèÿ ïðîèçâîäíûõ ýêçåìïëÿðîâ êëàññà ❊♥✉♠ âîçìîæíû òîëüêî äëÿ ïåðå÷èñëåíèé ✭òèïîâ äàííûõ ñ êîíñòðóêòîðàìè✱ êîòîðûå èìåþò òîëüêî íóëåâîå ÷èñëî àðãóìåíòîâ✮✳ ✃îíñòðóêòîðû ñ íóëåâûì ÷èñëîì àðãóìåíòîâ ñ÷èòàþòñÿ ïðîíóìåðîâàííûìè ñëåâà íàïðàâî èíäåêñàìè îò ✵ äî n − 1✳ ❰ïåðàòîðû s✉❝❝ è ♣r❡❞ äàþò ñîîòâåòñòâåííî ïðåäûäóùåå è ïîñëåäóþùåå çíà÷åíèå â ñîîòâåòñòâèè ñ ýòîé ñõåìîé íóìåðàöèè✳ ➪óäåò îøèáêîé ïðèìåíèòü s✉❝❝ ê ìàêñèìàëüíîìó ýëåìåíòó èëè ♣r❡❞ ✖ ê ìèíèìàëüíîìó ýëåìåíòó✳ ❰ïåðàòîðû t♦❊♥✉♠ è ❢r♦♠❊♥✉♠ îòîáðàæàþò ïåðå÷èñëèìûå çíà÷åíèÿ â çíà÷åíèÿ òèïà ■♥t è îáðàòíî❀ t♦❊♥✉♠ âûçûâàåò îøèáêó âðåìåíè âûïîëíåíèÿ ïðîãðàììû✱ åñëè àðãóìåíò ■♥t íå ÿâëÿåòñÿ èíäåêñîì îäíîãî èç êîíñòðóêòîðîâ✳ ❰ïðåäåëåíèÿ îñòàâøèõñÿ ìåòîäîâ✿ ❡♥✉♠❋r♦♠ ① ❡♥✉♠❋r♦♠❚❤❡♥ ① ②
❂ ❡♥✉♠❋r♦♠❚♦ ① ❧❛st❈♦♥ ❂ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ① ② ❜♦✉♥❞ ✇❤❡r❡ ❜♦✉♥❞ ⑤ ❢r♦♠❊♥✉♠ ② ❃❂ ❢r♦♠❊♥✉♠ ① ❂ ⑤ ♦t❤❡r✇✐s❡ ❂ ❡♥✉♠❋r♦♠❚♦ ① ② ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ① ✳✳ ❢r♦♠❊♥✉♠ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ① ② ③ ❂ ♠❛♣ t♦❊♥✉♠ ❬❢r♦♠❊♥✉♠ ①✱ ❢r♦♠❊♥✉♠ ②
❧❛st❈♦♥ ❢✐rst❈♦♥ ②❪ ✳✳ ❢r♦♠❊♥✉♠ ③❪
ãäå ❢✐rst❈♦♥ è ❧❛st❈♦♥ ✖ ñîîòâåòñòâåííî ïåðâûé è ïîñëåäíèé êîíñòðóêòîðû✱ ïåðå÷èñëåííûå â îáúÿâëåíèè ❞❛t❛✳ ❮àïðèìåð✱ ñ ó÷åòîì òèïà äàííûõ✿ ❞❛t❛ ❈♦❧♦r ❂ ❘❡❞ ⑤ ❖r❛♥❣❡ ⑤ ❨❡❧❧♦✇ ⑤ ●r❡❡♥ ❞❡r✐✈✐♥❣ ✭❊♥✉♠✮
ìû èìåëè áû✿ ❬❖r❛♥❣❡ ✳✳❪ ❢r♦♠❊♥✉♠ ❨❡❧❧♦✇
✶✵✳✸
❂❂ ❬❖r❛♥❣❡✱ ❨❡❧❧♦✇✱ ●r❡❡♥❪ ❂❂ ✷
Ïðîèçâîäíûå ýêçåìïëÿðû êëàññà
❇♦✉♥❞❡❞
✃ëàññ ❇♦✉♥❞❡❞ ââîäèò ìåòîäû êëàññà ♠✐♥❇♦✉♥❞ è ♠❛①❇♦✉♥❞✱ êîòîðûå îïðåäåëÿþò ìèíèìàëüíûé è ìàêñèìàëüíûé ýëåìåíò òèïà✳ ➘ëÿ ïåðå÷èñëåíèÿ ãðàíèöàìè ÿâëÿþòñÿ ïåðâûé è ïîñëåäíèé êîíñòðóêòîðû✱ ïåðå÷èñëåííûå â îáúÿâëåíèè ❞❛t❛✳ ➘ëÿ òèïà ñ îäíèì êîíñòðóêòîðîì êîíñòðóêòîð ïðèìåíÿåòñÿ ê ãðàíèöàì òèïîâ êîìïîíåíò✳ ❮àïðèìåð✱ ñëåäóþùèé òèï äàííûõ✿ ❞❛t❛ P❛✐r ❛ ❜ ❂ P❛✐r ❛ ❜ ❞❡r✐✈✐♥❣ ❇♦✉♥❞❡❞
ïðîèçâåë áû ñëåäóþùèé ýêçåìïëÿð êëàññà ❇♦✉♥❞❡❞✿
✶✾✵
➹❐➚➶➚ ✶✵✳
ÑÏ➴Ö➮Ô➮✃➚Ö➮ß ÏÐ❰➮➬➶❰➘❮ÛÕ Ý✃➬➴❒Ï❐ßÐ❰➶
✐♥st❛♥❝❡ ✭❇♦✉♥❞❡❞ ❛✱❇♦✉♥❞❡❞ ❜✮ ❂❃ ❇♦✉♥❞❡❞ ✭P❛✐r ❛ ❜✮ ✇❤❡r❡ ♠✐♥❇♦✉♥❞ ❂ P❛✐r ♠✐♥❇♦✉♥❞ ♠✐♥❇♦✉♥❞ ♠❛①❇♦✉♥❞ ❂ P❛✐r ♠❛①❇♦✉♥❞ ♠❛①❇♦✉♥❞
✶✵✳✹
Ïðîèçâîäíûå ýêçåìïëÿðû êëàññîâ
❘❡❛❞
è
❙❤♦✇
❘❡❛❞ è ❙❤♦✇ àâòîìàòè÷åñêè ââîäÿò ìåòîäû êëàññà s❤♦✇sPr❡❝✱ r❡❛❞sPr❡❝✱ s❤♦✇▲✐st è r❡❛❞▲✐st✳ ❰íè èñïîëüçóþòñÿ äëÿ ïåðåâîäà çíà÷åíèé
Ïðîèçâîäíûå ýêçåìïëÿðû êëàññîâ
â ñòðîêè è ïåðåâîäà ñòðîê â çíà÷åíèÿ✳
s❤♦✇sPr❡❝ ❞ ① r ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ óðîâåíü ïðèîðèòåòà ❞ ✵ äî ✶✶✮✱ çíà÷åíèå ① è ñòðîêó r✳ ❰íà âîçâðàùàåò ñòðîêîâîå ïðåäñòàâëåíèå ①✱ ñîåäèíåííîå ñ r✳ s❤♦✇sPr❡❝ óäîâëåòâîðÿåò ïðàâèëó✿
Ôóíêöèÿ
✭÷èñëî îò
s❤♦✇sPr❡❝ ❞ ① r ✰✰ s
❂❂ s❤♦✇sPr❡❝ ❞ ① ✭r ✰✰ s✮
Ïðåäñòàâëåíèå áóäåò çàêëþ÷åíî â êðóãëûå ñêîáêè✱ åñëè ïðèîðèòåò êîíñòðóêòîðà âåðõíåãî óðîâíÿ â
①
ìåíüøå ÷åì
❞✳
Òàêèì îáðàçîì✱ åñëè
íèêîãäà íå áóäåò çàêëþ÷åí â êðóãëûå ñêîáêè❀ åñëè
❞
❞
ðàâíî
ðàâíî
✶✶✱
✵✱
òî ðåçóëüòàò
òî îí âñåãäà áóäåò
çàêëþ÷åí â êðóãëûå ñêîáêè✱ åñëè îí íå ÿâëÿåòñÿ àòîìàðíûì âûðàæåíèåì ✭âñïîìíèì✱ ÷òî ïðèìåíåíèå ôóíêöèè èìååò ïðèîðèòåò
✶✵✮✳ ➘îïîëíèòåëüíûé ïàðàìåòð r íåîáõîäèì✱
åñëè äðåâîâèäíûå ñòðóêòóðû äîëæíû áûòü íàïå÷àòàíû çà ëèíåéíîå✱ à íå êâàäðàòè÷íîå âðåìÿ îò ðàçìåðà äåðåâà✳ Ôóíêöèÿ îò
✵
äî
r❡❛❞sPr❡❝ ❞ s ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ óðîâåíü ïðèîðèòåòà ❞ ✭÷èñëî ✶✵✮ è ñòðîêó s è ïûòàåòñÿ âûïîëíèòü ðàçáîð çíà÷åíèÿ â íà÷àëå ñòðîêè✱
âîçâðàùàÿ ñïèñîê ïàð ✭ðàçîáðàííîå çíà÷åíèå✱ îñòàâøàÿñÿ ÷àñòü ñòðîêè✮✳ ➴ñëè íåò óñïåøíîãî ðàçáîðà✱ âîçâðàùàåìûé ñïèñîê ïóñò✳ Ðàçáîð èíôèêñíîãî îïåðàòîðà✱ êîòîðûé íå çàêëþ÷åí â êðóãëûå ñêîáêè✱ çàâåðøèòñÿ óñïåøíî✱ òîëüêî åñëè ïðèîðèòåò îïåðàòîðà áîëüøå ÷åì èëè ðàâåí
❞✳
➘îëæíî âûïîëíÿòüñÿ ñëåäóþùåå✿
✭①✱✧✧✮
äîëæåí ÿâëÿòüñÿ ýëåìåíòîì
✭r❡❛❞sPr❡❝ ❞ ✭s❤♦✇sPr❡❝ ❞ ① ✧✧✮✮
Òî åñòü r❡❛❞sPr❡❝ äîëæåí óìåòü âûïîëíÿòü ðàçáîð ñòðîêè✱ ïîëó÷åííîé ñ ïîìîùüþ s❤♦✇sPr❡❝✱ è äîëæåí ïåðåäàâàòü çíà÷åíèå✱ ñ êîòîðîãî s❤♦✇sPr❡❝ íà÷àë ðàáîòó✳
s❤♦✇▲✐st
è
r❡❛❞▲✐st
ïîçâîëÿþò ïîëó÷èòü ïðåäñòàâëåíèå ñïèñêîâ îáúåêòîâ✱ èñïîëüçóÿ
íåñòàíäàðòíûå îáîçíà÷åíèÿ✳ Ýòî îñîáåííî ïîëåçíî äëÿ ñòðîê ✭ñïèñêîâ
r❡❛❞sPr❡❝
❈❤❛r✮✳
âûïîëíÿåò ðàçáîð ëþáîãî äîïóñòèìîãî ïðåäñòàâëåíèÿ ñòàíäàðòíûõ òèïîâ✱
êðîìå ñòðîê✱ äëÿ êîòîðûõ äîïóñòèìû òîëüêî ñòðîêè✱ çàêëþ÷åííûå â êàâû÷êè✱ è äðóãèõ
✶✵✳✹✳
ÏÐ❰➮➬➶❰➘❮Û➴ Ý✃➬➴❒Ï❐ßÐÛ ✃❐➚ÑÑ❰➶
❘❊❆❉
➮
❙❍❖❲
ñïèñêîâ✱ äëÿ êîòîðûõ äîïóñòèì òîëüêî âèä â êâàäðàòíûõ ñêîáêàõ
✶✾✶
❬✳ ✳ ✳ ❪✳
Ñì✳ ãëàâó ✽
äëÿ ïîëó÷åíèÿ èñ÷åðïûâàþùèõ ïîäðîáíîñòåé✳ Ðåçóëüòàò
s❤♦✇
ïðåäñòàâëÿåò ñîáîé ñèíòàêñè÷åñêè ïðàâèëüíîå âûðàæåíèå ❍❛s❦❡❧❧✱
ñîäåðæàùåå òîëüêî êîíñòàíòû✱ ñ ó÷åòîì íàõîäÿùèõñÿ â ñèëå ✐♥❢✐①✲îáúÿâëåíèé â ìåñòå✱ ãäå îáúÿâëåí òèï✳ ❰í ñîäåðæèò òîëüêî èìåíà êîíñòðóêòîðîâ✱ îïðåäåëåííûõ â òèïå äàííûõ✱ êðóãëûå ñêîáêè è ïðîáåëû✳ ✃îãäà èñïîëüçóþòñÿ èìåíîâàííûå ïîëÿ êîíñòðóêòîðà✱ òàêæå èñïîëüçóþòñÿ ôèãóðíûå ñêîáêè✱ çàïÿòûå✱ èìåíà ïîëåé è çíàêè ðàâåíñòâà✳ ✃ðóãëûå ñêîáêè äîáàâëÿþòñÿ òîëüêî òàì✱ ãäå ýòî íåîáõîäèìî✱
àññîöèàòèâíîñòü✳
èãíîðèðóÿ
s❤♦✇ ìîæåò r❡❛❞✱ åñëè âñå òèïû êîìïîíåíò ìîãóò áûòü ïðî÷èòàíû✳ ✭Ýòî
❮èêàêèå ðàçðûâû ñòðîê íå äîáàâëÿþòñÿ✳ Ðåçóëüòàò
áûòü ïðî÷èòàí ñ ïîìîùüþ
âûïîëíÿåòñÿ äëÿ ýêçåìïëÿðîâ✱ îïðåäåëåííûõ â Pr❡❧✉❞❡✱ íî ìîæåò íå âûïîëíÿòüñÿ äëÿ îïðåäåëÿåìûõ ïîëüçîâàòåëåì ýêçåìïëÿðîâ✳✮ Ïðîèçâîäíûå ýêçåìïëÿðû êëàññà
❘❡❛❞
äåëàþò ñëåäóþùèå ïðåäïîëîæåíèÿ✱ êîòîðûì
ïîä÷èíÿþòñÿ ïðîèçâîäíûå ýêçåìïëÿðû êëàññà
•
❙❤♦✇✿
➴ñëè êîíñòðóêòîð îïðåäåëåí êàê èíôèêñíûé îïåðàòîð✱ òî âûâåäåííûé ýêçåìïëÿð êëàññà
❘❡❛❞
áóäåò ðàçáèðàòü òîëüêî èíôèêñíûå ïðèìåíåíèÿ êîíñòðóêòîðà ✭íå
ïðåôèêñíóþ ôîðìó✮✳
•
➚ññîöèàòèâíîñòü íå èñïîëüçóåòñÿ äëÿ òîãî✱ ÷òîáû óìåíüøèòü ïîÿâëåíèå êðóãëûõ ñêîáîê✱ õîòÿ ïðèîðèòåò ìîæåò áûòü✳ ❮àïðèìåð✱ ñ ó÷åòîì
✐♥❢✐①r ✹ ✿✩ ❞❛t❛ ❚ ❂ ■♥t ✿✩ ❚
⑤ ◆❚
ïîëó÷èì✿
✕ s❤♦✇ ✭✶ ✿✩ ✷ ✿✩ ◆❚✮ ïîðîäèò ñòðîêó ✧✶ ✿✩ ✭✷ ✿✩ ◆❚✮✧✳ ✕ r❡❛❞ ✧✶ ✿✩ ✭✷ ✿✩ ◆❚✮✧ çàâåðøèòñÿ óñïåøíî ñ î÷åâèäíûì ðåçóëüòàòîì✳ ✕ r❡❛❞ ✧✶ ✿✩ ✷ ✿✩ ◆❚✧ çàâåðøèòñÿ íåóñïåøíî✳ •
➴ñëè êîíñòðóêòîð îïðåäåëåí ñ èñïîëüçîâàíèåì ñèíòàêñèñà çàïèñåé✱ âûâåäåííûé ýêçåìïëÿð
❘❡❛❞ áóäåò âûïîëíÿòü ðàçáîð òîëüêî ôîðì ñèíòàêñèñà çàïèñåé✱ è áîëåå
òîãî✱ ïîëÿ äîëæíû áûòü çàäàíû â òîì æå ïîðÿäêå✱ ÷òî è â èñõîäíîì îáúÿâëåíèè✳
•
Ïðîèçâîäíûé ýêçåìïëÿð
❘❡❛❞ äîïóñêàåò
ïðîèçâîëüíûå ïðîáåëüíûå ñèìâîëû ❍❛s✲
❦❡❧❧ ìåæäó òîêåíàìè âõîäíîé ñòðîêè✳ ➘îïîëíèòåëüíûå êðóãëûå ñêîáêè òàêæå ðàçðåøåíû✳
Ïðîèçâîäíûå
ýêçåìïëÿðû
❘❡❛❞
è
❙❤♦✇
ìîãóò
íå
ïîäõîäèòü
äëÿ
íåêîòîðûõ
èñïîëüçîâàíèé✳ Ñðåäè òàêèõ ïðîáëåì åñòü ñëåäóþùèå✿
•
✃ðóãîâûå ñòðóêòóðû íå ìîãóò áûòü íàïå÷àòàíû èëè ñ÷èòàíû ñ ïîìîùüþ ýòèõ ýêçåìïëÿðîâ✳
✶✾✷
➹❐➚➶➚ ✶✵✳
• • •
ÑÏ➴Ö➮Ô➮✃➚Ö➮ß ÏÐ❰➮➬➶❰➘❮ÛÕ Ý✃➬➴❒Ï❐ßÐ❰➶
Ïðè ðàñïå÷àòûâàíèè ñòðóêòóð òåðÿåòñÿ èõ îáùàÿ îñíîâà❀ íàïå÷àòàííîå ïðåäñòàâëåíèå îáúåêòà ìîæåò îêàçàòüñÿ íàìíîãî áîëüøå✱ ÷åì ýòî íåîáõîäèìî✳ ❒åòîäû ðàçáîðà✱ èñïîëüçóåìûå ïðè ñ÷èòûâàíèè✱ î÷åíü íåýôôåêòèâíû❀ ñ÷èòûâàíèå áîëüøîé ñòðóêòóðû ìîæåò îêàçàòüñÿ âåñüìà ìåäëåííûì✳ ❮åò íèêàêîãî ïîëüçîâàòåëüñêîãî êîíòðîëÿ íàä ðàñïå÷àòûâàíèåì òèïîâ✱ îïðåäåëåííûõ â Pr❡❧✉❞❡✳ ❮àïðèìåð✱ íåò íèêàêîãî ñïîñîáà èçìåíèòü ôîðìàòèðîâàíèå ÷èñåë ñ ïëàâàþùåé òî÷êîé✳
✶✵✳✺
Ïðèìåð
➶ êà÷åñòâå çàêîí÷åííîãî ïðèìåðà ðàññìîòðèì òèï äàííûõ äåðåâî✿ ❞❛t❛ ❚r❡❡ ❛ ❂ ▲❡❛❢ ❛ ⑤ ❚r❡❡ ❛ ✿❫✿ ❚r❡❡ ❛ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮
➚âòîìàòè÷åñêîå âûâåäåíèå îáúÿâëåíèé ýêçåìïëÿðîâ äëÿ ❇♦✉♥❞❡❞ è ❊♥✉♠ íåâîçìîæíû✱ ïîñêîëüêó ❚r❡❡ íå ÿâëÿåòñÿ ïåðå÷èñëåíèåì è íå ÿâëÿåòñÿ òèïîì äàííûõ ñ îäíèì êîíñòðóêòîðîì✳ Ïîëíûå îáúÿâëåíèÿ ýêçåìïëÿðîâ äëÿ ❚r❡❡ ïðèâåäåíû íà ðèñ✳ ✶✵✳✶✳ ❰áðàòèòå âíèìàíèå íà íåÿâíîå èñïîëüçîâàíèå çàäàííûõ ïî óìîë÷àíèþ îïðåäåëåíèé ìåòîäîâ êëàññîâ ✖ íàïðèìåð✱ òîëüêî ❁❂ îïðåäåëåí äëÿ ❖r❞✱ òîãäà êàê äðóãèå ìåòîäû êëàññà ✭❁✱ ❃✱ ❃❂✱ ♠❛① è ♠✐♥✮✱ îïðåäåëåííûå ïî óìîë÷àíèþ✱ çàäàíû â îáúÿâëåíèè êëàññà✱ ïðèâåäåííîì íà ðèñ✳ ✻✳✶ ✭ñòð✳ ✶✶✷✮✳
✶✵✳✺✳
ÏÐ➮❒➴Ð
✐♥❢✐①r ✺ ✿❫✿ ❞❛t❛ ❚r❡❡ ❛ ❂
✶✾✸
▲❡❛❢ ❛ ⑤
❚r❡❡ ❛ ✿❫✿ ❚r❡❡ ❛
✐♥st❛♥❝❡ ✭❊q ❛✮ ❂❃ ❊q ✭❚r❡❡ ▲❡❛❢ ♠ ❂❂ ▲❡❛❢ ♥ ❂ ✉✿❫✿✈ ❂❂ ①✿❫✿② ❂ ❴ ❂❂ ❴ ❂
❛✮ ✇❤❡r❡ ♠❂❂♥ ✉❂❂① ✫✫ ✈❂❂② ❋❛❧s❡
✐♥st❛♥❝❡ ✭❖r❞ ❛✮ ❂❃ ❖r❞ ✭❚r❡❡ ❛✮ ✇❤❡r❡ ▲❡❛❢ ♠ ❁❂ ▲❡❛❢ ♥ ❂ ♠❁❂♥ ▲❡❛❢ ♠ ❁❂ ①✿❫✿② ❂ ❚r✉❡ ✉✿❫✿✈ ❁❂ ▲❡❛❢ ♥ ❂ ❋❛❧s❡ ✉✿❫✿✈ ❁❂ ①✿❫✿② ❂ ✉❁① ⑤⑤ ✉❂❂① ✫✫ ✈❁❂② ✐♥st❛♥❝❡ ✭❙❤♦✇ ❛✮ ❂❃ ❙❤♦✇ ✭❚r❡❡ ❛✮ ✇❤❡r❡ s❤♦✇sPr❡❝ ❞ ✭▲❡❛❢ ♠✮ ❂ s❤♦✇P❛r❡♥ ✭❞ ❃ ❛♣♣❴♣r❡❝✮ s❤♦✇❙tr ✇❤❡r❡ s❤♦✇❙tr ❂ s❤♦✇❙tr✐♥❣ ✧❐èñò ✧ ✳ s❤♦✇sPr❡❝ ✭❛♣♣❴♣r❡❝✰✶✮ ♠ s❤♦✇sPr❡❝ ❞ ✭✉ ✿❫✿ ✈✮ ❂ s❤♦✇P❛r❡♥ ✭❞ ❃ ✉♣❴♣r❡❝✮ s❤♦✇❙tr ✇❤❡r❡ s❤♦✇❙tr ❂ s❤♦✇sPr❡❝ ✭✉♣❴♣r❡❝✰✶✮ ✉ ✳ s❤♦✇❙tr✐♥❣ ✧ ✿❫✿ ✧ ✳ s❤♦✇sPr❡❝ ✭✉♣❴♣r❡❝✰✶✮ ✈ ✲✲ ❰áðàòèòå âíèìàíèå✿ ïðàâîàññîöèàòèâíîñòü ✿❫✿ èãíîðèðóåòñÿ ✐♥st❛♥❝❡ ✭❘❡❛❞ ❛✮ ❂❃ ❘❡❛❞ ✭❚r❡❡ ❛✮ ✇❤❡r❡ r❡❛❞sPr❡❝ ❞ r ❂
r❡❛❞P❛r❡♥ ✭❞ ❃ ✉♣❴♣r❡❝✮ ✭❭r ✲❃ ❬✭✉✿❫✿✈✱✇✮ ⑤ ✭✉✱s✮ ❁✲ r❡❛❞sPr❡❝ ✭✉♣❴♣r❡❝✰✶✮ r✱ ✭✧✿❫✿✧✱t✮ ❁✲ ❧❡① s✱ ✭✈✱✇✮ ❁✲ r❡❛❞sPr❡❝ ✭✉♣❴♣r❡❝✰✶✮ t❪✮ r
✰✰ r❡❛❞P❛r❡♥ ✭❞ ❃ ❛♣♣❴♣r❡❝✮ ✭❭r ✲❃ ❬✭▲❡❛❢ ♠✱t✮ ⑤ ✭✧❐èñò✧✱s✮ ❁✲ ❧❡① r✱ ✭♠✱t✮ ❁✲ r❡❛❞sPr❡❝ ✭❛♣♣❴♣r❡❝✰✶✮ s❪✮ r ✉♣❴♣r❡❝ ❂ ✺ ❛♣♣❴♣r❡❝ ❂ ✶✵
✲✲ Ïðèîðèòåò ✿❫✿ ✲✲ Ïðèìåíåíèå èìååò ïðèîðèòåò íà åäèíèöó áîëüøå ÷åì ✲✲ íàèáîëåå ñèëüíî ñâÿçàííûé îïåðàòîð
Ðèñ✳ ✶✵✳✶✿ Ïðèìåð ïðîèçâîäíûõ ýêçåìïëÿðîâ
✶✾✹
➹❐➚➶➚ ✶✵✳
ÑÏ➴Ö➮Ô➮✃➚Ö➮ß ÏÐ❰➮➬➶❰➘❮ÛÕ Ý✃➬➴❒Ï❐ßÐ❰➶
➹ëàâà ✶✶ Óêàçàíèÿ êîìïèëÿòîðó ✭ïñåâäîêîììåíòàðèè✮ ðåàëèçàöèè êîìïèëÿòîðà ïîääåðæèâàþò óêàçàíèÿ êîìïèëÿòîðó ✖ ïñåâäîêîììåíòàðèè✱ êîòîðûå èñïîëüçóþòñÿ✱ ÷òîáû ïåðåäàòü äîïîëíèòåëüíûå óêàçàíèÿ ❮åêîòîðûå èëè
ïîäñêàçêè
êîìïèëÿòîðó✱
íî
íå
ÿâëÿþòñÿ
÷àñòüþ
ñâîéñòâà
ÿçûêà
❍❛s❦❡❧❧
è íå ìåíÿþò ñåìàíòèêó ïðîãðàììû✳ Ýòà ãëàâà ðåçþìèðóåò ýòó ñóùåñòâóþùóþ ïðàêòèêó✳ ❮å òðåáóåòñÿ✱ ÷òîáû ðåàëèçàöèÿ ñîáëþäàëà ëþáîé ïñåâäîêîììåíòàðèé✱ íî ïñåâäîêîììåíòàðèé äîëæåí èãíîðèðîâàòüñÿ✱ åñëè ðåàëèçàöèÿ íå ãîòîâà åãî îáðàáîòàòü✳ Ñ ëåêñè÷åñêîé òî÷êè çðåíèÿ✱ ïñåâäîêîììåíòàðèè âûãëÿäÿò êàê êîììåíòàðèè✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî çàêëþ÷àþòñÿ â
✶✶✳✶
decl decl
④✲★ ★✲⑥✳
➶ñòðàèâàíèå
→ →
④✲★ ■◆▲■◆❊ qvars ★✲⑥ ④✲★ ◆❖■◆▲■◆❊ qvars ★✲⑥
Ïåðåâîä✿ îáúÿâëåíèå → ④✲★ ■◆▲■◆❊ ñïèñîê✲êâàëèôèöèðîâàííûõ✲ïåðåìåííûõ ★✲⑥ îáúÿâëåíèå → ④✲★ ◆❖■◆▲■◆❊ ñïèñîê✲êâàëèôèöèðîâàííûõ✲ïåðåìåííûõ ★✲⑥ Ïñåâäîêîììåíòàðèé
■◆▲■◆❊
óêàçûâàåò
êîìïèëÿòîðó
ãåíåðèðîâàòü
óêàçàííûå
ïåðåìåííûå íà ìåñòå èõ èñïîëüçîâàíèÿ✳ ✃îìïèëÿòîðû áóäóò ÷àùå àâòîìàòè÷åñêè ãåíåðèðîâàòü ✭âñòðàèâàòü✮ ïðîñòûå âûðàæåíèÿ✳ Ýòî ìîæíî ïðåäîòâðàòèòü ñ ïîìîùüþ ïñåâäîêîììåíòàðèÿ
◆❖■◆▲■◆❊✳
✶✾✺
➹❐➚➶➚ ✶✶✳ Ó✃➚➬➚❮➮ß ✃❰❒Ï➮❐ßÒ❰ÐÓ ✭ÏÑ➴➶➘❰✃❰❒❒➴❮Ò➚Ð➮➮✮
✶✾✻
✶✶✳✷
Ñïåöèàëèçàöèÿ
→ →
decl spec
④✲★ ❙P❊❈■❆▲■❩❊ spec1 ✱ . . . ✱ speck ★✲⑥ vars :: type
(k ≥ 1 )
Ïåðåâîä✿
→ ④✲★ ❙P❊❈■❆▲■❩❊ (k ≥ 1 ) ñïåöèôèêàòîð →
îáúÿâëåíèå
ñïåöèôèêàòîð1
ñïèñîê✲ïåðåìåííûõ
Ñïåöèàëèçàöèÿ
::
✱ ... ✱
ñïåöèôèêàòîðk
★✲⑥
òèï
èñïîëüçóåòñÿ✱
÷òîáû
èçáåæàòü
íåýôôåêòèâíîñòè✱
ñâÿçàííîé
ñ
äèñïåò÷èðîâàíèåì ïåðåãðóæåííûõ ôóíêöèé✳ ❮àïðèìåð✱
❢❛❝t♦r✐❛❧ ✿✿ ◆✉♠ ❛ ❂❃ ❛ ✲❃ ❛ ❢❛❝t♦r✐❛❧ ✵ ❂ ✵ ❢❛❝t♦r✐❛❧ ♥ ❂ ♥ ✯ ❢❛❝t♦r✐❛❧ ✭♥✲✶✮ ④✲★ ❙P❊❈■❆▲■❩❊ ❢❛❝t♦r✐❛❧ ✿✿ ■♥t ✲❃ ■♥t✱ ❢❛❝t♦r✐❛❧ ✿✿ ■♥t❡❣❡r ✲❃ ■♥t❡❣❡r ★✲⑥ ïðè îáðàùåíèÿõ ê
■♥t
èëè
■♥t❡❣❡r✱
❢❛❝t♦r✐❛❧
êîìïèëÿòîð ìîæåò îáíàðóæèòü✱ ÷òî ïàðàìåòð èìååò òèï
íî îí áóäåò èñïîëüçîâàòü ñïåöèàëèçèðîâàííóþ âåðñèþ
êîòîðàÿ íå çàòðàãèâàåò ïåðåãðóæåííûå ÷èñëîâûå îïåðàöèè✳
❢❛❝t♦r✐❛❧✱
×àñòü ■■
➪èáëèîòåêè ❍❛s❦❡❧❧ ✾✽
✶✾✼
➹ëàâà ✶✷
Ðàöèîíàëüíûå ÷èñëà ♠♦❞✉❧❡ ❘❛t✐♦ ✭ ❘❛t✐♦✱ ❘❛t✐♦♥❛❧✱ ✭✪✮✱ ♥✉♠❡r❛t♦r✱ ❞❡♥♦♠✐♥❛t♦r✱ ❛♣♣r♦①❘❛t✐♦♥❛❧ ✮ ✇❤❡r❡ ✐♥❢✐①❧ ✼ ✪ ❞❛t❛ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ t②♣❡ ❘❛t✐♦♥❛❧ ❂ ✭✪✮ ✿✿ ♥✉♠❡r❛t♦r✱ ❞❡♥♦♠✐♥❛t♦r ✿✿ ❛♣♣r♦①❘❛t✐♦♥❛❧ ✿✿ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ✐♥st❛♥❝❡ ✭❘❡❛❞ ❛✱■♥t❡❣r❛❧ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃
❘❛t✐♦ ❛ ❂ ✳✳✳ ❘❛t✐♦ ■♥t❡❣❡r ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❘❛t✐♦ ❛ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❛t✐♦ ❛ ✲❃ ❛ ✭❘❡❛❧❋r❛❝ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❘❛t✐♦♥❛❧ ❊q ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❖r❞ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ◆✉♠ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❘❡❛❧ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❋r❛❝t✐♦♥❛❧ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❘❡❛❧❋r❛❝ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❊♥✉♠ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❛✮ ❂❃ ❘❡❛❞ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳ ❙❤♦✇ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✳✳✳
■♥t❡❣r❛❧ t åñòü òèï ❘❛t✐♦ t ðàöèîíàëüíûõ ïàð ñ êîìïîíåíòàìè òèïà ❘❛t✐♦♥❛❧ ÿâëÿåòñÿ ñèíîíèìîì äëÿ ❘❛t✐♦ ■♥t❡❣❡r✳
➘ëÿ êàæäîãî òèïà
t✳
➮ìÿ òèïà
❘❛t✐♦ ÿâëÿåòñÿ ýêçåìïëÿðîì êëàññîâ ❊q✱ ❖r❞✱ ◆✉♠✱ ❘❡❛❧✱ ❋r❛❝t✐♦♥❛❧✱ ❘❡❛❧❋r❛❝✱ ❊♥✉♠✱ ❘❡❛❞ è ❙❤♦✇✳ ➶ êàæäîì ñëó÷àå ýêçåìïëÿð äëÿ ❘❛t✐♦ t ïðîñòî ✏ïîâûøàåò✑ ñîîòâåòñòâóþùèå îïåðàöèè íàä t✳ ➴ñëè t ÿâëÿåòñÿ îãðàíè÷åííûì òèïîì✱ ðåçóëüòàòû ìîãóò áûòü íåïðåäñêàçóåìû❀ íàïðèìåð✱ ❘❛t✐♦ ■♥t ìîæåò âûçâàòü ïåðåïîëíåíèå öåëîãî ÷èñëà äàæå äëÿ íåáîëüøèõ ïî àáñîëþòíîé âåëè÷èíå ðàöèîíàëüíûõ ÷èñåë✳ ❰ïåðàòîð
✭✪✮
ñîñòàâëÿåò îòíîøåíèå äâóõ öåëûõ ÷èñåë✱ ñîêðàùàÿ äðîáü äî ÷ëåíîâ
áåç îáùåãî äåëèòåëÿ è òàêèõ✱ ÷òî çíàìåíàòåëü ÿâëÿåòñÿ ïîëîæèòåëüíûì✳ Ôóíêöèè
♥✉♠❡r❛t♦r è ❞❡♥♦♠✐♥❛t♦r èçâëåêàþò êîìïîíåíòû îòíîøåíèÿ ✭ñîîòâåòñòâåííî ÷èñëèòåëü ✶✾✾
✷✵✵
➹❐➚➶➚ ✶✷✳
Ð➚Ö➮❰❮➚❐Ü❮Û➴ ×➮Ñ❐➚
è çíàìåíàòåëü äðîáè✮❀ ýòè êîìïîíåíòû íàõîäÿòñÿ â ïðèâåäåííîì âèäå ñ ïîëîæèòåëüíûì
❘❛t✐♦ ÿâëÿåòñÿ àáñòðàêòíûì ✶✷ ✪ ✭✲✽✮ ñîêðàùàåòñÿ äî ✭✲✸✮✴✷✳
çíàìåíàòåëåì✳ ✸✴✷✱ à
òèïîì✳ ❮àïðèìåð✱
✶✷ ✪ ✽
ñîêðàùàåòñÿ äî
❛♣♣r♦①❘❛t✐♦♥❛❧✱ áóäó÷è ïðèìåíåííîé ê äâóì äåéñòâèòåëüíûì äðîáíûì è ❡♣s✐❧♦♥✱ âîçâðàùàåò ïðîñòåéøåå ðàöèîíàëüíîå ÷èñëî â ïðåäåëàõ îòêðûòîãî èíòåðâàëà (① − ❡♣s✐❧♦♥, ① + ❡♣s✐❧♦♥)✳ ➹îâîðÿò✱ ÷òî ðàöèîíàëüíîå ÷èñëî n/d â ïðèâåäåííîì âèäå ÿâëÿåòñÿ áîëåå ïðîñòûì✱ ÷åì äðóãîå ÷èñëî n ′ /d ′ ✱ åñëè |n| ≤ |n ′ | è d ≤ d ′ ✳ ❰áðàòèòå âíèìàíèå✱ ÷òî ìîæíî äîêàçàòü✱ ÷òî ëþáîé äåéñòâèòåëüíûé èíòåðâàë Ôóíêöèÿ
÷èñëàì
①
ñîäåðæèò åäèíñòâåííîå ïðîñòåéøåå ðàöèîíàëüíîå ÷èñëî✳
✶✷✳✶✳
➪➮➪❐➮❰Ò➴✃➚
✶✷✳✶
❘❆❚■❖
➪èáëèîòåêà
✷✵✶
❘❛t✐♦
✲✲ Ñòàíäàðòíûå ôóíêöèè íàä ðàöèîíàëüíûìè ÷èñëàìè ♠♦❞✉❧❡ ❘❛t✐♦ ✭ ❘❛t✐♦✱ ❘❛t✐♦♥❛❧✱ ✭✪✮✱ ♥✉♠❡r❛t♦r✱ ❞❡♥♦♠✐♥❛t♦r✱ ❛♣♣r♦①❘❛t✐♦♥❛❧ ✮ ✇❤❡r❡ ✐♥❢✐①❧ ✼
✪
r❛tPr❡❝ ❂ ✼ ✿✿ ■♥t ❞❛t❛ t②♣❡
✭■♥t❡❣r❛❧ ❛✮ ❘❛t✐♦♥❛❧
✭✪✮ ♥✉♠❡r❛t♦r✱ ❞❡♥♦♠✐♥❛t♦r ❛♣♣r♦①❘❛t✐♦♥❛❧
❂❃ ❘❛t✐♦ ❛ ❂ ✦❛ ✿✪ ✦❛ ❂ ❘❛t✐♦ ■♥t❡❣❡r
❞❡r✐✈✐♥❣ ✭❊q✮
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❘❛t✐♦ ❛ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❛t✐♦ ❛ ✲❃ ❛ ✿✿ ✭❘❡❛❧❋r❛❝ ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❘❛t✐♦♥❛❧
✲✲ ✧r❡❞✉❝❡✧ ✲✲✲ ýòî âñïîìîãàòåëüíàÿ ôóíêöèÿ✱ êîòîðàÿ èñïîëüçóåòñÿ òîëüêî â ýòîì ✲✲ ìîäóëå✳ ❰íà íîðìèðóåò îòíîøåíèå ïóòåì äåëåíèÿ ÷èñëèòåëÿ è çíàìåíàòåëÿ ✲✲ íà èõ íàèáîëüøèé îáùèé äåëèòåëü✳ ✲✲ ✲✲ ❮àïðèìåð✱ ✶✷ ❵r❡❞✉❝❡❵ ✽ ❂❂ ✸ ✿✪ ✷ ✲✲ ✶✷ ❵r❡❞✉❝❡❵ ✭✲✽✮ ❂❂ ✸ ✿✪ ✭✲✷✮ r❡❞✉❝❡ ❴ ✵ ❂ ❡rr♦r ✧❘❛t✐♦✳✪ ✿ íóëåâîé çíàìåíàòåëü✧ r❡❞✉❝❡ ① ② ❂ ✭① ❵q✉♦t❵ ❞✮ ✿✪ ✭② ❵q✉♦t❵ ❞✮ ✇❤❡r❡ ❞ ❂ ❣❝❞ ① ② ① ✪ ②
❂
r❡❞✉❝❡ ✭① ✯ s✐❣♥✉♠ ②✮ ✭❛❜s ②✮
♥✉♠❡r❛t♦r ✭① ✿✪ ❴✮
❂
①
❞❡♥♦♠✐♥❛t♦r ✭❴ ✿✪ ②✮
❂
②
✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❖r❞ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✭①✿✪②✮ ❁❂ ✭①✬✿✪②✬✮ ❂ ① ✯ ②✬ ❁❂ ①✬ ✯ ② ✭①✿✪②✮ ❁ ✭①✬✿✪②✬✮ ❂ ① ✯ ②✬ ❁ ①✬ ✯ ② ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ✭①✿✪②✮ ✰ ✭①✬✿✪②✬✮ ✭①✿✪②✮ ✯ ✭①✬✿✪②✬✮ ♥❡❣❛t❡ ✭①✿✪②✮ ❛❜s ✭①✿✪②✮ s✐❣♥✉♠ ✭①✿✪②✮ ❢r♦♠■♥t❡❣❡r ①
❂❃ ❂ ❂ ❂ ❂ ❂ ❂
◆✉♠ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ r❡❞✉❝❡ ✭①✯②✬ ✰ ①✬✯②✮ ✭②✯②✬✮ r❡❞✉❝❡ ✭① ✯ ①✬✮ ✭② ✯ ②✬✮ ✭✲①✮ ✿✪ ② ❛❜s ① ✿✪ ② s✐❣♥✉♠ ① ✿✪ ✶ ❢r♦♠■♥t❡❣❡r ① ✿✪ ✶
✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ t♦❘❛t✐♦♥❛❧ ✭①✿✪②✮
❂❃ ❘❡❛❧ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ❂ t♦■♥t❡❣❡r ① ✿✪ t♦■♥t❡❣❡r ②
✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ✭①✿✪②✮ ✴ ✭①✬✿✪②✬✮ r❡❝✐♣ ✭①✿✪②✮ ❢r♦♠❘❛t✐♦♥❛❧ ✭①✿✪②✮
❂❃ ❂ ❂ ❂
❋r❛❝t✐♦♥❛❧ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ✭①✯②✬✮ ✪ ✭②✯①✬✮ ② ✪ ① ❢r♦♠■♥t❡❣❡r ① ✿✪ ❢r♦♠■♥t❡❣❡r ②
✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❧❋r❛❝ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ♣r♦♣❡r❋r❛❝t✐♦♥ ✭①✿✪②✮ ❂ ✭❢r♦♠■♥t❡❣r❛❧ q✱ r✿✪②✮ ✇❤❡r❡ ✭q✱r✮ ❂ q✉♦t❘❡♠ ① ②
✷✵✷ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ s✉❝❝ ① ❂ ♣r❡❞ ① ❂ t♦❊♥✉♠ ❂ ❢r♦♠❊♥✉♠ ❂ ❡♥✉♠❋r♦♠ ❂ ❡♥✉♠❋r♦♠❚❤❡♥ ❂ ❡♥✉♠❋r♦♠❚♦ ❂ ❡♥✉♠❋r♦♠❚❤❡♥❚♦ ❂
➹❐➚➶➚ ✶✷✳
❂❃ ❊♥✉♠ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ ①✰✶ ①✲✶ ❢r♦♠■♥t❡❣r❛❧ ❢r♦♠■♥t❡❣❡r ✳ tr✉♥❝❛t❡ ✲✲ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠ ✲✲ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥ ✲✲ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚♦ ✲✲ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥❚♦
Ð➚Ö➮❰❮➚❐Ü❮Û➴ ×➮Ñ❐➚
❒îæåò âûçâàòü ïåðåïîëíåíèå Ýòè ôóíêöèè âèäà ♥✉♠❡r✐❝❊♥✉♠❳❳❳ îïðåäåëåíû â Pr❡❧✉❞❡✳❤s íî íå ýêñïîðòèðóþòñÿ îòòóäà✦
✐♥st❛♥❝❡ ✭❘❡❛❞ ❛✱ ■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❞ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞P❛r❡♥ ✭♣ ❃ r❛tPr❡❝✮ ✭❭r ✲❃ ❬✭①✪②✱✉✮ ⑤ ✭①✱s✮ ❁✲ r❡❛❞sPr❡❝ ✭r❛tPr❡❝✰✶✮ r✱ ✭✧✪✧✱t✮ ❁✲ ❧❡① s✱ ✭②✱✉✮ ❁✲ r❡❛❞sPr❡❝ ✭r❛tPr❡❝✰✶✮ t ❪✮ ✐♥st❛♥❝❡ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❙❤♦✇ ✭❘❛t✐♦ ❛✮ ✇❤❡r❡ s❤♦✇sPr❡❝ ♣ ✭①✿✪②✮ ❂ s❤♦✇P❛r❡♥ ✭♣ ❃ r❛tPr❡❝✮ ✭s❤♦✇sPr❡❝ ✭r❛tPr❡❝✰✶✮ ① ✳ s❤♦✇❙tr✐♥❣ ✧ ✪ ✧ ✳ s❤♦✇sPr❡❝ ✭r❛tPr❡❝✰✶✮ ②✮ ❛♣♣r♦①❘❛t✐♦♥❛❧ ① ❡♣s ❂ s✐♠♣❧❡st ✭①✲❡♣s✮ ✭①✰❡♣s✮ ✇❤❡r❡ s✐♠♣❧❡st ① ② ⑤ ② ❁ ① ❂ s✐♠♣❧❡st ② ① ⑤ ① ❂❂ ② ❂ ①r ⑤ ① ❃ ✵ ❂ s✐♠♣❧❡st✬ ♥ ❞ ♥✬ ❞✬ ⑤ ② ❁ ✵ ❂ ✲ s✐♠♣❧❡st✬ ✭✲♥✬✮ ❞✬ ✭✲♥✮ ❞ ⑤ ♦t❤❡r✇✐s❡ ❂ ✵ ✿✪ ✶ ✇❤❡r❡ ①r❅✭♥✿✪❞✮ ❂ t♦❘❛t✐♦♥❛❧ ① ✭♥✬✿✪❞✬✮ ❂ t♦❘❛t✐♦♥❛❧ ② s✐♠♣❧❡st✬ ♥ ❞ ♥✬ ❞✬ ✲✲ ïðåäïîëàãàåò✱ ÷òî ✵ ❁ ♥✪❞ ❁ ♥✬✪❞✬ ⑤ r ❂❂ ✵ ❂ q ✿✪ ✶ ⑤ q ✴❂ q✬ ❂ ✭q✰✶✮ ✿✪ ✶ ⑤ ♦t❤❡r✇✐s❡ ❂ ✭q✯♥✑✰❞✑✮ ✿✪ ♥✑ ✇❤❡r❡ ✭q✱r✮ ❂ q✉♦t❘❡♠ ♥ ❞ ✭q✬✱r✬✮ ❂ q✉♦t❘❡♠ ♥✬ ❞✬ ✭♥✑✿✪❞✑✮ ❂ s✐♠♣❧❡st✬ ❞✬ r✬ ❞ r
➹ëàâà ✶✸
✃îìïëåêñíûå ÷èñëà ♠♦❞✉❧❡ ❈♦♠♣❧❡① ✭ ❈♦♠♣❧❡①✭✭✿✰✮✮✱ r❡❛❧P❛rt✱ ✐♠❛❣P❛rt✱ ❝♦♥❥✉❣❛t❡✱ ♠❦P♦❧❛r✱ ❝✐s✱ ♣♦❧❛r✱ ♠❛❣♥✐t✉❞❡✱ ♣❤❛s❡ ✮ ✇❤❡r❡ ✐♥❢✐① ❞❛t❛
✻
✿✰
✭❘❡❛❧❋❧♦❛t ❛✮
❂❃ ❈♦♠♣❧❡① ❛ ❂ ✦❛ ✿✰ ✦❛
r❡❛❧P❛rt✱ ✐♠❛❣P❛rt ❝♦♥❥✉❣❛t❡ ♠❦P♦❧❛r ❝✐s ♣♦❧❛r ♠❛❣♥✐t✉❞❡✱ ♣❤❛s❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t
❛✮ ❛✮ ❛✮ ❛✮ ❛✮ ❛✮
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t
❛✮ ❛✮ ❛✮ ❛✮ ❛✮ ❛✮
❂❃ ❂❃ ❂❃ ❂❃ ❂❃ ❂❃
❈♦♠♣❧❡① ❛ ✲❃ ❛ ❈♦♠♣❧❡① ❛ ✲❃ ❈♦♠♣❧❡① ❛ ❛ ✲❃ ❛ ✲❃ ❈♦♠♣❧❡① ❛ ❛ ✲❃ ❈♦♠♣❧❡① ❛ ❈♦♠♣❧❡① ❛ ✲❃ ✭❛✱❛✮ ❈♦♠♣❧❡① ❛ ✲❃ ❛
❂❃ ❂❃ ❂❃ ❂❃ ❂❃ ❂❃
❊q ❘❡❛❞ ❙❤♦✇ ◆✉♠ ❋r❛❝t✐♦♥❛❧ ❋❧♦❛t✐♥❣
✭❈♦♠♣❧❡① ✭❈♦♠♣❧❡① ✭❈♦♠♣❧❡① ✭❈♦♠♣❧❡① ✭❈♦♠♣❧❡① ✭❈♦♠♣❧❡①
❛✮ ❛✮ ❛✮ ❛✮ ❛✮ ❛✮
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✃îìïëåêñíûå ÷èñëà ÿâëÿþòñÿ àëãåáðàè÷åñêèì òèïîì✳ ✃îíñòðóêòîð
✭✿✰✮
îáðàçóåò
êîìïëåêñíîå ÷èñëî èç åãî äåéñòâèòåëüíîé è ìíèìîé ïðÿìîóãîëüíûõ êîìïîíåíò✳ Ýòîò êîíñòðóêòîð ÿâëÿåòñÿ ñòðîãèì✿ åñëè äåéñòâèòåëüíîé èëè ìíèìîé ÷àñòüþ ÷èñëà ÿâëÿåòñÿ
⊥✱
âñå ÷èñëî ÿâëÿåòñÿ
⊥✳
✃îìïëåêñíîå ÷èñëî ìîæåò áûòü òàêæå îáðàçîâàíî
èç ïîëÿðíûõ êîìïîíåíò âåëè÷èíû è ôàçû ñ ïîìîùüþ ôóíêöèè
❝✐s
ãåíåðèðóåò êîìïëåêñíîå ÷èñëî èç óãëà
êîìïëåêñíîå çíà÷åíèå ñ âåëè÷èíîé Ôóíêöèÿ
1
è
t✳ ôàçîé t
Ñ äðóãîé ñòîðîíû✱ ✭ïî ìîäóëþ
♠❦P♦❧❛r✳ Ôóíêöèÿ ❝✐s t âîçâðàùàåò
2 π ✮✳
♣♦❧❛r ïðèíèìàåò â êà÷åñòâå àðãóìåíòà êîìïëåêñíîå ÷èñëî è âîçâðàùàåò ïàðó
✭âåëè÷èíà✱ ôàçà✮ â êàíîíè÷åñêîé ôîðìå✿ âåëè÷èíà ÿâëÿåòñÿ íåîòðèöàòåëüíîé✱ à ôàçà ✷✵✸
✷✵✹
➹❐➚➶➚ ✶✸✳
✃❰❒Ï❐➴✃Ñ❮Û➴ ×➮Ñ❐➚
íàõîäèòñÿ â äèàïàçîíå (−π, π]❀ åñëè âåëè÷èíà ðàâíà íóëþ✱ òî ôàçà òàêæå ðàâíà íóëþ✳ Ôóíêöèè r❡❛❧P❛rt è ✐♠❛❣P❛rt èçâëåêàþò ïðÿìîóãîëüíûå êîìïîíåíòû êîìïëåêñíîãî ÷èñëà✱ à ôóíêöèè ♠❛❣♥✐t✉❞❡ è ♣❤❛s❡ èçâëåêàþò ïîëÿðíûå êîìïîíåíòû êîìïëåêñíîãî ÷èñëà✳ Ôóíêöèÿ ❝♦♥❥✉❣❛t❡ âû÷èñëÿåò ñîïðÿæåííîå êîìïëåêñíîå ÷èñëî îáû÷íûì ñïîñîáîì✳ ➶åëè÷èíà è çíàê êîìïëåêñíîãî ÷èñëà îïðåäåëåíû ñëåäóþùèì îáðàçîì✿ ❛❜s ③ s✐❣♥✉♠ ✵ s✐❣♥✉♠ ③❅✭①✿✰②✮
❂ ♠❛❣♥✐t✉❞❡ ③ ✿✰ ✵ ❂ ✵ ❂ ①✴r ✿✰ ②✴r ✇❤❡r❡ r ❂ ♠❛❣♥✐t✉❞❡ ③
Òî åñòü ❛❜s z ✖ ýòî ÷èñëî ñ âåëè÷èíîé z✱ íî îðèåíòèðîâàííîå â íàïðàâëåíèè ïîëîæèòåëüíîé äåéñòâèòåëüíîé ïîëóîñè✱ òîãäà êàê s✐❣♥✉♠ z èìååò ôàçó z✱ íî åäèíè÷íóþ âåëè÷èíó✳ ✶✸✳✶
➪èáëèîòåêà
❈♦♠♣❧❡①
♠♦❞✉❧❡ ❈♦♠♣❧❡①✭❈♦♠♣❧❡①✭✭✿✰✮✮✱ r❡❛❧P❛rt✱ ✐♠❛❣P❛rt✱ ❝♦♥❥✉❣❛t❡✱ ♠❦P♦❧❛r✱ ❝✐s✱ ♣♦❧❛r✱ ♠❛❣♥✐t✉❞❡✱ ♣❤❛s❡✮ ✇❤❡r❡ ✐♥❢✐① ❞❛t❛
✻
✿✰
✭❘❡❛❧❋❧♦❛t ❛✮
❂❃ ❈♦♠♣❧❡① ❛ ❂ ✦❛ ✿✰ ✦❛
❞❡r✐✈✐♥❣ ✭❊q✱❘❡❛❞✱❙❤♦✇✮
r❡❛❧P❛rt✱ ✐♠❛❣P❛rt ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❈♦♠♣❧❡① ❛ ✲❃ ❛ r❡❛❧P❛rt ✭①✿✰②✮ ❂ ① ✐♠❛❣P❛rt ✭①✿✰②✮ ❂ ② ❝♦♥❥✉❣❛t❡ ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❈♦♠♣❧❡① ❛ ✲❃ ❈♦♠♣❧❡① ❛ ❝♦♥❥✉❣❛t❡ ✭①✿✰②✮ ❂ ① ✿✰ ✭✲②✮ ♠❦P♦❧❛r ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❛ ✲❃ ❛ ✲❃ ❈♦♠♣❧❡① ❛ ♠❦P♦❧❛r r t❤❡t❛ ❂ r ✯ ❝♦s t❤❡t❛ ✿✰ r ✯ s✐♥ t❤❡t❛ ❝✐s ❝✐s t❤❡t❛
✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❛ ✲❃ ❈♦♠♣❧❡① ❛ ❂ ❝♦s t❤❡t❛ ✿✰ s✐♥ t❤❡t❛
♣♦❧❛r ♣♦❧❛r ③
✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❈♦♠♣❧❡① ❛ ✲❃ ✭❛✱❛✮ ❂ ✭♠❛❣♥✐t✉❞❡ ③✱ ♣❤❛s❡ ③✮
♠❛❣♥✐t✉❞❡ ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❈♦♠♣❧❡① ❛ ✲❃ ❛ ♠❛❣♥✐t✉❞❡ ✭①✿✰②✮ ❂ s❝❛❧❡❋❧♦❛t ❦ ✭sqrt ✭✭s❝❛❧❡❋❧♦❛t ♠❦ ①✮❫✷ ✰ ✭s❝❛❧❡❋❧♦❛t ♠❦ ②✮❫✷✮✮ ✇❤❡r❡ ❦ ❂ ♠❛① ✭❡①♣♦♥❡♥t ①✮ ✭❡①♣♦♥❡♥t ②✮ ♠❦ ❂ ✲ ❦
✶✸✳✶✳
➪➮➪❐➮❰Ò➴✃➚
❈❖▼P▲❊❳
♣❤❛s❡ ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❈♦♠♣❧❡① ❛ ✲❃ ❛ ♣❤❛s❡ ✭✵ ✿✰ ✵✮ ❂ ✵ ♣❤❛s❡ ✭① ✿✰ ②✮ ❂ ❛t❛♥✷ ② ① ✐♥st❛♥❝❡ ✭❘❡❛❧❋❧♦❛t ❛✮ ✭①✿✰②✮ ✰ ✭①✬✿✰②✬✮ ✭①✿✰②✮ ✲ ✭①✬✿✰②✬✮ ✭①✿✰②✮ ✯ ✭①✬✿✰②✬✮ ♥❡❣❛t❡ ✭①✿✰②✮ ❛❜s ③ s✐❣♥✉♠ ✵ s✐❣♥✉♠ ③❅✭①✿✰②✮ ❢r♦♠■♥t❡❣❡r ♥
❂❃ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂
◆✉♠ ✭❈♦♠♣❧❡① ❛✮ ✇❤❡r❡ ✭①✰①✬✮ ✿✰ ✭②✰②✬✮ ✭①✲①✬✮ ✿✰ ✭②✲②✬✮ ✭①✯①✬✲②✯②✬✮ ✿✰ ✭①✯②✬✰②✯①✬✮ ♥❡❣❛t❡ ① ✿✰ ♥❡❣❛t❡ ② ♠❛❣♥✐t✉❞❡ ③ ✿✰ ✵ ✵ ①✴r ✿✰ ②✴r ✇❤❡r❡ r ❂ ♠❛❣♥✐t✉❞❡ ③ ❢r♦♠■♥t❡❣❡r ♥ ✿✰ ✵
✐♥st❛♥❝❡ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❋r❛❝t✐♦♥❛❧ ✭❈♦♠♣❧❡① ❛✮ ✇❤❡r❡ ✭①✿✰②✮ ✴ ✭①✬✿✰②✬✮ ❂ ✭①✯①✑✰②✯②✑✮ ✴ ❞ ✿✰ ✭②✯①✑✲①✯②✑✮ ✴ ❞ ✇❤❡r❡ ①✑ ❂ s❝❛❧❡❋❧♦❛t ❦ ①✬ ②✑ ❂ s❝❛❧❡❋❧♦❛t ❦ ②✬ ❦ ❂ ✲ ♠❛① ✭❡①♣♦♥❡♥t ①✬✮ ✭❡①♣♦♥❡♥t ②✬✮ ❞ ❂ ①✬✯①✑ ✰ ②✬✯②✑ ❢r♦♠❘❛t✐♦♥❛❧ ❛
❂
❢r♦♠❘❛t✐♦♥❛❧ ❛ ✿✰ ✵
✷✵✺
✷✵✻
➹❐➚➶➚ ✶✸✳
✃❰❒Ï❐➴✃Ñ❮Û➴ ×➮Ñ❐➚
✐♥st❛♥❝❡ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❋❧♦❛t✐♥❣ ✭❈♦♠♣❧❡① ❛✮ ✇❤❡r❡ ♣✐ ❂ ♣✐ ✿✰ ✵ ❡①♣ ✭①✿✰②✮ ❂ ❡①♣① ✯ ❝♦s ② ✿✰ ❡①♣① ✯ s✐♥ ② ✇❤❡r❡ ❡①♣① ❂ ❡①♣ ① ❧♦❣ ③ ❂ ❧♦❣ ✭♠❛❣♥✐t✉❞❡ ③✮ ✿✰ ♣❤❛s❡ ③ sqrt ✵ ❂ ✵ sqrt ③❅✭①✿✰②✮ ❂ ✉ ✿✰ ✭✐❢ ② ❁ ✵ t❤❡♥ ✲✈ ❡❧s❡ ✈✮ ✇❤❡r❡ ✭✉✱✈✮ ❂ ✐❢ ① ❁ ✵ t❤❡♥ ✭✈✬✱✉✬✮ ❡❧s❡ ✭✉✬✱✈✬✮ ✈✬ ❂ ❛❜s ② ✴ ✭✉✬✯✷✮ ✉✬ ❂ sqrt ✭✭♠❛❣♥✐t✉❞❡ ③ ✰ ❛❜s ①✮ ✴ ✷✮ s✐♥ ✭①✿✰②✮ ❝♦s ✭①✿✰②✮ t❛♥ ✭①✿✰②✮
❂ ❂ ❂
s✐♥❤ ✭①✿✰②✮ ❝♦s❤ ✭①✿✰②✮ t❛♥❤ ✭①✿✰②✮
❂ ❝♦s ② ✯ s✐♥❤ ① ✿✰ s✐♥ ② ✯ ❝♦s❤ ① ❂ ❝♦s ② ✯ ❝♦s❤ ① ✿✰ s✐♥ ② ✯ s✐♥❤ ① ❂ ✭❝♦s②✯s✐♥❤①✿✰s✐♥②✯❝♦s❤①✮✴✭❝♦s②✯❝♦s❤①✿✰s✐♥②✯s✐♥❤①✮ ✇❤❡r❡ s✐♥② ❂ s✐♥ ② ❝♦s② ❂ ❝♦s ② s✐♥❤① ❂ s✐♥❤ ① ❝♦s❤① ❂ ❝♦s❤ ①
❛s✐♥ ③❅✭①✿✰②✮
❂
❛❝♦s ③❅✭①✿✰②✮ ❛t❛♥ ③❅✭①✿✰②✮ ❛s✐♥❤ ③ ❛❝♦s❤ ③ ❛t❛♥❤ ③
s✐♥ ① ✯ ❝♦s❤ ② ✿✰ ❝♦s ① ✯ s✐♥❤ ② ❝♦s ① ✯ ❝♦s❤ ② ✿✰ ✭✲ s✐♥ ① ✯ s✐♥❤ ②✮ ✭s✐♥①✯❝♦s❤②✿✰❝♦s①✯s✐♥❤②✮✴✭❝♦s①✯❝♦s❤②✿✰✭✲s✐♥①✯s✐♥❤②✮✮ ✇❤❡r❡ s✐♥① ❂ s✐♥ ① ❝♦s① ❂ ❝♦s ① s✐♥❤② ❂ s✐♥❤ ② ❝♦s❤② ❂ ❝♦s❤ ②
②✬✿✰✭✲①✬✮ ✇❤❡r❡ ✭①✬✿✰②✬✮ ❂ ❧♦❣ ✭✭✭✲②✮✿✰①✮ ✰ sqrt ✭✶ ✲ ③✯③✮✮ ❂ ②✑✿✰✭✲①✑✮ ✇❤❡r❡ ✭①✑✿✰②✑✮ ❂ ❧♦❣ ✭③ ✰ ✭✭✲②✬✮✿✰①✬✮✮ ✭①✬✿✰②✬✮ ❂ sqrt ✭✶ ✲ ③✯③✮ ❂ ②✬✿✰✭✲①✬✮ ✇❤❡r❡ ✭①✬✿✰②✬✮ ❂ ❧♦❣ ✭✭✭✶✲②✮✿✰①✮ ✴ sqrt ✭✶✰③✯③✮✮ ❂ ❂ ❂
❧♦❣ ✭③ ✰ sqrt ✭✶✰③✯③✮✮ ❧♦❣ ✭③ ✰ ✭③✰✶✮ ✯ sqrt ✭✭③✲✶✮✴✭③✰✶✮✮✮ ❧♦❣ ✭✭✶✰③✮ ✴ sqrt ✭✶✲③✯③✮✮
➹ëàâà ✶✹
×èñëîâûå ôóíêöèè ♠♦❞✉❧❡ ◆✉♠❡r✐❝✭❢r♦♠❘❛t✱ s❤♦✇❙✐❣♥❡❞✱ s❤♦✇■♥t❆t❇❛s❡✱ s❤♦✇■♥t✱ s❤♦✇❖❝t✱ s❤♦✇❍❡①✱ r❡❛❞❙✐❣♥❡❞✱ r❡❛❞■♥t✱ r❡❛❞❉❡❝✱ r❡❛❞❖❝t✱ r❡❛❞❍❡①✱ ❢❧♦❛t❚♦❉✐❣✐ts✱ s❤♦✇❊❋❧♦❛t✱ s❤♦✇❋❋❧♦❛t✱ s❤♦✇●❋❧♦❛t✱ s❤♦✇❋❧♦❛t✱ r❡❛❞❋❧♦❛t✱ ❧❡①❉✐❣✐ts✮ ✇❤❡r❡ ❢r♦♠❘❛t
✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❘❛t✐♦♥❛❧ ✲❃ ❛
s❤♦✇❙✐❣♥❡❞ ✿✿ ✭❘❡❛❧ ❛✮ ❂❃ ✭❛ ✲❃ ❙❤♦✇❙✮ ✲❃ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ s❤♦✇■♥t❆t❇❛s❡ ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ✭■♥t ✲❃ ❈❤❛r✮ ✲❃ ❛ ✲❃ ❙❤♦✇❙ s❤♦✇■♥t ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❙❤♦✇❙ s❤♦✇❖❝t ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❙❤♦✇❙ s❤♦✇❍❡① ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❙❤♦✇❙ r❡❛❞❙✐❣♥❡❞ r❡❛❞■♥t r❡❛❞❉❡❝ r❡❛❞❖❝t r❡❛❞❍❡①
✿✿ ✭❘❡❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ✲❃ ❘❡❛❞❙ ❛ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ✭❈❤❛r ✲❃ ❇♦♦❧✮ ✲❃ ✭❈❤❛r ✲❃ ■♥t✮ ✲❃ ❘❡❛❞❙ ❛ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛
s❤♦✇❊❋❧♦❛t s❤♦✇❋❋❧♦❛t s❤♦✇●❋❧♦❛t s❤♦✇❋❧♦❛t
✿✿ ✿✿ ✿✿ ✿✿
❢❧♦❛t❚♦❉✐❣✐ts
✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ■♥t❡❣❡r ✲❃ ❛ ✲❃ ✭❬■♥t❪✱ ■♥t✮
r❡❛❞❋❧♦❛t ❧❡①❉✐❣✐ts
✿✿ ✭❘❡❛❧❋r❛❝ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ✿✿ ❘❡❛❞❙ ❙tr✐♥❣
✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t
❛✮ ❛✮ ❛✮ ❛✮
❂❃ ❂❃ ❂❃ ❂❃
▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ❛ ✲❃ ❙❤♦✇❙
✷✵✼
✷✵✽
➹❐➚➶➚ ✶✹✳
×➮Ñ❐❰➶Û➴ ÔÓ❮✃Ö➮➮
Ýòà áèáëèîòåêà ñîäåðæèò ÷èñëîâûå ôóíêöèè ðàçíûõ ñîðòîâ✱ ìíîãèå èç êîòîðûõ èñïîëüçóþòñÿ â ñòàíäàðòíîì Pr❡❧✉❞❡✳ ➘àëåå✱ íàïîìíèì ñëåäóþùèå îïðåäåëåíèÿ òèïîâ èç Pr❡❧✉❞❡✿ t②♣❡ ❙❤♦✇❙ ❂ ❙tr✐♥❣ ✲❃ ❙tr✐♥❣ t②♣❡ ❘❡❛❞❙ ❂ ❙tr✐♥❣ ✲❃ ❬✭❛✱❙tr✐♥❣✮❪
✶✹✳✶
Ôóíêöèè ïðåîáðàçîâàíèÿ âåëè÷èí â ñòðîêè
• s❤♦✇❙✐❣♥❡❞ ✿✿ ✭❘❡❛❧ ❛✮ ❂❃ ✭❛ ✲❃ ❙❤♦✇❙✮ ✲❃ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ❘❡❛❧ ❛ (s❤♦✇❙✐❣♥❡❞ show prec val ) val show
ïðåîáðàçóåò âîçìîæíî îòðèöàòåëüíîå çíà÷åíèå òèïà â ñòðîêó✳ ➶ âûçîâå ÿâëÿåòñÿ çíà÷åíèåì äëÿ îòîáðàæåíèÿ✱ prec ✖ ïðèîðèòåòîì âíåøíåãî êîíòåêñòà✱ à ✖ ôóíêöèåé✱ êîòîðàÿ ìîæåò îòîáðàçèòü ✭ïðåîáðàçîâàòü â ñòðîêó✮ çíà÷åíèÿ áåç çíàêà✳
• s❤♦✇■♥t❆t❇❛s❡ ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ✭■♥t ✲❃ ❈❤❛r✮ ✲❃ ❛ ✲❃ ❙❤♦✇❙ íåîòðèöàòåëüíîå ■♥t❡❣r❛❧
îòîáðàæàåò ÷èñëî ✱ èñïîëüçóÿ îñíîâàíèå✱ óêàçàííîå â ïåðâîì àðãóìåíòå✱ è ñèìâîëüíîå ïðåäñòàâëåíèå✱ óêàçàííîå âî âòîðîì✳
• s❤♦✇■♥t✱ s❤♦✇❖❝t✱ s❤♦✇❍❡① ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❙❤♦✇❙ íåîòðèöàòåëüíûå ■♥t❡❣r❛❧
îòîáðàæàåò ñîîòâåòñòâåííî✳
÷èñëà
ïî îñíîâàíèþ ✶✵✱ ✽ è ✶✻
• s❤♦✇❋❋❧♦❛t✱ s❤♦✇❊❋❧♦❛t✱ s❤♦✇●❋❧♦❛t ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ❘❡❛❧❋❧♦❛t
Ýòè òðè ôóíêöèè îòîáðàæàþò çíà÷åíèÿ ñî çíàêîì✿ ✕ s❤♦✇❋❋❧♦❛t èñïîëüçóåò ñòàíäàðòíóþ äåñÿòè÷íóþ çàïèñü ✭íàïðèìåð✱ ✷✹✺✵✵✵✱ ✵✳✵✵✶✺✮✳ ✕ s❤♦✇❊❋❧♦❛t èñïîëüçóåò íàó÷íóþ ✭ïîêàçàòåëüíóþ✮ çàïèñü ✭íàïðèìåð✱ ✷✳✹✺❡✷✱ ✶✳✺❡✲✸✮✳ ✕ s❤♦✇●❋❧♦❛t èñïîëüçóåò ñòàíäàðòíóþ äåñÿòè÷íóþ çàïèñü äëÿ àðãóìåíòîâ✱ ÷üå àáñîëþòíîå çíà÷åíèå íàõîäèòñÿ ìåæäó ✵✳✶ è ✾✱✾✾✾✱✾✾✾✱ è íàó÷íóþ çàïèñü èíà÷å✳ ➶ âûçîâå (s❤♦✇❊❋❧♦❛t digs val )✱ åñëè digs ÿâëÿåòñÿ ◆♦t❤✐♥❣✱ çíà÷åíèå îòîáðàæàåòñÿ ñ ïîëíîé òî÷íîñòüþ❀ åñëè digs ÿâëÿåòñÿ ❏✉st d ✱ òî ñàìîå áîëüøåå d öèôð ïîñëå äåñÿòè÷íûé òî÷êè áóäåò îòîáðàæåíî✳ ➶ òî÷íîñòè òî æå ñàìîå êàñàåòñÿ àðãóìåíòà digs äâóõ äðóãèõ ôóíêöèé✳
• ❢❧♦❛t❚♦❉✐❣✐ts
✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ■♥t❡❣❡r ✲❃ ❛ ✲❃ ✭❬■♥t❪✱ ■♥t✮
ïðåîáðàçóåò îñíîâàíèå è çíà÷åíèå â âåëè÷èíó â öèôðàõ ïëþñ ïîêàçàòåëü ñòåïåíè✳ ➪îëåå òî÷íî✱ åñëè ❢❧♦❛t❚♦❉✐❣✐ts b r = ✭❬d1 , d2 ...dn ❪✱ e✮✱
✶✹✳✷✳
✷✵✾
ÔÓ❮✃Ö➮➮ ÏÐ➴❰➪Ð➚➬❰➶➚❮➮ß ÑÒÐ❰✃ ➶ ➘ÐÓ➹➮➴ ➶➴❐➮×➮❮Û
òî âûïîëíÿþòñÿ ñëåäóþùèå ñâîéñòâà✿
✕ ✕ ✕ ✕
✶✹✳✷
r = 0.d1 d2 ..., dn ∗ be n≥0 d1 6= 0
✭êîãäà
n > 0✮
0 ≤ di ≤ b − 1
Ôóíêöèè ïðåîáðàçîâàíèÿ ñòðîê â äðóãèå âåëè÷èíû
• r❡❛❞❙✐❣♥❡❞ ✿✿ ✭❘❡❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ✲❃ ❘❡❛❞❙ ❛ ñ÷èòûâàåò çíà÷åíèå ❘❡❛❧ ñî çíàêîì✱ ó÷èòûâàÿ íàëè÷èå
ôóíêöèè äëÿ ñ÷èòûâàíèÿ
çíà÷åíèé áåç çíàêà✳
• r❡❛❞■♥t ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ✭❈❤❛r✲❃❇♦♦❧✮ ✲❃ ✭❈❤❛r✲❃■♥t✮ ✲❃ ❘❡❛❞❙ ❛ ñ÷èòûâàåò çíà÷åíèå ■♥t❡❣r❛❧ áåç çíàêà ñ ïðîèçâîëüíûì îñíîâàíèåì✳ ➶ âûçîâå (r❡❛❞■♥t base isdig d2i ) base ÿâëÿåòñÿ îñíîâàíèåì✱ isdig ✖ ïðåäèêàòîì✱ ðàçëè÷àþùèì äîïóñòèìûå öèôðû ïî ýòîìó îñíîâàíèþ✱ à d2i ïðåîáðàçóåò ñèìâîë äîïóñòèìîé öèôðû â ■♥t✳ • r❡❛❞❋❧♦❛t ✿✿ ✭❘❡❛❧❋r❛❝ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ñ÷èòûâàåò çíà÷åíèå ❘❡❛❧❋r❛❝ áåç çíàêà✱
èçîáðàæåííîå â äåñÿòè÷íîé íàó÷íîé
çàïèñè✳
• r❡❛❞❉❡❝✱ r❡❛❞❖❝t✱ r❡❛❞❍❡① ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ñ÷èòûâàþò ÷èñëî áåç çíàêà â äåñÿòè÷íîé✱ âîñüìèðè÷íîé è øåñòíàäöàòèðè÷íîé çàïèñè ñîîòâåòñòâåííî✳ ➶ ñëó÷àå øåñòíàäöàòèðè÷íîé çàïèñè äîïóñòèìû áóêâû âåðõíåãî è íèæíåãî ðåãèñòðà✳
• ❧❡①❉✐❣✐ts ✿✿ ❘❡❛❞❙ ❙tr✐♥❣ ✭◆❇✿
r❡❛❞■♥t
✏äâîéñòâåííîé✑
ÿâëÿåòñÿ äëÿ
ñ÷èòûâàåò íåïóñòóþ ñòðîêó äåñÿòè÷íûõ öèôð✳
✏äâîéñòâåííîé✑
s❤♦✇■♥t✳
äëÿ
s❤♦✇■♥t❆t❇❛s❡✱
Ïðîòèâîðå÷èâûå
èìåíà
ýòèõ
à
r❡❛❞❉❡❝
ôóíêöèé
ÿâëÿåòñÿ
ñëîæèëèñü
èñòîðè÷åñêè✳✮
✶✹✳✸
Ïðî÷èå ôóíêöèè
• ❢r♦♠❘❛t ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❘❛t✐♦♥❛❧ ✲❃ ❛ ëþáîìó òèïó â êëàññå ❘❡❛❧❋❧♦❛t✳
ïðåîáðàçóåò çíà÷åíèå
❘❛t✐♦♥❛❧
ê
✷✶✵ ✶✹✳✹
➹❐➚➶➚ ✶✹✳
➪èáëèîòåêà
×➮Ñ❐❰➶Û➴ ÔÓ❮✃Ö➮➮
◆✉♠❡r✐❝
♠♦❞✉❧❡ ◆✉♠❡r✐❝✭❢r♦♠❘❛t✱ s❤♦✇❙✐❣♥❡❞✱ s❤♦✇■♥t❆t❇❛s❡✱ s❤♦✇■♥t✱ s❤♦✇❖❝t✱ s❤♦✇❍❡①✱ r❡❛❞❙✐❣♥❡❞✱ r❡❛❞■♥t✱ r❡❛❞❉❡❝✱ r❡❛❞❖❝t✱ r❡❛❞❍❡①✱ ❢❧♦❛t❚♦❉✐❣✐ts✱ s❤♦✇❊❋❧♦❛t✱ s❤♦✇❋❋❧♦❛t✱ s❤♦✇●❋❧♦❛t✱ s❤♦✇❋❧♦❛t✱ r❡❛❞❋❧♦❛t✱ ❧❡①❉✐❣✐ts✮ ✇❤❡r❡ ✐♠♣♦rt ❈❤❛r ✐♠♣♦rt ❘❛t✐♦ ✐♠♣♦rt ❆rr❛②
✭ ✱ ✭ ✭
✐s❉✐❣✐t✱ ✐s❖❝t❉✐❣✐t✱ ✐s❍❡①❉✐❣✐t ❞✐❣✐t❚♦■♥t✱ ✐♥t❚♦❉✐❣✐t ✮ ✭✪✮✱ ♥✉♠❡r❛t♦r✱ ❞❡♥♦♠✐♥❛t♦r ✮ ✭✦✮✱ ❆rr❛②✱ ❛rr❛② ✮
✲✲ Ýòà ôóíêöèÿ âûïîëíÿåò ïðåîáðàçîâàíèå ðàöèîíàëüíîãî ÷èñëà â ÷èñëî ñ ïëàâàþùåé ✲✲ òî÷êîé✳ ✲✲ ➴å ñëåäóåò èñïîëüçîâàòü â ýêçåìïëÿðàõ ❋r❛❝t✐♦♥❛❧ êëàññîâ ❋❧♦❛t è ❉♦✉❜❧❡✳ ❢r♦♠❘❛t ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❘❛t✐♦♥❛❧ ✲❃ ❛ ❢r♦♠❘❛t ① ❂ ✐❢ ① ❂❂ ✵ t❤❡♥ ❡♥❝♦❞❡❋❧♦❛t ✵ ✵ ✲✲ Ñíà÷àëà îáðàáàòûâàåò èñêëþ÷èòåëüíûå ñèòóàöèè ❡❧s❡ ✐❢ ① ❁ ✵ t❤❡♥ ✲ ❢r♦♠❘❛t✬ ✭✲①✮ ❡❧s❡ ❢r♦♠❘❛t✬ ① ✲✲ Ïðîöåññ ïðåîáðàçîâàíèÿ✿ ✲✲ Ïåðåâåñòè ✭ìàñøòàáèðîâàòü✮ ðàöèîíàëüíîå ÷èñëî â ñèñòåìó ñ÷èñëåíèÿ ñ îñíîâàíèåì ✲✲ ❘❡❛❧❋❧♦❛t✱ ïîêà îíî íå áóäåò ëåæàòü â äèàïàçîíå ìàíòèññû ✭èñïîëüçóåòñÿ ✲✲ ôóíêöèÿìè ❞❡❝♦❞❡❋❧♦❛t✴❡♥❝♦❞❡❋❧♦❛t✮✳ ✲✲ ➬àòåì îêðóãëèòü ðàöèîíàëüíîå ÷èñëî äî ■♥t❡❣❡r è çàêîäèðîâàòü åãî ñ ïîìîùüþ ✲✲ ýêñïîíåíòû✱ ïîëó÷åííîé ïðè ïåðåâîäå ÷èñëà â ñèñòåìó ñ÷èñëåíèÿ✳ ✲✲ ➘ëÿ òîãî ÷òîáû óñêîðèòü ïðîöåññ ìàñøòàáèðîâàíèÿ✱ ìû âû÷èñëÿåì ❧♦❣✷ ÷èñëà✱ ÷òîáû ✲✲ ïîëó÷èòü ïåðâîå ïðèáëèæåíèå ýêñïîíåíòû✳ ❢r♦♠❘❛t✬ ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❘❛t✐♦♥❛❧ ✲❃ ❛ ❢r♦♠❘❛t✬ ① ❂ r ✇❤❡r❡ ❜ ❂ ❢❧♦❛t❘❛❞✐① r ♣ ❂ ❢❧♦❛t❉✐❣✐ts r ✭♠✐♥❊①♣✵✱ ❴✮ ❂ ❢❧♦❛t❘❛♥❣❡ r ♠✐♥❊①♣ ❂ ♠✐♥❊①♣✵ ✲ ♣ ✲✲ äåéñòâèòåëüíàÿ ìèíèìàëüíàÿ ýêñïîíåíòà ①▼✐♥ ❂ t♦❘❛t✐♦♥❛❧ ✭❡①♣t ❜ ✭♣✲✶✮✮ ①▼❛① ❂ t♦❘❛t✐♦♥❛❧ ✭❡①♣t ❜ ♣✮ ♣✵ ❂ ✭✐♥t❡❣❡r▲♦❣❇❛s❡ ❜ ✭♥✉♠❡r❛t♦r ①✮ ✲ ✐♥t❡❣❡r▲♦❣❇❛s❡ ❜ ✭❞❡♥♦♠✐♥❛t♦r ①✮ ✲ ♣✮ ❵♠❛①❵ ♠✐♥❊①♣ ❢ ❂ ✐❢ ♣✵ ❁ ✵ t❤❡♥ ✶ ✪ ❡①♣t ❜ ✭✲♣✵✮ ❡❧s❡ ❡①♣t ❜ ♣✵ ✪ ✶ ✭①✬✱ ♣✬✮ ❂ s❝❛❧❡❘❛t ✭t♦❘❛t✐♦♥❛❧ ❜✮ ♠✐♥❊①♣ ①▼✐♥ ①▼❛① ♣✵ ✭① ✴ ❢✮ r ❂ ❡♥❝♦❞❡❋❧♦❛t ✭r♦✉♥❞ ①✬✮ ♣✬
✶✹✳✹✳
➪➮➪❐➮❰Ò➴✃➚
◆❯▼❊❘■❈
✲✲ ❒àñøòàáèðîâàòü ①✱ ïîêà íå âûïîëíèòñÿ óñëîâèå ①▼✐♥ ❁❂ ① ❁ ①▼❛① èëè ✲✲ ♣ ✭ýêñïîíåòà✮ ❁❂ ♠✐♥❊①♣✳ s❝❛❧❡❘❛t ✿✿ ❘❛t✐♦♥❛❧ ✲❃ ■♥t ✲❃ ❘❛t✐♦♥❛❧ ✲❃ ❘❛t✐♦♥❛❧ ✲❃ ■♥t ✲❃ ❘❛t✐♦♥❛❧ ✲❃ ✭❘❛t✐♦♥❛❧✱ ■♥t✮ s❝❛❧❡❘❛t ❜ ♠✐♥❊①♣ ①▼✐♥ ①▼❛① ♣ ① ❂ ✐❢ ♣ ❁❂ ♠✐♥❊①♣ t❤❡♥ ✭①✱ ♣✮ ❡❧s❡ ✐❢ ① ❃❂ ①▼❛① t❤❡♥ s❝❛❧❡❘❛t ❜ ♠✐♥❊①♣ ①▼✐♥ ①▼❛① ✭♣✰✶✮ ✭①✴❜✮ ❡❧s❡ ✐❢ ① ❁ ①▼✐♥ t❤❡♥ s❝❛❧❡❘❛t ❜ ♠✐♥❊①♣ ①▼✐♥ ①▼❛① ✭♣✲✶✮ ✭①✯❜✮ ❡❧s❡ ✭①✱ ♣✮ ✲✲ ➶îçâåäåíèå â ñòåïåíü ñ ïîìîùüþ êýøà íàèáîëåå ÷àñòûõ ÷èñåë✳ ♠✐♥❊①♣t ❂ ✵✿✿■♥t ♠❛①❊①♣t ❂ ✶✶✵✵✿✿■♥t ❡①♣t ✿✿ ■♥t❡❣❡r ✲❃ ■♥t ✲❃ ■♥t❡❣❡r ❡①♣t ❜❛s❡ ♥ ❂ ✐❢ ❜❛s❡ ❂❂ ✷ ✫✫ ♥ ❃❂ ♠✐♥❊①♣t ✫✫ ♥ ❁❂ ♠❛①❊①♣t t❤❡♥ ❡①♣ts✦♥ ❡❧s❡ ❜❛s❡❫♥ ❡①♣ts ✿✿ ❆rr❛② ■♥t ■♥t❡❣❡r ❡①♣ts ❂ ❛rr❛② ✭♠✐♥❊①♣t✱♠❛①❊①♣t✮ ❬✭♥✱✷❫♥✮ ⑤ ♥ ❁✲ ❬♠✐♥❊①♣t ✳✳ ♠❛①❊①♣t❪❪ ✲✲ ➶û÷èñëÿåò ✭íèæíþþ ãðàíèöó✮ ❧♦❣ ✐ ïî îñíîâàíèþ ❜✳ ✲✲ ❮àèáîëåå ïðîñòîé ñïîñîá ✲✲✲ ïðîñòî äåëèòü ✐ íà ❜✱ ïîêà îíî íå ñòàíåò ìåíüøå ❜✱ ✲✲ íî ýòî áûëî áû î÷åíü ìåäëåííî✦ ❒û ïðîñòî íåìíîãî áîëåå ñîîáðàçèòåëüíû✳ ✐♥t❡❣❡r▲♦❣❇❛s❡ ✿✿ ■♥t❡❣❡r ✲❃ ■♥t❡❣❡r ✲❃ ■♥t ✐♥t❡❣❡r▲♦❣❇❛s❡ ❜ ✐ ❂ ✐❢ ✐ ❁ ❜ t❤❡♥ ✵ ❡❧s❡ ✲✲ Ïûòàåòñÿ ñíà÷àëà âîçâåñòè â êâàäðàò îñíîâàíèå✱ ÷òîáû ñîêðàòèòü ÷èñëî ✲✲ äåëåíèé✳ ❧❡t ❧ ❂ ✷ ✯ ✐♥t❡❣❡r▲♦❣❇❛s❡ ✭❜✯❜✮ ✐ ❞♦❉✐✈ ✿✿ ■♥t❡❣❡r ✲❃ ■♥t ✲❃ ■♥t ❞♦❉✐✈ ✐ ❧ ❂ ✐❢ ✐ ❁ ❜ t❤❡♥ ❧ ❡❧s❡ ❞♦❉✐✈ ✭✐ ❵❞✐✈❵ ❜✮ ✭❧✰✶✮ ✐♥ ❞♦❉✐✈ ✭✐ ❵❞✐✈❵ ✭❜❫❧✮✮ ❧ ✲✲ Ðàçíûå óòèëèòû äëÿ îòîáðàæåíèÿ öåëûõ ÷èñåë è ÷èñåë ñ ïëàâàþùåé òî÷êîé s❤♦✇❙✐❣♥❡❞ ✿✿ ❘❡❛❧ ❛ ❂❃ ✭❛ ✲❃ ❙❤♦✇❙✮ ✲❃ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ s❤♦✇❙✐❣♥❡❞ s❤♦✇P♦s ♣ ① ⑤ ① ❁ ✵ ❂ s❤♦✇P❛r❡♥ ✭♣ ❃ ✻✮ ✭s❤♦✇❈❤❛r ✬✲✬ ✳ s❤♦✇P♦s ✭✲①✮✮ ⑤ ♦t❤❡r✇✐s❡ ❂ s❤♦✇P♦s ① ✲✲ s❤♦✇■♥t✱ s❤♦✇❖❝t✱ s❤♦✇❍❡① èñïîëüçóþòñÿ òîëüêî äëÿ ïîëîæèòåëüíûõ ÷èñåë s❤♦✇■♥t✱ s❤♦✇❖❝t✱ s❤♦✇❍❡① ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❙❤♦✇❙ s❤♦✇❖❝t ❂ s❤♦✇■♥t❆t❇❛s❡ ✽ ✐♥t❚♦❉✐❣✐t s❤♦✇■♥t ❂ s❤♦✇■♥t❆t❇❛s❡ ✶✵ ✐♥t❚♦❉✐❣✐t s❤♦✇❍❡① ❂ s❤♦✇■♥t❆t❇❛s❡ ✶✻ ✐♥t❚♦❉✐❣✐t
✷✶✶
✷✶✷
➹❐➚➶➚ ✶✹✳
×➮Ñ❐❰➶Û➴ ÔÓ❮✃Ö➮➮
s❤♦✇■♥t❆t❇❛s❡ ✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲✲ îñíîâàíèå ✲❃ ✭■♥t ✲❃ ❈❤❛r✮ ✲✲ öèôðà äëÿ ñèìâîëà ✲❃ ❛ ✲✲ ÷èñëî äëÿ îòîáðàæåíèÿ ✲❃ ❙❤♦✇❙ s❤♦✇■♥t❆t❇❛s❡ ❜❛s❡ ✐♥t❚♦❉✐❣ ♥ r❡st ⑤ ♥ ❁ ✵ ❂ ❡rr♦r ✧◆✉♠❡r✐❝✳s❤♦✇■♥t❆t❇❛s❡✿ íå ìîãó îòîáðàæàòü îòðèöàòåëüíûå ÷èñëà✧ ⑤ ♥✬ ❂❂ ✵ ❂ r❡st✬ ⑤ ♦t❤❡r✇✐s❡ ❂ s❤♦✇■♥t❆t❇❛s❡ ❜❛s❡ ✐♥t❚♦❉✐❣ ♥✬ r❡st✬ ✇❤❡r❡ ✭♥✬✱❞✮ ❂ q✉♦t❘❡♠ ♥ ❜❛s❡ r❡st✬ ❂ ✐♥t❚♦❉✐❣ ✭❢r♦♠■♥t❡❣r❛❧ ❞✮ ✿ r❡st r❡❛❞❙✐❣♥❡❞ ✿✿ ✭❘❡❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ ✲❃ ❘❡❛❞❙ ❛ r❡❛❞❙✐❣♥❡❞ r❡❛❞P♦s ❂ r❡❛❞P❛r❡♥ ❋❛❧s❡ r❡❛❞✬ ✇❤❡r❡ r❡❛❞✬ r ❂ r❡❛❞✑ r ✰✰ ❬✭✲①✱t✮ ⑤ ✭✧✲✧✱s✮ ❁✲ ❧❡① r✱ ✭①✱t✮ ❁✲ r❡❛❞✑ s❪ r❡❛❞✑ r ❂ ❬✭♥✱s✮ ⑤ ✭str✱s✮ ❁✲ ❧❡① r✱ ✭♥✱✮ ❁✲ r❡❛❞P♦s str❪ ✲✲ r❡❛❞■♥t ñ÷èòûâàåò ñòðîêó öèôð✱ èñïîëüçóÿ ïðîèçâîëüíîå îñíîâàíèå✳ ✲✲ ➬íàêè ìèíóñ â íà÷àëå ñòðîêè äîëæíû îáðàáàòûâàòüñÿ ãäå✲òî â äðóãîì ìåñòå✳ r❡❛❞■♥t ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ✭❈❤❛r ✲❃ ❇♦♦❧✮ ✲❃ ✭❈❤❛r ✲❃ ■♥t✮ ✲❃ ❘❡❛❞❙ ❛ r❡❛❞■♥t r❛❞✐① ✐s❉✐❣ ❞✐❣❚♦■♥t s ❂ ❬✭❢♦❧❞❧✶ ✭❭♥ ❞ ✲❃ ♥ ✯ r❛❞✐① ✰ ❞✮ ✭♠❛♣ ✭❢r♦♠■♥t❡❣r❛❧ ✳ ❞✐❣❚♦■♥t✮ ❞s✮✱ r✮ ⑤ ✭❞s✱r✮ ❁✲ ♥♦♥♥✉❧❧ ✐s❉✐❣ s ❪ ✲✲ Ôóíêöèè äëÿ ñ÷èòûâàíèÿ áåççíàêîâûõ ÷èñåë ñ ðàçëè÷íûìè îñíîâàíèÿìè r❡❛❞❉❡❝✱ r❡❛❞❖❝t✱ r❡❛❞❍❡① ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❘❡❛❞❙ ❛ r❡❛❞❉❡❝ ❂ r❡❛❞■♥t ✶✵ ✐s❉✐❣✐t ❞✐❣✐t❚♦■♥t r❡❛❞❖❝t ❂ r❡❛❞■♥t ✽ ✐s❖❝t❉✐❣✐t ❞✐❣✐t❚♦■♥t r❡❛❞❍❡① ❂ r❡❛❞■♥t ✶✻ ✐s❍❡①❉✐❣✐t ❞✐❣✐t❚♦■♥t s❤♦✇❊❋❧♦❛t s❤♦✇❋❋❧♦❛t s❤♦✇●❋❧♦❛t s❤♦✇❋❧♦❛t
✿✿ ✿✿ ✿✿ ✿✿
✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t ✭❘❡❛❧❋❧♦❛t
❛✮ ❛✮ ❛✮ ❛✮
❂❃ ❂❃ ❂❃ ❂❃
▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙❤♦✇❙ ❛ ✲❃ ❙❤♦✇❙
s❤♦✇❊❋❧♦❛t ❞ ① ❂ s❤♦✇❙tr✐♥❣ ✭❢♦r♠❛t❘❡❛❧❋❧♦❛t ❋❋❊①♣♦♥❡♥t ❞ ①✮ s❤♦✇❋❋❧♦❛t ❞ ① ❂ s❤♦✇❙tr✐♥❣ ✭❢♦r♠❛t❘❡❛❧❋❧♦❛t ❋❋❋✐①❡❞ ❞ ①✮ s❤♦✇●❋❧♦❛t ❞ ① ❂ s❤♦✇❙tr✐♥❣ ✭❢♦r♠❛t❘❡❛❧❋❧♦❛t ❋❋●❡♥❡r✐❝ ❞ ①✮ s❤♦✇❋❧♦❛t ❂ s❤♦✇●❋❧♦❛t ◆♦t❤✐♥❣ ✲✲ Ýòî òèïû ôîðìàòîâ✳ Ýòîò òèï íå ýêñïîðòèðóåòñÿ✳ ❞❛t❛ ❋❋❋♦r♠❛t ❂ ❋❋❊①♣♦♥❡♥t ⑤ ❋❋❋✐①❡❞ ⑤ ❋❋●❡♥❡r✐❝
✶✹✳✹✳
➪➮➪❐➮❰Ò➴✃➚
◆❯▼❊❘■❈
❢♦r♠❛t❘❡❛❧❋❧♦❛t ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ❋❋❋♦r♠❛t ✲❃ ▼❛②❜❡ ■♥t ✲❃ ❛ ✲❃ ❙tr✐♥❣ ❢♦r♠❛t❘❡❛❧❋❧♦❛t ❢♠t ❞❡❝s ① ❂ s ✇❤❡r❡ ❜❛s❡ ❂ ✶✵ s ❂ ✐❢ ✐s◆❛◆ ① t❤❡♥ ✧◆❛◆✧ ❡❧s❡ ✐❢ ✐s■♥❢✐♥✐t❡ ① t❤❡♥ ✐❢ ① ❁ ✵ t❤❡♥ ✧✲■♥❢✐♥✐t②✧ ❡❧s❡ ✧■♥❢✐♥✐t②✧ ❡❧s❡ ✐❢ ① ❁ ✵ ⑤⑤ ✐s◆❡❣❛t✐✈❡❩❡r♦ ① t❤❡♥ ✬✲✬ ✿ ❞♦❋♠t ❢♠t ✭❢❧♦❛t❚♦❉✐❣✐ts ✭t♦■♥t❡❣❡r ❜❛s❡✮ ✭✲①✮✮ ❡❧s❡ ❞♦❋♠t ❢♠t ✭❢❧♦❛t❚♦❉✐❣✐ts ✭t♦■♥t❡❣❡r ❜❛s❡✮ ①✮ ❞♦❋♠t ❢♠t ✭✐s✱ ❡✮ ❂ ❧❡t ❞s ❂ ♠❛♣ ✐♥t❚♦❉✐❣✐t ✐s ✐♥ ❝❛s❡ ❢♠t ♦❢ ❋❋●❡♥❡r✐❝ ✲❃ ❞♦❋♠t ✭✐❢ ❡ ❁ ✵ ⑤⑤ ❡ ❃ ✼ t❤❡♥ ❋❋❊①♣♦♥❡♥t ❡❧s❡ ❋❋❋✐①❡❞✮ ✭✐s✱ ❡✮ ❋❋❊①♣♦♥❡♥t ✲❃ ❝❛s❡ ❞❡❝s ♦❢ ◆♦t❤✐♥❣ ✲❃ ❝❛s❡ ❞s ♦❢ ❬❪ ✲❃ ✧✵✳✵❡✵✧ ❬❞❪ ✲❃ ❞ ✿ ✧✳✵❡✧ ✰✰ s❤♦✇ ✭❡✲✶✮ ❞✿❞s ✲❃ ❞ ✿ ✬✳✬ ✿ ❞s ✰✰ ✬❡✬✿s❤♦✇ ✭❡✲✶✮ ❏✉st ❞❡❝ ✲❃ ❧❡t ❞❡❝✬ ❂ ♠❛① ❞❡❝ ✶ ✐♥ ❝❛s❡ ✐s ♦❢ ❬❪ ✲❃ ✬✵✬✿✬✳✬✿t❛❦❡ ❞❡❝✬ ✭r❡♣❡❛t ✬✵✬✮ ✰✰ ✧❡✵✧ ❴ ✲❃ ❧❡t ✭❡✐✱ ✐s✬✮ ❂ r♦✉♥❞❚♦ ❜❛s❡ ✭❞❡❝✬✰✶✮ ✐s ❞✿❞s ❂ ♠❛♣ ✐♥t❚♦❉✐❣✐t ✭✐❢ ❡✐ ❃ ✵ t❤❡♥ ✐♥✐t ✐s✬ ❡❧s❡ ✐s✬✮ ✐♥ ❞✿✬✳✬✿❞s ✰✰ ✧❡✧ ✰✰ s❤♦✇ ✭❡✲✶✰❡✐✮ ❋❋❋✐①❡❞ ✲❃ ❝❛s❡ ❞❡❝s ♦❢ ◆♦t❤✐♥❣ ✲✲ ➶ñåãäà ïå÷àòàåò äåñÿòè÷íóþ òî÷êó ⑤ ❡ ❃ ✵ ✲❃ t❛❦❡ ❡ ✭❞s ✰✰ r❡♣❡❛t ✬✵✬✮
✷✶✸
✷✶✹
➹❐➚➶➚ ✶✹✳
×➮Ñ❐❰➶Û➴ ÔÓ❮✃Ö➮➮
✰✰ ✬✳✬ ✿ ♠❦✵ ✭❞r♦♣ ❡ ❞s✮ ⑤ ♦t❤❡r✇✐s❡ ✲❃ ✧✵✳✧ ✰✰ ♠❦✵ ✭r❡♣❧✐❝❛t❡ ✭✲❡✮ ✬✵✬ ✰✰ ❞s✮ ❏✉st ❞❡❝ ✲❃ ✲✲ Ïå÷àòàåò äåñÿòè÷íóþ òî÷êó✱ åñëè ❞❡❝ ❃ ✵ ❧❡t ❞❡❝✬ ❂ ♠❛① ❞❡❝ ✵ ✐♥ ✐❢ ❡ ❃❂ ✵ t❤❡♥ ❧❡t ✭❡✐✱ ✐s✬✮ ❂ r♦✉♥❞❚♦ ❜❛s❡ ✭❞❡❝✬ ✰ ❡✮ ✐s ✭❧s✱ rs✮ ❂ s♣❧✐t❆t ✭❡✰❡✐✮ ✭♠❛♣ ✐♥t❚♦❉✐❣✐t ✐s✬✮ ✐♥ ♠❦✵ ❧s ✰✰ ♠❦❞♦t✵ rs ❡❧s❡ ❧❡t ✭❡✐✱ ✐s✬✮ ❂ r♦✉♥❞❚♦ ❜❛s❡ ❞❡❝✬ ✭r❡♣❧✐❝❛t❡ ✭✲❡✮ ✵ ✰✰ ✐s✮ ❞ ✿ ❞s ❂ ♠❛♣ ✐♥t❚♦❉✐❣✐t ✭✐❢ ❡✐ ❃ ✵ t❤❡♥ ✐s✬ ❡❧s❡ ✵✿✐s✬✮ ✐♥ ❞ ✿ ♠❦❞♦t✵ ❞s ✇❤❡r❡ ♠❦✵ ❂ ✧✵✧ ✲✲ Ïå÷àòàåò ✵✳✸✹✱ à íå ✳✸✹ ♠❦✵ s ❂ s ♠❦❞♦t✵ ❂ ✲✲ Ïå÷àòàåò ✸✹✱ à íå ✸✹✳ ♠❦❞♦t✵ s ❂ ✬✳✬ ✿ s ✲✲ êîãäà ôîðìàò çàäàåò îòñóòñòâèå ✲✲ öèôð ïîñëå äåñÿòè÷íîé òî÷êè r♦✉♥❞❚♦ ✿✿ ■♥t ✲❃ ■♥t ✲❃ ❬■♥t❪ ✲❃ ✭■♥t✱ ❬■♥t❪✮ r♦✉♥❞❚♦ ❜❛s❡ ❞ ✐s ❂ ❝❛s❡ ❢ ❞ ✐s ♦❢ ✭✵✱ ✐s✮ ✲❃ ✭✵✱ ✐s✮ ✭✶✱ ✐s✮ ✲❃ ✭✶✱ ✶ ✿ ✐s✮ ✇❤❡r❡ ❜✷ ❂ ❜❛s❡ ❵❞✐✈❵ ✷ ❢ ♥ ❬❪ ❂ ✭✵✱ r❡♣❧✐❝❛t❡ ♥ ✵✮ ❢ ✵ ✭✐✿❴✮ ❂ ✭✐❢ ✐ ❃❂ ❜✷ t❤❡♥ ✶ ❡❧s❡ ✵✱ ❬❪✮ ❢ ❞ ✭✐✿✐s✮ ❂ ❧❡t ✭❝✱ ❞s✮ ❂ ❢ ✭❞✲✶✮ ✐s ✐✬ ❂ ❝ ✰ ✐ ✐♥ ✐❢ ✐✬ ❂❂ ❜❛s❡ t❤❡♥ ✭✶✱ ✵✿❞s✮ ❡❧s❡ ✭✵✱ ✐✬✿❞s✮ ✲✲ ✲✲ ➪àçèðóåòñÿ íà ✧➪ûñòðîé è òî÷íîé ïå÷àòè ÷èñåë ñ ïëàâàþùåé òî÷êîé✧ ✲✲ Ð✳➹✳ ➪óðãåðà è Ð✳✃✳ ➘àéáâèãà ✲✲ ✭✧Pr✐♥t✐♥❣ ❋❧♦❛t✐♥❣✲P♦✐♥t ◆✉♠❜❡rs ◗✉✐❝❦❧② ❛♥❞ ❆❝❝✉r❛t❡❧②✧ ✲✲ ❘✳●✳ ❇✉r❣❡r è ❘✳ ❑✳ ❉②❜✈✐❣✮ ✲✲ â P▲❉■ ✾✻✳ ✲✲ ➶åðñèÿ✱ ïðèâåäåííàÿ çäåñü✱ èñïîëüçóåò íàìíîãî áîëåå ìåäëåííóþ îöåíêó àëãîðèòìà✳ ✲✲ ➴å ñëåäóåò óñîâåðøåíñòâîâàòü✳ ✲✲ Ýòà ôóíêöèÿ âîçâðàùàåò íåïóñòîé ñïèñîê öèôð ✭öåëûå ÷èñëà â äèàïàçîíå ✲✲ ❬✵✳✳❜❛s❡✲✶❪✮ è ýêñïîíåíòó✳ ➶ îáùåì ñëó÷àå✱ åñëè ✲✲ ❢❧♦❛t❚♦❉✐❣✐ts r ❂ ✭❬❛✱ ❜✱ ✳✳✳ ③❪✱ ❡✮ ✲✲ òî ✲✲ r ❂ ✵✳❛❜✳✳③ ✯ ❜❛s❡❫❡ ✲✲ ❢❧♦❛t❚♦❉✐❣✐ts ✿✿ ✭❘❡❛❧❋❧♦❛t ❛✮ ❂❃ ■♥t❡❣❡r ✲❃ ❛ ✲❃ ✭❬■♥t❪✱ ■♥t✮
✶✹✳✹✳
➪➮➪❐➮❰Ò➴✃➚
◆❯▼❊❘■❈
❢❧♦❛t❚♦❉✐❣✐ts ❴ ✵ ❂ ✭❬❪✱ ✵✮ ❢❧♦❛t❚♦❉✐❣✐ts ❜❛s❡ ① ❂ ❧❡t ✭❢✵✱ ❡✵✮ ❂ ❞❡❝♦❞❡❋❧♦❛t ① ✭♠✐♥❊①♣✵✱ ❴✮ ❂ ❢❧♦❛t❘❛♥❣❡ ① ♣ ❂ ❢❧♦❛t❉✐❣✐ts ① ❜ ❂ ❢❧♦❛t❘❛❞✐① ① ♠✐♥❊①♣ ❂ ♠✐♥❊①♣✵ ✲ ♣ ✲✲ äåéñòâèòåëüíàÿ ìèíèìàëüíàÿ ýêñïîíåíòà ✲✲ ➶ ❍❛s❦❡❧❧ òðåáóåòñÿ✱ ÷òîáû ❢ áûëî ñêîððåêòèðîâàíî òàê✱ ÷òîáû ✲✲ äåíîðìàëèçàöèîííûå ÷èñëà èìåëè íåâîçìîæíî íèçêóþ ýêñïîíåíòó✳ ✲✲ ➘ëÿ ýòîãî èñïîëüçóåòñÿ êîððåêöèÿ✳ ❢ ✿✿ ■♥t❡❣❡r ❡ ✿✿ ■♥t ✭❢✱ ❡✮ ❂ ❧❡t ♥ ❂ ♠✐♥❊①♣ ✲ ❡✵ ✐♥ ✐❢ ♥ ❃ ✵ t❤❡♥ ✭❢✵ ❵❞✐✈❵ ✭❜❫♥✮✱ ❡✵✰♥✮ ❡❧s❡ ✭❢✵✱ ❡✵✮ ✭r✱ s✱ ♠❯♣✱ ♠❉♥✮ ❂ ✐❢ ❡ ❃❂ ✵ t❤❡♥ ❧❡t ❜❡ ❂ ❜❫❡ ✐♥ ✐❢ ❢ ❂❂ ❜❫✭♣✲✶✮ t❤❡♥ ✭❢✯❜❡✯❜✯✷✱ ✷✯❜✱ ❜❡✯❜✱ ❜✮ ❡❧s❡ ✭❢✯❜❡✯✷✱ ✷✱ ❜❡✱ ❜❡✮ ❡❧s❡ ✐❢ ❡ ❃ ♠✐♥❊①♣ ✫✫ ❢ ❂❂ ❜❫✭♣✲✶✮ t❤❡♥ ✭❢✯❜✯✷✱ ❜❫✭✲❡✰✶✮✯✷✱ ❜✱ ✶✮ ❡❧s❡ ✭❢✯✷✱ ❜❫✭✲❡✮✯✷✱ ✶✱ ✶✮ ❦ ❂ ❧❡t ❦✵ ❂ ✐❢ ❜❂❂✷ ✫✫ ❜❛s❡❂❂✶✵ t❤❡♥ ✲✲ ❧♦❣❇❛s❡ ✶✵ ✷ íåìíîãî áîëüøå✱ ÷åì ✸✴✶✵✱ ïîýòîìó ✲✲ ñëåäóþùåå âûçîâåò îøèáêó íà íèæíåé ñòîðîíå✳ ✲✲ ➮ãíîðèðîâàíèå äðîáè ñîçäàñò ýòó îøèáêó äàæå áîëüøå✳ ✲✲ ❍❛s❦❡❧❧ îáåùàåò✱ ÷òî ♣✲✶ ❁❂ ❧♦❣❇❛s❡ ❜ ❢ ❁ ♣✳ ✭♣ ✲ ✶ ✰ ❡✵✮ ✯ ✸ ❵❞✐✈❵ ✶✵ ❡❧s❡ ❝❡✐❧✐♥❣ ✭✭❧♦❣ ✭❢r♦♠■♥t❡❣❡r ✭❢✰✶✮✮ ✰ ❢r♦♠■♥t❡❣r❛❧ ❡ ✯ ❧♦❣ ✭❢r♦♠■♥t❡❣❡r ❜✮✮ ✴ ❧♦❣ ✭❢r♦♠■♥t❡❣❡r ❜❛s❡✮✮ ❢✐①✉♣ ♥ ❂ ✐❢ ♥ ❃❂ ✵ t❤❡♥ ✐❢ r ✰ ♠❯♣ ❁❂ ❡①♣t ❜❛s❡ ♥ ✯ s t❤❡♥ ♥ ❡❧s❡ ❢✐①✉♣ ✭♥✰✶✮ ❡❧s❡ ✐❢ ❡①♣t ❜❛s❡ ✭✲♥✮ ✯ ✭r ✰ ♠❯♣✮ ❁❂ s t❤❡♥ ♥
✷✶✺
✷✶✻
➹❐➚➶➚ ✶✹✳
✐♥
×➮Ñ❐❰➶Û➴ ÔÓ❮✃Ö➮➮
❡❧s❡ ❢✐①✉♣ ✭♥✰✶✮ ✐♥ ❢✐①✉♣ ❦✵ ❣❡♥ ❞s r♥ s◆ ♠❯♣◆ ♠❉♥◆ ❂ ❧❡t ✭❞♥✱ r♥✬✮ ❂ ✭r♥ ✯ ❜❛s❡✮ ❵❞✐✈▼♦❞❵ s◆ ♠❯♣◆✬ ❂ ♠❯♣◆ ✯ ❜❛s❡ ♠❉♥◆✬ ❂ ♠❉♥◆ ✯ ❜❛s❡ ✐♥ ❝❛s❡ ✭r♥✬ ❁ ♠❉♥◆✬✱ r♥✬ ✰ ♠❯♣◆✬ ❃ s◆✮ ♦❢ ✭❚r✉❡✱ ❋❛❧s❡✮ ✲❃ ❞♥ ✿ ❞s ✭❋❛❧s❡✱ ❚r✉❡✮ ✲❃ ❞♥✰✶ ✿ ❞s ✭❚r✉❡✱ ❚r✉❡✮ ✲❃ ✐❢ r♥✬ ✯ ✷ ❁ s◆ t❤❡♥ ❞♥ ✿ ❞s ❡❧s❡ ❞♥✰✶ ✿ ❞s ✭❋❛❧s❡✱ ❋❛❧s❡✮ ✲❃ ❣❡♥ ✭❞♥✿❞s✮ r♥✬ s◆ ♠❯♣◆✬ ♠❉♥◆✬ r❞s ❂ ✐❢ ❦ ❃❂ ✵ t❤❡♥ ❣❡♥ ❬❪ r ✭s ✯ ❡①♣t ❜❛s❡ ❦✮ ♠❯♣ ♠❉♥ ❡❧s❡ ❧❡t ❜❦ ❂ ❡①♣t ❜❛s❡ ✭✲❦✮ ✐♥ ❣❡♥ ❬❪ ✭r ✯ ❜❦✮ s ✭♠❯♣ ✯ ❜❦✮ ✭♠❉♥ ✯ ❜❦✮ ✭♠❛♣ ❢r♦♠■♥t❡❣r❛❧ ✭r❡✈❡rs❡ r❞s✮✱ ❦✮
✲✲ Ýòà ôóíêöèÿ äëÿ ñ÷èòûâàíèÿ ÷èñåë ñ ïëàâàþùåé òî÷êîé èñïîëüçóåò ìåíåå ✲✲ îãðàíè÷èâàþùèé ñèíòàêñèñ äëÿ ÷èñåë ñ ïëàâàþùåé òî÷êîé✱ ÷åì ëåêñè÷åñêèé ✲✲ àíàëèçàòîð ❍❛s❦❡❧❧✳ ❵✳✬ ÿâëÿåòñÿ íåîáÿçàòåëüíîé✳ r❡❛❞❋❧♦❛t ✿✿ ✭❘❡❛❧❋r❛❝ ❛✮ ❂❃ ❘❡❛❞❙ ❛ r❡❛❞❋❧♦❛t r ❂ ❬✭❢r♦♠❘❛t✐♦♥❛❧ ✭✭♥✪✶✮✯✶✵❫❫✭❦✲❞✮✮✱t✮ ⑤ ✭♥✱❞✱s✮ ❁✲ r❡❛❞❋✐① r✱ ✭❦✱t✮ ❁✲ r❡❛❞❊①♣ s❪ ✰✰ ❬ ✭✵✴✵✱ t✮ ⑤ ✭✧◆❛◆✧✱t✮ ❁✲ ❧❡① r❪ ✰✰ ❬ ✭✶✴✵✱ t✮ ⑤ ✭✧■♥❢✐♥✐t②✧✱t✮ ❁✲ ❧❡① r❪ ✇❤❡r❡ r❡❛❞❋✐① r ❂ ❬✭r❡❛❞ ✭❞s✰✰❞s✬✮✱ ❧❡♥❣t❤ ❞s✬✱ t✮ ⑤ ✭❞s✱❞✮ ❁✲ ❧❡①❉✐❣✐ts r✱ ✭❞s✬✱t✮ ❁✲ ❧❡①❋r❛❝ ❞ ❪ ❧❡①❋r❛❝ ✭✬✳✬✿❞s✮ ❂ ❧❡①❉✐❣✐ts ❞s ❧❡①❋r❛❝ s ❂ ❬✭✱s✮❪ r❡❛❞❊①♣ ✭❡✿s✮ ⑤ ❡ ❵❡❧❡♠❵ ✧❡❊✧ ❂ r❡❛❞❊①♣✬ s r❡❛❞❊①♣ s ❂ ❬✭✵✱s✮❪ r❡❛❞❊①♣✬ ✭✬✲✬✿s✮ ❂ ❬✭✲❦✱t✮ ⑤ ✭❦✱t✮ ❁✲ r❡❛❞❉❡❝ s❪ r❡❛❞❊①♣✬ ✭✬✰✬✿s✮ ❂ r❡❛❞❉❡❝ s r❡❛❞❊①♣✬ s ❂ r❡❛❞❉❡❝ s ❧❡①❉✐❣✐ts ❧❡①❉✐❣✐ts
✿✿ ❘❡❛❞❙ ❙tr✐♥❣ ❂ ♥♦♥♥✉❧❧ ✐s❉✐❣✐t
♥♦♥♥✉❧❧ ♥♦♥♥✉❧❧ ♣ s
✿✿ ✭❈❤❛r ✲❃ ❇♦♦❧✮ ✲❃ ❘❡❛❞❙ ❙tr✐♥❣ ❂ ❬✭❝s✱t✮ ⑤ ✭❝s❅✭❴✿❴✮✱t✮ ❁✲ ❬s♣❛♥ ♣ s❪❪
➹ëàâà ✶✺
❰ïåðàöèè èíäåêñàöèè ♠♦❞✉❧❡ ■① ✭ ■①✭r❛♥❣❡✱ ✐♥❞❡①✱ ✐♥❘❛♥❣❡✱ r❛♥❣❡❙✐③❡✮ ✮ ✇❤❡r❡ ❝❧❛ss ❖r❞ ❛ ❂❃ r❛♥❣❡ ✐♥❞❡① ✐♥❘❛♥❣❡ r❛♥❣❡❙✐③❡
■① ✿✿ ✿✿ ✿✿ ✿✿
❛ ✇❤❡r❡ ✭❛✱❛✮ ✲❃ ✭❛✱❛✮ ✲❃ ✭❛✱❛✮ ✲❃ ✭❛✱❛✮ ✲❃
❬❛❪ ❛ ✲❃ ■♥t ❛ ✲❃ ❇♦♦❧ ■♥t
✐♥st❛♥❝❡ ■① ❈❤❛r ✐♥st❛♥❝❡ ■① ■♥t ✐♥st❛♥❝❡ ■① ■♥t❡❣❡r ✐♥st❛♥❝❡ ✭■① ❛✱ ■① ❜✮ ❂❃ ■① ✭❛✱❜✮ ✲✲ è òàê äàëåå ✐♥st❛♥❝❡ ■① ❇♦♦❧ ✐♥st❛♥❝❡ ■① ❖r❞❡r✐♥❣
✃ëàññ
■①
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✇❤❡r❡ ✳✳✳ ✇❤❡r❡ ✳✳✳
èñïîëüçóåòñÿ äëÿ òîãî✱ ÷òîáû îòîáðàçèòü íåïðåðûâíûé îòðåçîê çíà÷åíèé
íà òèï öåëûõ ÷èñåë✳ Ýòî èñïîëüçóåòñÿ ïðåæäå âñåãî äëÿ èíäåêñàöèè ìàññèâîâ ✭ñì✳ ãëàâó ✶✻✮✳ ✃ëàññ
■①
ñîäåðæèò ìåòîäû
r❛♥❣❡✱ ✐♥❞❡①
è
✐♥❘❛♥❣❡✳
❰ïåðàöèÿ
✐♥❞❡①
îòîáðàæàåò ïàðó îãðàíè÷åíèé✱ êîòîðàÿ îïðåäåëÿåò íèæíþþ è âåðõíþþ ãðàíèöû äèàïàçîíà✱ è èíäåêñ â öåëîå ÷èñëî✳ ❰ïåðàöèÿ
✐♥❘❛♥❣❡
r❛♥❣❡ ïåðå÷èñëÿåò âñå èíäåêñû❀ îïåðàöèÿ
ñîîáùàåò✱ íàõîäèòñÿ ëè êîíêðåòíûé èíäåêñ â äèàïàçîíå✱ çàäàííîì ïàðîé
îãðàíè÷åíèé✳ Ðåàëèçàöèÿ èìååò ïðàâî ïðåäïîëàãàòü âûïîëíåíèå ñëåäóþùèõ ïðàâèë îòíîñèòåëüíî ýòèõ îïåðàöèé✿
r❛♥❣❡ ✭❧✱✉✮ ✦✦ ✐♥❞❡① ✭❧✱✉✮ ✐ ❂❂ ✐ ✐♥❘❛♥❣❡ ✭❧✱✉✮ ✐ ♠❛♣ ✐♥❞❡① ✭r❛♥❣❡ ✭❧✱✉✮✮
✲✲ êîãäà ✐ íàõîäèòñÿ â óêàçàííîì ✲✲ äèàïàçîíå ❂❂ ✐ ❵❡❧❡♠❵ r❛♥❣❡ ✭❧✱✉✮ ❂❂ ❬✵✳✳r❛♥❣❡❙✐③❡ ✭❧✱✉✮❪ ✷✶✼
✷✶✽
➹❐➚➶➚ ✶✺✳
✶✺✳✶
➴ñòü
■①
➶ûâåäåíèå ýêçåìïëÿðîâ
âîçìîæíîñòü
âûâåñòè
èñïîëüçóÿ èíñòðóêöèþ
✭ïðîèçâåñòè✮
❞❡r✐✈✐♥❣
ýêçåìïëÿð
â îáúÿâëåíèè
òàêèõ ïðîèçâîäíûõ ýêçåìïëÿðîâ êëàññà
❰Ï➴Ð➚Ö➮➮ ➮❮➘➴✃Ñ➚Ö➮➮
■①
❞❛t❛
êëàññà
■①
àâòîìàòè÷åñêè✱
✭ðàçäåë ✹✳✸✳✸✮✳ ❰áúÿâëåíèÿ
âîçìîæíû òîëüêî äëÿ ïåðå÷èñëåíèé
✭ò✳å✳ òèïîâ äàííûõ✱ èìåþùèõ êîíñòðóêòîðû áåç àðãóìåíòîâ✮ è òèïîâ äàííûõ ñ îäíèì êîíñòðóêòîðîì✱ ó êîòîðîãî êîìïîíåíòû èìåþò òèïû✱ ÿâëÿþùèåñÿ ýêçåìïëÿðàìè êëàññà
■①✳
Ðåàëèçàöèÿ ❍❛s❦❡❧❧ äîëæíà îáåñïå÷èòü ýêçåìïëÿðû êëàññà
■①
äëÿ êîðòåæåé ïî
ìåíüøåé ìåðå âïëîòü äî ✶✺ ðàçìåðà✳
•
➘ëÿ
ïåðå÷èñëåíèÿ ïðåäïîëàãàåòñÿ✱ ÷òî êîíñòðóêòîðû áåç àðãóìåíòîâ íóìåðóþòñÿ 0 äî n−1 âêëþ÷èòåëüíî✳ Ýòî òà æå ñàìàÿ íóìåðàöèÿ✱
ñëåâà íàïðàâî èíäåêñàìè îò
êîòîðàÿ îïðåäåëåíà â êëàññå
❊♥✉♠✳
❮àïðèìåð✱ ïðè òèïå äàííûõ✿
❞❛t❛ ❈♦❧♦✉r ❂ ❘❡❞ ⑤ ❖r❛♥❣❡ ⑤ ❨❡❧❧♦✇ ⑤ ●r❡❡♥ ⑤ ❇❧✉❡ ⑤ ■♥❞✐❣♦ ⑤ ❱✐♦❧❡t ìû ïîëó÷èëè áû✿
r❛♥❣❡ ✭❨❡❧❧♦✇✱❇❧✉❡✮ ❂❂ ❬❨❡❧❧♦✇✱●r❡❡♥✱❇❧✉❡❪ ✐♥❞❡① ✭❨❡❧❧♦✇✱❇❧✉❡✮ ●r❡❡♥ ❂❂ ✶ ✐♥❘❛♥❣❡ ✭❨❡❧❧♦✇✱❇❧✉❡✮ ❘❡❞ ❂❂ ❋❛❧s❡ •
➘ëÿ
òèïîâ
äàííûõ
ñ
îäíèì
êîíñòðóêòîðîì
îáúÿâëåíèÿ
ïðîèçâîäíûõ
ýêçåìïëÿðîâ ÿâëÿþòñÿ òàêèìè✱ êàê òå✱ ÷òî èçîáðàæåíû íà ðèñ✳ ✶✺✳✶ äëÿ êîðòåæåé✳
✶✺✳✶✳
➶Û➶➴➘➴❮➮➴ Ý✃➬➴❒Ï❐ßÐ❰➶
■❳
✐♥st❛♥❝❡ ✭■① ❛✱ ■① ❜✮ ❂❃ ■① ✭❛✱❜✮ ✇❤❡r❡ r❛♥❣❡ ✭✭❧✱❧✬✮✱✭✉✱✉✬✮✮ ❂ ❬✭✐✱✐✬✮ ⑤ ✐ ❁✲ r❛♥❣❡ ✭❧✱✉✮✱ ✐✬ ❁✲ r❛♥❣❡ ✭❧✬✱✉✬✮❪ ✐♥❞❡① ✭✭❧✱❧✬✮✱✭✉✱✉✬✮✮ ✭✐✱✐✬✮ ❂ ✐♥❞❡① ✭❧✱✉✮ ✐ ✯ r❛♥❣❡❙✐③❡ ✭❧✬✱✉✬✮ ✰ ✐♥❞❡① ✭❧✬✱✉✬✮ ✐✬ ✐♥❘❛♥❣❡ ✭✭❧✱❧✬✮✱✭✉✱✉✬✮✮ ✭✐✱✐✬✮ ❂ ✐♥❘❛♥❣❡ ✭❧✱✉✮ ✐ ✫✫ ✐♥❘❛♥❣❡ ✭❧✬✱✉✬✮ ✐✬ ✲✲ Ýêçåìïëÿðû äëÿ îñòàëüíûõ êîðòåæåé ïîëó÷åíû ïî ýòîé ñõåìå✿ ✲✲ ✲✲ ✐♥st❛♥❝❡ ✭■① ❛✶✱ ■① ❛✷✱ ✳✳✳ ✱ ■① ❛❦✮ ❂❃ ■① ✭❛✶✱❛✷✱✳✳✳✱❛❦✮ ✇❤❡r❡ ✲✲ r❛♥❣❡ ✭✭❧✶✱❧✷✱✳✳✳✱❧❦✮✱✭✉✶✱✉✷✱✳✳✳✱✉❦✮✮ ❂ ✲✲ ❬✭✐✶✱✐✷✱✳✳✳✱✐❦✮ ⑤ ✐✶ ❁✲ r❛♥❣❡ ✭❧✶✱✉✶✮✱ ✲✲ ✐✷ ❁✲ r❛♥❣❡ ✭❧✷✱✉✷✮✱ ✲✲ ✳✳✳ ✲✲ ✐❦ ❁✲ r❛♥❣❡ ✭❧❦✱✉❦✮❪ ✲✲ ✲✲ ✐♥❞❡① ✭✭❧✶✱❧✷✱✳✳✳✱❧❦✮✱✭✉✶✱✉✷✱✳✳✳✱✉❦✮✮ ✭✐✶✱✐✷✱✳✳✳✱✐❦✮ ❂ ✲✲ ✐♥❞❡① ✭❧❦✱✉❦✮ ✐❦ ✰ r❛♥❣❡❙✐③❡ ✭❧❦✱✉❦✮ ✯ ✭ ✲✲ ✐♥❞❡① ✭❧❦✲✶✱✉❦✲✶✮ ✐❦✲✶ ✰ r❛♥❣❡❙✐③❡ ✭❧❦✲✶✱✉❦✲✶✮ ✯ ✭ ✲✲ ✳✳✳ ✲✲ ✐♥❞❡① ✭❧✶✱✉✶✮✮✮ ✲✲ ✲✲ ✐♥❘❛♥❣❡ ✭✭❧✶✱❧✷✱✳✳✳❧❦✮✱✭✉✶✱✉✷✱✳✳✳✱✉❦✮✮ ✭✐✶✱✐✷✱✳✳✳✱✐❦✮ ❂ ✲✲ ✐♥❘❛♥❣❡ ✭❧✶✱✉✶✮ ✐✶ ✫✫ ✐♥❘❛♥❣❡ ✭❧✷✱✉✷✮ ✐✷ ✫✫ ✲✲ ✳✳✳ ✫✫ ✐♥❘❛♥❣❡ ✭❧❦✱✉❦✮ ✐❦
Ðèñ✳ ✶✺✳✶✿ ➶ûâåäåíèå ýêçåìïëÿðîâ êëàññà ■①
✷✶✾
✷✷✵ ✶✺✳✷
➹❐➚➶➚ ✶✺✳
➪èáëèîòåêà
❰Ï➴Ð➚Ö➮➮ ➮❮➘➴✃Ñ➚Ö➮➮
■①
♠♦❞✉❧❡ ■① ✭ ■①✭r❛♥❣❡✱ ✐♥❞❡①✱ ✐♥❘❛♥❣❡✱ r❛♥❣❡❙✐③❡✮ ✮ ✇❤❡r❡ ❝❧❛ss ❖r❞ ❛ ❂❃ ■① ❛ ✇❤❡r❡ r❛♥❣❡ ✿✿ ✭❛✱❛✮ ✲❃ ❬❛❪ ✐♥❞❡① ✿✿ ✭❛✱❛✮ ✲❃ ❛ ✲❃ ■♥t ✐♥❘❛♥❣❡ ✿✿ ✭❛✱❛✮ ✲❃ ❛ ✲❃ ❇♦♦❧ r❛♥❣❡❙✐③❡ ✿✿ ✭❛✱❛✮ ✲❃ ■♥t r❛♥❣❡❙✐③❡ ❜❅✭❧✱❤✮ ⑤ ♥✉❧❧ ✭r❛♥❣❡ ❜✮ ❂ ✵ ⑤ ♦t❤❡r✇✐s❡ ❂ ✐♥❞❡① ❜ ❤ ✰ ✶ ✲✲ ◆❇✿ çàìåíà ✧♥✉❧❧ ✭r❛♥❣❡ ❜✮✧ íà ✧♥♦t ✭❧ ❁❂ ❤✮✧ ✲✲ çàâåðøèòñÿ íåóäà÷åé✱ åñëè ãðàíèöû ÿâëÿþòñÿ êîðòåæàìè✳ ❮àïðèìåð✱ ✲✲ ✭✶✱✷✮ ❁❂ ✭✷✱✶✮ ✲✲ íî äèàïàçîí ✭r❛♥❣❡✮ òåì íå ìåíåå ïóñò✿ ✲✲ r❛♥❣❡ ✭✭✶✱✷✮✱✭✷✱✶✮✮ ❂ ❬❪ ✐♥st❛♥❝❡ ■① ❈❤❛r ✇❤❡r❡ r❛♥❣❡ ✭♠✱♥✮ ❂ ❬♠✳✳♥❪ ✐♥❞❡① ❜❅✭❝✱❝✬✮ ❝✐ ⑤ ✐♥❘❛♥❣❡ ❜ ❝✐ ❂ ❢r♦♠❊♥✉♠ ❝✐ ✲ ❢r♦♠❊♥✉♠ ❝ ⑤ ♦t❤❡r✇✐s❡ ❂ ❡rr♦r ✧■①✳✐♥❞❡①✿ ➮íäåêñ íàõîäèòñÿ çà ïðåäåëàìè äèàïàçîíà✳✧ ✐♥❘❛♥❣❡ ✭❝✱❝✬✮ ✐ ❂ ❝ ❁❂ ✐ ✫✫ ✐ ❁❂ ❝✬ ✐♥st❛♥❝❡ ■① ■♥t ✇❤❡r❡ r❛♥❣❡ ✭♠✱♥✮ ✐♥❞❡① ❜❅✭♠✱♥✮ ✐ ⑤ ✐♥❘❛♥❣❡ ❜ ✐ ⑤ ♦t❤❡r✇✐s❡ ✐♥❘❛♥❣❡ ✭♠✱♥✮ ✐
❂ ❬♠✳✳♥❪ ❂ ✐ ✲ ♠ ❂ ❡rr♦r ✧■①✳✐♥❞❡①✿ ➮íäåêñ íàõîäèòñÿ çà ïðåäåëàìè äèàïàçîíà✳✧ ❂ ♠ ❁❂ ✐ ✫✫ ✐ ❁❂ ♥
✐♥st❛♥❝❡ ■① ■♥t❡❣❡r ✇❤❡r❡ r❛♥❣❡ ✭♠✱♥✮ ❂ ❬♠✳✳♥❪ ✐♥❞❡① ❜❅✭♠✱♥✮ ✐ ⑤ ✐♥❘❛♥❣❡ ❜ ✐ ❂ ❢r♦♠■♥t❡❣❡r ✭✐ ✲ ♠✮ ⑤ ♦t❤❡r✇✐s❡ ❂ ❡rr♦r ✧■①✳✐♥❞❡①✿ ➮íäåêñ íàõîäèòñÿ çà ïðåäåëàìè äèàïàçîíà✳✧ ✐♥❘❛♥❣❡ ✭♠✱♥✮ ✐ ❂ ♠ ❁❂ ✐ ✫✫ ✐ ❁❂ ♥ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
✭■① ❛✱■① ❜✮ ❂❃ ■① ✭❛✱ ❜✮ ✲✲ ÿâëÿåòñÿ ïðîèçâîäíûì✱ äëÿ âñåõ êîðòåæåé ■① ❇♦♦❧ ✲✲ ÿâëÿåòñÿ ïðîèçâîäíûì ■① ❖r❞❡r✐♥❣ ✲✲ ÿâëÿåòñÿ ïðîèçâîäíûì ■① ✭✮ ✲✲ ÿâëÿåòñÿ ïðîèçâîäíûì
➹ëàâà ✶✻
❒àññèâû ♠♦❞✉❧❡
❆rr❛② ✭ ♠♦❞✉❧❡ ■①✱ ✲✲ ýêñïîðòèðóåò âåñü ■① â öåëÿõ óäîáñòâà ❆rr❛②✱ ❛rr❛②✱ ❧✐st❆rr❛②✱ ✭✦✮✱ ❜♦✉♥❞s✱ ✐♥❞✐❝❡s✱ ❡❧❡♠s✱ ❛ss♦❝s✱ ❛❝❝✉♠❆rr❛②✱ ✭✴✴✮✱ ❛❝❝✉♠✱ ✐①♠❛♣ ✮ ✇❤❡r❡
✐♠♣♦rt ■① ✐♥❢✐①❧ ✾ ❞❛t❛
✦✱ ✴✴
✭■① ❛✮
❛rr❛② ❧✐st❆rr❛② ✭✦✮ ❜♦✉♥❞s ✐♥❞✐❝❡s ❡❧❡♠s ❛ss♦❝s ❛❝❝✉♠❆rr❛②
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
✐①♠❛♣
✭■① ✭■① ✭■① ✭■①
❛✱ ❛✱ ❛✱ ❛✱
✭■① ✭■① ✭■① ✭■① ✭■① ✭■① ✭■① ✭■①
❛✮ ❛✮ ❛✮ ❛✮ ❛✮ ❛✮ ❛✮ ❛✮
✲✲ ➚áñòðàêòíûé
✭❛✱❛✮ ✲❃ ❬✭❛✱❜✮❪ ✲❃ ❆rr❛② ❛ ❜ ✭❛✱❛✮ ✲❃ ❬❜❪ ✲❃ ❆rr❛② ❛ ❜ ❆rr❛② ❛ ❜ ✲❃ ❛ ✲❃ ❜ ❆rr❛② ❛ ❜ ✲❃ ✭❛✱❛✮ ❆rr❛② ❛ ❜ ✲❃ ❬❛❪ ❆rr❛② ❛ ❜ ✲❃ ❬❜❪ ❆rr❛② ❛ ❜ ✲❃ ❬✭❛✱❜✮❪ ✭❜ ✲❃ ❝ ✲❃ ❜✮ ✲❃ ❜ ✲❃ ✭❛✱❛✮ ✲❃ ❬✭❛✱❝✮❪ ✲❃ ❆rr❛② ❛ ❜ ✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❬✭❛✱❜✮❪ ✲❃ ❆rr❛② ❛ ❜ ✿✿ ✭■① ❛✮ ❂❃ ✭❜ ✲❃ ❝ ✲❃ ❜✮ ✲❃ ❆rr❛② ❛ ❜ ✲❃ ❬✭❛✱❝✮❪ ✲❃ ❆rr❛② ❛ ❜ ✿✿ ✭■① ❛✱ ■① ❜✮ ❂❃ ✭❛✱❛✮ ✲❃ ✭❛ ✲❃ ❜✮ ✲❃ ❆rr❛② ❜ ❝ ✲❃ ❆rr❛② ❛ ❝
✭✴✴✮ ❛❝❝✉♠
✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
❂❃ ❆rr❛② ❛ ❜ ❂ ✳✳✳ ❂❃ ❂❃ ❂❃ ❂❃ ❂❃ ❂❃ ❂❃ ❂❃
❊q ❜✮ ❖r❞ ❜✮ ❙❤♦✇ ❛✱ ❙❤♦✇ ❜✮ ❘❡❛❞ ❛✱ ❘❡❛❞ ❜✮
❂❃ ❂❃ ❂❃ ❂❃
❋✉♥❝t♦r ✭❆rr❛② ❛✮ ❊q ✭❆rr❛② ❛ ❜✮ ❖r❞ ✭❆rr❛② ❛ ❜✮ ❙❤♦✇ ✭❆rr❛② ❛ ❜✮ ❘❡❛❞ ✭❆rr❛② ❛ ❜✮
✷✷✶
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✷✷✷
➹❐➚➶➚ ✶✻✳
❒➚ÑÑ➮➶Û
❍❛s❦❡❧❧ îáåñïå÷èâàåò èíäåêñèðóåìûå ìàññèâû✱ êîòîðûå ìîæíî ðàññìàòðèâàòü êàê ôóíêöèè✱ ÷üè îáëàñòè îïðåäåëåíèÿ èçîìîðôíû ñîïðèêàñàþùèìñÿ ïîäìíîæåñòâàì öåëûõ ÷èñåë✳ Ôóíêöèè✱ îãðàíè÷åííûå òàêèì îáðàçîì✱ ìîæíî ýôôåêòèâíî ðåàëèçîâàòü❀ â ÷àñòíîñòè✱ ïðîãðàììèñò ìîæåò îæèäàòü ðàçóìíî áûñòðîãî äîñòóïà ê êîìïîíåíòàì✳ ×òîáû ãàðàíòèðîâàòü âîçìîæíîñòü òàêîé ðåàëèçàöèè✱ ìàññèâû îáðàáàòûâàþòñÿ êàê äàííûå✱ à íå êàê îáû÷íûå ôóíêöèè✳ Òàê êàê áîëüøèíñòâî ôóíêöèé ìàññèâà çàòðàãèâàþò êëàññ ■①✱ ýòîò ìîäóëü ýêñïîðòèðóåòñÿ èç ❆rr❛②✱ ÷òîáû íå áûëî íåîáõîäèìîñòè ìîäóëÿì èìïîðòèðîâàòü è ❆rr❛②✱ è ■①✳ ✶✻✳✶
Ñîçäàíèå ìàññèâîâ
➴ñëè ❛ ✖ òèï èíäåêñà✱ à ❜ ✖ ëþáîé òèï✱ òèï ìàññèâîâ ñ èíäåêñàìè â ❛ è ýëåìåíòàìè â ❜ çàïèñûâàåòñÿ òàê✿ ❆rr❛② ❛ ❜✳ ❒àññèâ ìîæåò áûòü ñîçäàí ñ ïîìîùüþ ôóíêöèè ❛rr❛②✳ Ïåðâûì àðãóìåíòîì ❛rr❛② ÿâëÿåòñÿ ïàðà ãðàíèö✱ êàæäàÿ èç êîòîðûõ èìååò òèï èíäåêñà ìàññèâà✳ Ýòè ãðàíèöû ÿâëÿþòñÿ ñîîòâåòñòâåííî íàèìåíüøèì è íàèáîëüøèì èíäåêñàìè â ìàññèâå✳ ❮àïðèìåð✱ âåêòîð ñ íà÷àëîì â ✶ äëèíû ✶✵ èìååò ãðàíèöû ✭✶✱✶✵✮✱ à ìàòðèöà ✶✵ íà ✶✵ ñ íà÷àëîì â ✶ èìååò ãðàíèöû ✭✭✶✱✶✮✱✭✶✵✱✶✵✮✮✳ ➶òîðûì àðãóìåíòîì ❛rr❛② ÿâëÿåòñÿ ñïèñîê àññîöèàöèé âèäà ✭èíäåêñ✱ çíà÷åíèå✮✳ ❰áû÷íî ýòîò ñïèñîê âûðàæåí â âèäå îïèñàíèÿ ýëåìåíòîâ✳ ➚ññîöèàöèÿ ✭✐✱ ①✮ îïðåäåëÿåò✱ ÷òî çíà÷åíèåì ìàññèâà ïî èíäåêñó ✐ ÿâëÿåòñÿ ①✳ ❒àññèâ íå îïðåäåëåí ✭ò✳å✳ ⊥✮✱ åñëè êàêîé✲íèáóäü èíäåêñ â ñïèñêå íàõîäèòñÿ âíå ãðàíèö✳ ➴ñëè êàêèå✲íèáóäü äâå àññîöèàöèè â ñïèñêå èìåþò îäèí è òîò æå èíäåêñ✱ çíà÷åíèå ïî ýòîìó èíäåêñó íå îïðåäåëåíî ✭ò✳å✳ ⊥✮✳ Òàê êàê èíäåêñû äîëæíû áûòü ïðîâåðåíû íà íàëè÷èå ýòèõ îøèáîê✱ ❛rr❛② ÿâëÿåòñÿ ñòðîãèì ïî àðãóìåíòó ãðàíèö è ïî èíäåêñàì ñïèñêà àññîöèàöèé✱ íî íå ÿâëÿåòñÿ ñòðîãèì ïî çíà÷åíèÿì✳ Òàêèì îáðàçîì✱ âîçìîæíû òàêèå ðåêóððåíòíûå îòíîøåíèÿ✿ ❛ ❂ ❛rr❛② ✭✶✱✶✵✵✮ ✭✭✶✱✶✮ ✿ ❬✭✐✱ ✐ ✯ ❛✦✭✐✲✶✮✮ ⑤ ✐ ❁✲ ❬✷✳✳✶✵✵❪❪✮
❮å êàæäûé èíäåêñ â ïðåäåëàõ ãðàíèö ìàññèâà îáÿçàí ïîÿâèòüñÿ â ñïèñêå àññîöèàöèé✱ íî çíà÷åíèÿ✱ ñâÿçàííûå ñ èíäåêñàìè✱ êîòîðûõ íåò â ñïèñêå✱ áóäóò íå îïðåäåëåíû ✭ò✳å✳ ⊥✮✳ ❮à ðèñ✳ ✶✻✳✶ èçîáðàæåíû íåêîòîðûå ïðèìåðû✱ êîòîðûå èñïîëüçóþò êîíñòðóêòîð ❛rr❛②✳ ❰ïåðàòîð ✭✦✮ îáîçíà÷àåò äîñòóï ê ýëåìåíòàì ìàññèâà ïî èíäåêñó ✭îïåðàöèÿ èíäåêñàöèè ìàññèâà✮✳ Ôóíêöèÿ ❜♦✉♥❞s✱ áóäó÷è ïðèìåíåííîé ê ìàññèâó✱ âîçâðàùàåò åãî ãðàíèöû✳ Ôóíêöèè ✐♥❞✐❝❡s✱ ❡❧❡♠s è ❛ss♦❝s✱ áóäó÷è ïðèìåíåííûìè ê ìàññèâó✱ âîçâðàùàþò ñîîòâåòñòâåííî ñïèñêè èíäåêñîâ✱ ýëåìåíòîâ èëè àññîöèàöèé â ïîðÿäêå âîçðàñòàíèÿ èõ èíäåêñîâ✳ ❒àññèâ ìîæíî ñîçäàòü èç ïàðû ãðàíèö è ñïèñêà çíà÷åíèé â ïîðÿäêå âîçðàñòàíèÿ èõ èíäåêñîâ✱ èñïîëüçóÿ ôóíêöèþ ❧✐st❆rr❛②✳ ➴ñëè â êàêîì✲ëèáî èçìåðåíèè íèæíÿÿ ãðàíèöà áîëüøå ÷åì âåðõíÿÿ ãðàíèöà✱ òî òàêîé ìàññèâ äîïóñòèì✱ íî îí ïóñò✳ ➮íäåêñàöèÿ ïóñòîãî ìàññèâà âñåãäà ïðèâîäèò ê îøèáêå
✶✻✳✷✳
➘❰➪➚➶❰×❮Û➴ ❰➪❮❰➶❐➴❮➮ß ❒➚ÑÑ➮➶❰➶
✷✷✸
✲✲ ❒àñøòàáèðîâàíèå ìàññèâà ÷èñåë ñ ïîìîùüþ çàäàííîãî ÷èñëà✿ s❝❛❧❡ ✿✿ ✭◆✉♠ ❛✱ ■① ❜✮ ❂❃ ❛ ✲❃ ❆rr❛② ❜ ❛ ✲❃ ❆rr❛② ❜ ❛ s❝❛❧❡ ① ❛ ❂ ❛rr❛② ❜ ❬✭✐✱ ❛✦✐ ✯ ①✮ ⑤ ✐ ❁✲ r❛♥❣❡ ❜❪ ✇❤❡r❡ ❜ ❂ ❜♦✉♥❞s ❛ ✲✲ ➮íâåðòèðîâàíèå ✐♥✈P❡r♠ ✿✿ ✭■① ❛✮ ✐♥✈P❡r♠ ❛ ❂ ❛rr❛② ✇❤❡r❡
ìàññèâà✱ êîòîðûé ñîäåðæèò ïåðåñòàíîâêó ñâîèõ èíäåêñîâ ❂❃ ❆rr❛② ❛ ❛ ✲❃ ❆rr❛② ❛ ❛ ❜ ❬✭❛✦✐✱ ✐✮ ⑤ ✐ ❁✲ r❛♥❣❡ ❜❪ ❜ ❂ ❜♦✉♥❞s ❛
✲✲ Ñêàëÿðíîå ïðîèçâåäåíèå äâóõ âåêòîðîâ ✐♥♥❡r ✿✿ ✭■① ❛✱ ◆✉♠ ❜✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❆rr❛② ❛ ❜ ✲❃ ❜ ✐♥♥❡r ✈ ✇ ❂ ✐❢ ❜ ❂❂ ❜♦✉♥❞s ✇ t❤❡♥ s✉♠ ❬✈✦✐ ✯ ✇✦✐ ⑤ ✐ ❁✲ r❛♥❣❡ ❜❪ ❡❧s❡ ❡rr♦r ✧ìàññèâû íå ïîäõîäÿò äëÿ ñêàëÿðíîãî ïðîèçâåäåíèÿ✧ ✇❤❡r❡ ❜ ❂ ❜♦✉♥❞s ✈
Ðèñ✳ ✶✻✳✶✿ Ïðèìåðû ìàññèâîâ âûõîäà çà ãðàíèöû ìàññèâà✱ íî ❜♦✉♥❞s ïî✲ïðåæíåìó ñîîáùàåò ãðàíèöû✱ ñ êîòîðûìè ìàññèâ áûë ñîçäàí✳ ✶✻✳✶✳✶
❮àêîïëåííûå ìàññèâû
➘ðóãàÿ ôóíêöèÿ ñîçäàíèÿ ìàññèâà✱ ❛❝❝✉♠❆rr❛②✱ îñëàáëÿåò îãðàíè÷åíèå✱ ïðè êîòîðîì äàííûé èíäåêñ ìîæåò ïîÿâëÿòüñÿ íå áîëåå îäíîãî ðàçà â ñïèñêå àññîöèàöèé✱ èñïîëüçóÿ ôóíêöèþ íàêîïëåíèÿ✱ êîòîðàÿ îáúåäèíÿåò çíà÷åíèÿ àññîöèàöèé ñ îäíèì è òåì æå èíäåêñîì✳ Ïåðâûì àðãóìåíòîì ❛❝❝✉♠❆rr❛② ÿâëÿåòñÿ ôóíêöèÿ íàêîïëåíèÿ❀ âòîðûì ✖ íà÷àëüíîå çíà÷åíèå❀ îñòàâøèåñÿ äâà àðãóìåíòà ÿâëÿþòñÿ ñîîòâåòñòâåííî ïàðîé ãðàíèö è ñïèñêîì àññîöèàöèé✱ êàê è äëÿ ôóíêöèè ❛rr❛② ✳ ❮àïðèìåð✱ ïðè çàäàííîì ñïèñêå çíà÷åíèé íåêîòîðîãî òèïà èíäåêñà✱ ❤✐st ñîçäàåò ãèñòîãðàììó ÷èñëà âõîæäåíèé êàæäîãî èíäåêñà â ïðåäåëàõ óêàçàííîãî äèàïàçîíà✿ ❤✐st ✿✿ ✭■① ❛✱ ◆✉♠ ❜✮ ❂❃ ✭❛✱❛✮ ✲❃ ❬❛❪ ✲❃ ❆rr❛② ❛ ❜ ❤✐st ❜♥❞s ✐s ❂ ❛❝❝✉♠❆rr❛② ✭✰✮ ✵ ❜♥❞s ❬✭✐✱ ✶✮ ⑤ ✐❁✲✐s✱ ✐♥❘❛♥❣❡ ❜♥❞s ✐❪
➴ñëè ôóíêöèÿ íàêîïëåíèÿ ÿâëÿåòñÿ ñòðîãîé✱ òî ❛❝❝✉♠❆rr❛② ÿâëÿåòñÿ ñòðîãîé â îòíîøåíèè çíà÷åíèé✱ òàêæå êàê è â îòíîøåíèè èíäåêñîâ✱ â ñïèñêå àññîöèàöèé✳ Òàêèì îáðàçîì✱ â îòëè÷èå îò îáû÷íûõ ìàññèâîâ✱ íàêîïëåííûå ìàññèâû íå äîëæíû áûòü â îáùåì ñëó÷àå ðåêóðñèâíûìè✳ ✶✻✳✷
➘îáàâî÷íûå îáíîâëåíèÿ ìàññèâîâ
❰ïåðàòîð ✭✴✴✮ ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ ìàññèâ è ñïèñîê ïàð è âîçâðàùàåò ìàññèâ✱ èäåíòè÷íûé ëåâîìó àðãóìåíòó✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî îí îáíîâëåí
✷✷✹
➹❐➚➶➚ ✶✻✳
❒➚ÑÑ➮➶Û
✲✲ Ïðÿìîóãîëüíûé ïîäìàññèâ s✉❜❆rr❛② ✿✿ ✭■① ❛✮ ❂❃ ✭❛✱❛✮ ✲❃ ❆rr❛② ❛ ❜ ✲❃ ❆rr❛② ❛ ❜ s✉❜❆rr❛② ❜♥❞s ❂ ✐①♠❛♣ ❜♥❞s ✭❭✐✲❃✐✮ ✲✲ Ñòðîêà ìàòðèöû r♦✇ ✿✿ ✭■① ❛✱ ■① ❜✮ ❂❃ ❛ ✲❃ ❆rr❛② ✭❛✱❜✮ ❝ ✲❃ ❆rr❛② ❜ ❝ r♦✇ ✐ ① ❂ ✐①♠❛♣ ✭❧✬✱✉✬✮ ✭❭❥✲❃✭✐✱❥✮✮ ① ✇❤❡r❡ ✭✭❴✱❧✬✮✱✭❴✱✉✬✮✮ ❂ ❜♦✉♥❞s ① ✲✲ ➘èàãîíàëü ìàòðèöû ✭ìàòðèöà ïðåäïîëàãàåòñÿ êâàäðàòíàÿ✮ ❞✐❛❣ ✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ✭❛✱❛✮ ❜ ✲❃ ❆rr❛② ❛ ❜ ❞✐❛❣ ① ❂ ✐①♠❛♣ ✭❧✱✉✮ ✭❭✐✲❃✭✐✱✐✮✮ ① ✇❤❡r❡ ✭✭❧✱❴✮✱✭✉✱❴✮✮ ❂ ❜♦✉♥❞s ① ✲✲ Ïðîåêöèÿ ïåðâûõ êîìïîíåíò ìàññèâà ïàð ❢✐rst❆rr❛② ✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ✭❜✱❝✮ ✲❃ ❆rr❛② ❛ ❜ ❢✐rst❆rr❛② ❂ ❢♠❛♣ ✭❭✭①✱②✮✲❃①✮
Ðèñ✳ ✶✻✳✷✿ Ïðèìåðû ïðîèçâîäíûõ ìàññèâîâ àññîöèàöèÿìè èç ïðàâîãî àðãóìåíòà✳ ✭✃àê è ñ ôóíêöèåé ❛rr❛②✱ èíäåêñû â ñïèñêå àññîöèàöèé äîëæíà áûòü óíèêàëüíû ïî îòíîøåíèþ ê îáíîâëÿåìûì ýëåìåíòàì✱ êîòîðûå îïðåäåëåíû✳✮ ❮àïðèìåð✱ åñëè ♠ ✖ ìàòðèöà ♥ íà ♥ ñ íà÷àëîì â ✶✱ òî ♠✴✴❬✭✭✐✱✐✮✱ ✵✮ ⑤ ✐ ❁✲ ❬✶✳✳♥❪❪ ✖ òà æå ñàìàÿ ìàòðèöà✱ ó êîòîðîé äèàãîíàëü çàïîëíåíà íóëÿìè✳ ❛❝❝✉♠ f ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ ìàññèâ è ñïèñîê àññîöèàöèé è íàêàïëèâàåò ïàðû èç ñïèñêà â ìàññèâ ñ ïîìîùüþ ôóíêöèè íàêîïëåíèÿ f ✳ Òàêèì îáðàçîì✱ ❛❝❝✉♠❆rr❛② ìîæíî îïðåäåëèòü ÷åðåç ❛❝❝✉♠✿ ❛❝❝✉♠❆rr❛② ❢ ③ ❜ ❂ ❛❝❝✉♠ ❢ ✭❛rr❛② ❜ ❬✭✐✱ ③✮ ⑤ ✐ ❁✲ r❛♥❣❡ ❜❪✮
✶✻✳✸
Ïðîèçâîäíûå ìàññèâû
Ôóíêöèè ❢♠❛♣ è ✐①♠❛♣ ïîëó÷àþò íîâûå ìàññèâû èç ñóùåñòâóþùèõ❀ èõ ìîæíî ðàññìàòðèâàòü êàê îáåñïå÷åíèå êîìïîçèöèè ôóíêöèé ñëåâà è ñïðàâà ñîîòâåòñòâåííî✱ ñ îòîáðàæåíèåì✱ êîòîðîå ðåàëèçóåò èñõîäíûé ìàññèâ✳ Ôóíêöèÿ ❢♠❛♣ ïðåîáðàçîâûâàåò çíà÷åíèÿ ìàññèâà✱ â òî âðåìÿ êàê ✐①♠❛♣ ïîçâîëÿåò âûïîëíÿòü ïðåîáðàçîâàíèÿ íà èíäåêñàõ ìàññèâà✳ ❮à ðèñ✳ ✶✻✳✷ èçîáðàæåíû íåêîòîðûå ïðèìåðû✳ ✶✻✳✹
➪èáëèîòåêà
❆rr❛②
♠♦❞✉❧❡ ❆rr❛② ✭ ♠♦❞✉❧❡ ■①✱ ✲✲ ýêñïîðòèðîâàòü âåñü ■① ❆rr❛②✱ ❛rr❛②✱ ❧✐st❆rr❛②✱ ✭✦✮✱ ❜♦✉♥❞s✱ ✐♥❞✐❝❡s✱ ❡❧❡♠s✱ ❛ss♦❝s✱ ❛❝❝✉♠❆rr❛②✱ ✭✴✴✮✱ ❛❝❝✉♠✱ ✐①♠❛♣ ✮ ✇❤❡r❡
✶✻✳✹✳
➪➮➪❐➮❰Ò➴✃➚
❆❘❘❆❨
✐♠♣♦rt ■① ✐♠♣♦rt ▲✐st✭ ✭❭❭✮ ✮ ✐♥❢✐①❧ ✾
✦✱ ✴✴
❞❛t❛ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ❂ ▼❦❆rr❛② ✭❛✱❛✮ ✭❛ ✲❃ ❜✮ ❞❡r✐✈✐♥❣ ✭✮ ❛rr❛② ✿✿ ✭■① ❛✮ ❂❃ ✭❛✱❛✮ ✲❃ ❬✭❛✱❜✮❪ ✲❃ ❆rr❛② ❛ ❜ ❛rr❛② ❜ ✐✈s ❂ ✐❢ ❛♥❞ ❬✐♥❘❛♥❣❡ ❜ ✐ ⑤ ✭✐✱❴✮ ❁✲ ✐✈s❪ t❤❡♥ ▼❦❆rr❛② ❜ ✭❭❥ ✲❃ ❝❛s❡ ❬✈ ⑤ ✭✐✱✈✮ ❁✲ ✐✈s✱ ✐ ❂❂ ❥❪ ♦❢ ❬✈❪ ✲❃ ✈ ❬❪ ✲❃ ❡rr♦r ✧❆rr❛②✳✦✿ ❭ ❭íåîïðåäåëåííûé ýëåìåíò ìàññèâà✧ ❴ ✲❃ ❡rr♦r ✧❆rr❛②✳✦✿ ❭ ❭ìíîæåñòâåííî îïðåäåëåííûé ýëåìåíò ìàññèâà✧✮ ❡❧s❡ ❡rr♦r ✧❆rr❛②✳❛rr❛②✿ àññîöèàöèÿ ìàññèâà íàõîäèòñÿ çà ïðåäåëàìè äèàïàçîíà✧ ❧✐st❆rr❛② ❧✐st❆rr❛② ❜ ✈s
✿✿ ✭■① ❛✮ ❂❃ ✭❛✱❛✮ ✲❃ ❬❜❪ ✲❃ ❆rr❛② ❛ ❜ ❂ ❛rr❛② ❜ ✭③✐♣❲✐t❤ ✭❭ ❛ ❜ ✲❃ ✭❛✱❜✮✮ ✭r❛♥❣❡ ❜✮ ✈s✮
✭✦✮ ✭✦✮ ✭▼❦❆rr❛② ❴ ❢✮
✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❛ ✲❃ ❜ ❂ ❢
❜♦✉♥❞s ❜♦✉♥❞s ✭▼❦❆rr❛② ❜ ❴✮
✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ✭❛✱❛✮ ❂ ❜
✐♥❞✐❝❡s ✐♥❞✐❝❡s
✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❬❛❪ ❂ r❛♥❣❡ ✳ ❜♦✉♥❞s
❡❧❡♠s ❡❧❡♠s ❛
✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❬❜❪ ❂ ❬❛✦✐ ⑤ ✐ ❁✲ ✐♥❞✐❝❡s ❛❪
❛ss♦❝s ❛ss♦❝s ❛
✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❬✭❛✱❜✮❪ ❂ ❬✭✐✱ ❛✦✐✮ ⑤ ✐ ❁✲ ✐♥❞✐❝❡s ❛❪
✭✴✴✮ ❛ ✴✴ ♥❡✇❴✐✈s
✿✿ ✭■① ❛✮ ❂❃ ❆rr❛② ❛ ❜ ✲❃ ❬✭❛✱❜✮❪ ✲❃ ❆rr❛② ❛ ❜ ❂ ❛rr❛② ✭❜♦✉♥❞s ❛✮ ✭♦❧❞❴✐✈s ✰✰ ♥❡✇❴✐✈s✮ ✇❤❡r❡ ♦❧❞❴✐✈s ❂ ❬✭✐✱❛✦✐✮ ⑤ ✐ ❁✲ ✐♥❞✐❝❡s ❛✱ ✐ ❵♥♦t❊❧❡♠❵ ♥❡✇❴✐s❪ ♥❡✇❴✐s ❂ ❬✐ ⑤ ✭✐✱❴✮ ❁✲ ♥❡✇❴✐✈s❪
❛❝❝✉♠
✿✿ ✭■① ❛✮ ❂❃ ✭❜ ✲❃ ❝ ✲❃ ❜✮ ✲❃ ❆rr❛② ❛ ❜ ✲❃ ❬✭❛✱❝✮❪ ✲❃ ❆rr❛② ❛ ❜ ❂ ❢♦❧❞❧ ✭❭❛ ✭✐✱✈✮ ✲❃ ❛ ✴✴ ❬✭✐✱❢ ✭❛✦✐✮ ✈✮❪✮
❛❝❝✉♠ ❢ ❛❝❝✉♠❆rr❛② ❛❝❝✉♠❆rr❛② ❢ ③ ❜ ✐①♠❛♣ ✐①♠❛♣ ❜ ❢ ❛
✿✿ ✭■① ❛✮ ❂❃ ✭❜ ✲❃ ❝ ✲❃ ❜✮ ✲❃ ❜ ✲❃ ✭❛✱❛✮ ✲❃ ❬✭❛✱❝✮❪ ✲❃ ❆rr❛② ❛ ❜ ❂ ❛❝❝✉♠ ❢ ✭❛rr❛② ❜ ❬✭✐✱③✮ ⑤ ✐ ❁✲ r❛♥❣❡ ❜❪✮ ✿✿ ✭■① ❛✱ ■① ❜✮ ❂❃ ✭❛✱❛✮ ✲❃ ✭❛ ✲❃ ❜✮ ✲❃ ❆rr❛② ❜ ❝ ✲❃ ❆rr❛② ❛ ❝ ❂ ❛rr❛② ❜ ❬✭✐✱ ❛ ✦ ❢ ✐✮ ⑤ ✐ ❁✲ r❛♥❣❡ ❜❪
✐♥st❛♥❝❡ ✭■① ❛✮ ❂❃ ❋✉♥❝t♦r ✭❆rr❛② ❛✮ ✇❤❡r❡ ❢♠❛♣ ❢♥ ✭▼❦❆rr❛② ❜ ❢✮ ❂ ▼❦❆rr❛② ❜ ✭❢♥ ✳ ❢✮
✷✷✺
✷✷✻ ✐♥st❛♥❝❡ ✭■① ❛✱ ❊q ❜✮ ❂❃ ❊q ✭❆rr❛② ❛ ❜✮ ❛ ❂❂ ❛✬ ❂ ❛ss♦❝s ❛ ❂❂ ❛ss♦❝s ❛✬ ✐♥st❛♥❝❡ ✭■① ❛✱ ❖r❞ ❜✮ ❂❃ ❖r❞ ✭❆rr❛② ❛ ❜✮ ❛ ❁❂ ❛✬ ❂ ❛ss♦❝s ❛ ❁❂ ❛ss♦❝s ❛✬
➹❐➚➶➚ ✶✻✳
❒➚ÑÑ➮➶Û
✇❤❡r❡ ✇❤❡r❡
✐♥st❛♥❝❡ ✭■① ❛✱ ❙❤♦✇ ❛✱ ❙❤♦✇ ❜✮ ❂❃ ❙❤♦✇ ✭❆rr❛② ❛ ❜✮ ✇❤❡r❡ s❤♦✇sPr❡❝ ♣ ❛ ❂ s❤♦✇P❛r❡♥ ✭♣ ❃ ❛rrPr❡❝✮ ✭ s❤♦✇❙tr✐♥❣ ✧❛rr❛② ✧ ✳ s❤♦✇sPr❡❝ ✭❛rrPr❡❝✰✶✮ ✭❜♦✉♥❞s ❛✮ ✳ s❤♦✇❈❤❛r ✬ ✬ ✳ s❤♦✇sPr❡❝ ✭❛rrPr❡❝✰✶✮ ✭❛ss♦❝s ❛✮ ✮ ✐♥st❛♥❝❡ ✭■① ❛✱ ❘❡❛❞ ❛✱ ❘❡❛❞ ❜✮ ❂❃ ❘❡❛❞ ✭❆rr❛② ❛ ❜✮ ✇❤❡r❡ r❡❛❞sPr❡❝ ♣ ❂ r❡❛❞P❛r❡♥ ✭♣ ❃ ❛rrPr❡❝✮ ✭❭r ✲❃ ❬ ✭❛rr❛② ❜ ❛s✱ ✉✮ ⑤ ✭✧❛rr❛②✧✱s✮ ❁✲ ❧❡① r✱ ✭❜✱t✮ ❁✲ r❡❛❞sPr❡❝ ✭❛rrPr❡❝✰✶✮ s✱ ✭❛s✱✉✮ ❁✲ r❡❛❞sPr❡❝ ✭❛rrPr❡❝✰✶✮ t ❪✮ ✲✲ Ïðèîðèòåò ôóíêöèè ✬❛rr❛②✬ ✲✲✲ òîò æå✱ ÷òî è ïðèîðèòåò ñàìîãî ïðèìåíåíèÿ ôóíêöèè ❛rrPr❡❝ ❂ ✶✵
➹ëàâà ✶✼
Óòèëèòû ðàáîòû ñî ñïèñêàìè ♠♦❞✉❧❡ ▲✐st ✭ ❡❧❡♠■♥❞❡①✱ ❡❧❡♠■♥❞✐❝❡s✱ ❢✐♥❞✱ ❢✐♥❞■♥❞❡①✱ ❢✐♥❞■♥❞✐❝❡s✱ ♥✉❜✱ ♥✉❜❇②✱ ❞❡❧❡t❡✱ ❞❡❧❡t❡❇②✱ ✭❭❭✮✱ ❞❡❧❡t❡❋✐rsts❇②✱ ✉♥✐♦♥✱ ✉♥✐♦♥❇②✱ ✐♥t❡rs❡❝t✱ ✐♥t❡rs❡❝t❇②✱ ✐♥t❡rs♣❡rs❡✱ tr❛♥s♣♦s❡✱ ♣❛rt✐t✐♦♥✱ ❣r♦✉♣✱ ❣r♦✉♣❇②✱ ✐♥✐ts✱ t❛✐❧s✱ ✐sPr❡❢✐①❖❢✱ ✐s❙✉❢❢✐①❖❢✱ ♠❛♣❆❝❝✉♠▲✱ ♠❛♣❆❝❝✉♠❘✱ s♦rt✱ s♦rt❇②✱ ✐♥s❡rt✱ ✐♥s❡rt❇②✱ ♠❛①✐♠✉♠❇②✱ ♠✐♥✐♠✉♠❇②✱ ❣❡♥❡r✐❝▲❡♥❣t❤✱ ❣❡♥❡r✐❝❚❛❦❡✱ ❣❡♥❡r✐❝❉r♦♣✱ ❣❡♥❡r✐❝❙♣❧✐t❆t✱ ❣❡♥❡r✐❝■♥❞❡①✱ ❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡✱ ③✐♣✹✱ ③✐♣✺✱ ③✐♣✻✱ ③✐♣✼✱ ③✐♣❲✐t❤✹✱ ③✐♣❲✐t❤✺✱ ③✐♣❲✐t❤✻✱ ③✐♣❲✐t❤✼✱ ✉♥③✐♣✹✱ ✉♥③✐♣✺✱ ✉♥③✐♣✻✱ ✉♥③✐♣✼✱ ✉♥❢♦❧❞r✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ✲✲ ❬❪✭✭✿✮✱ ❬❪✮✱ ✲✲ Ýòî âñòðîåííûé ñèíòàêñèñ ♠❛♣✱ ✭✰✰✮✱ ❝♦♥❝❛t✱ ❢✐❧t❡r✱ ❤❡❛❞✱ ❧❛st✱ t❛✐❧✱ ✐♥✐t✱ ♥✉❧❧✱ ❧❡♥❣t❤✱ ✭✦✦✮✱ ❢♦❧❞❧✱ ❢♦❧❞❧✶✱ s❝❛♥❧✱ s❝❛♥❧✶✱ ❢♦❧❞r✱ ❢♦❧❞r✶✱ s❝❛♥r✱ s❝❛♥r✶✱ ✐t❡r❛t❡✱ r❡♣❡❛t✱ r❡♣❧✐❝❛t❡✱ ❝②❝❧❡✱ t❛❦❡✱ ❞r♦♣✱ s♣❧✐t❆t✱ t❛❦❡❲❤✐❧❡✱ ❞r♦♣❲❤✐❧❡✱ s♣❛♥✱ ❜r❡❛❦✱ ❧✐♥❡s✱ ✇♦r❞s✱ ✉♥❧✐♥❡s✱ ✉♥✇♦r❞s✱ r❡✈❡rs❡✱ ❛♥❞✱ ♦r✱ ❛♥②✱ ❛❧❧✱ ❡❧❡♠✱ ♥♦t❊❧❡♠✱ ❧♦♦❦✉♣✱ s✉♠✱ ♣r♦❞✉❝t✱ ♠❛①✐♠✉♠✱ ♠✐♥✐♠✉♠✱ ❝♦♥❝❛t▼❛♣✱ ③✐♣✱ ③✐♣✸✱ ③✐♣❲✐t❤✱ ③✐♣❲✐t❤✸✱ ✉♥③✐♣✱ ✉♥③✐♣✸ ✮ ✇❤❡r❡ ✐♥❢✐① ✺ ❭❭
✷✷✼
✷✷✽ ❡❧❡♠■♥❞❡① ❡❧❡♠■♥❞✐❝❡s ❢✐♥❞ ❢✐♥❞■♥❞❡① ❢✐♥❞■♥❞✐❝❡s ♥✉❜ ♥✉❜❇② ❞❡❧❡t❡ ❞❡❧❡t❡❇② ✭❭❭✮ ❞❡❧❡t❡❋✐rsts❇② ✉♥✐♦♥ ✉♥✐♦♥❇②
➹❐➚➶➚ ✶✼✳
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❊q ❊q ✭❛ ✭❛ ✭❛ ❊q ✭❛ ❊q ✭❛ ❊q ✭❛ ❊q ✭❛
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ▼❛②❜❡ ■♥t ❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬■♥t❪ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ▼❛②❜❡ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ▼❛②❜❡ ■♥t ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬■♥t❪ ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪
✷✷✾
✐♥t❡rs❡❝t ✐♥t❡rs❡❝t❇② ✐♥t❡rs♣❡rs❡ tr❛♥s♣♦s❡ ♣❛rt✐t✐♦♥ ❣r♦✉♣ ❣r♦✉♣❇② ✐♥✐ts t❛✐❧s ✐sPr❡❢✐①❖❢ ✐s❙✉❢❢✐①❖❢ ♠❛♣❆❝❝✉♠▲ ♠❛♣❆❝❝✉♠❘ ✉♥❢♦❧❞r s♦rt s♦rt❇② ✐♥s❡rt ✐♥s❡rt❇② ♠❛①✐♠✉♠❇② ♠✐♥✐♠✉♠❇② ❣❡♥❡r✐❝▲❡♥❣t❤ ❣❡♥❡r✐❝❚❛❦❡ ❣❡♥❡r✐❝❉r♦♣ ❣❡♥❡r✐❝❙♣❧✐t❆t ❣❡♥❡r✐❝■♥❞❡① ❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
③✐♣✹ ③✐♣✺ ③✐♣✻
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬✭❛✱❜✱❝✱❞✮❪ ✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬❡❪ ✲❃ ❬✭❛✱❜✱❝✱❞✱❡✮❪ ✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬❡❪ ✲❃ ❬❢❪ ✲❃ ❬✭❛✱❜✱❝✱❞✱❡✱❢✮❪ ✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬❡❪ ✲❃ ❬❢❪ ✲❃ ❬❣❪ ✲❃ ❬✭❛✱❜✱❝✱❞✱❡✱❢✱❣✮❪ ✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪ ✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✲❃❢✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪✲❃❬❢❪ ✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✲❃❢✲❃❣✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪✲❃❬❢❪✲❃❬❣❪ ✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✲❃❢✲❃❣✲❃❤✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪✲❃❬❢❪✲❃❬❣❪✲❃❬❤❪ ✿✿ ❬✭❛✱❜✱❝✱❞✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✮ ✿✿ ❬✭❛✱❜✱❝✱❞✱❡✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✱❬❡❪✮ ✿✿ ❬✭❛✱❜✱❝✱❞✱❡✱❢✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✱❬❡❪✱❬❢❪✮ ✿✿ ❬✭❛✱❜✱❝✱❞✱❡✱❢✱❣✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✱❬❡❪✱❬❢❪✱❬❣❪✮
③✐♣✼ ③✐♣❲✐t❤✹ ③✐♣❲✐t❤✺ ③✐♣❲✐t❤✻ ③✐♣❲✐t❤✼ ✉♥③✐♣✹ ✉♥③✐♣✺ ✉♥③✐♣✻ ✉♥③✐♣✼
❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❬❬❛❪❪ ✲❃ ❬❬❛❪❪ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ✭❬❛❪✱❬❛❪✮ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❬❛❪❪ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❬❛❪❪ ❬❛❪ ✲❃ ❬❬❛❪❪ ❬❛❪ ✲❃ ❬❬❛❪❪ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❇♦♦❧ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❇♦♦❧ ✭❛ ✲❃ ❜ ✲❃ ✭❛✱ ❝✮✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ✭❛✱ ❬❝❪✮ ✭❛ ✲❃ ❜ ✲❃ ✭❛✱ ❝✮✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ✭❛✱ ❬❝❪✮ ✭❜ ✲❃ ▼❛②❜❡ ✭❛✱❜✮✮ ✲❃ ❜ ✲❃ ❬❛❪ ❖r❞ ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❖r❞ ❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❬❛❪ ✲❃ ❛ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❬❛❪ ✲❃ ❛ ■♥t❡❣r❛❧ ❛ ❂❃ ❬❜❪ ✲❃ ❛ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❬❜❪ ✲❃ ❬❜❪ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❬❜❪ ✲❃ ❬❜❪ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❬❜❪ ✲❃ ✭❬❜❪✱❬❜❪✮ ■♥t❡❣r❛❧ ❛ ❂❃ ❬❜❪ ✲❃ ❛ ✲❃ ❜ ■♥t❡❣r❛❧ ❛ ❂❃ ❛ ✲❃ ❜ ✲❃ ❬❜❪
➶ ýòîé áèáëèîòåêå îïðåäåëåíû íåêîòîðûå ðåäêî èñïîëüçóåìûå îïåðàöèè íàä ñïèñêàìè✳
✷✸✵
➹❐➚➶➚ ✶✼✳
✶✼✳✶
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
➮íäåêñèðîâàíèå ñïèñêîâ
• ❡❧❡♠■♥❞❡① ✈❛❧ ❧✐st âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ✱ åñëè òàêîâûå èìåþòñÿ✱ ✈❛❧ â ❧✐st â âèäå ❏✉st ✐♥❞❡①✳ ◆♦t❤✐♥❣ âîçâðàùàåòñÿ✱ åñëè âûïîëíÿåòñÿ ♥♦t ✭✈❛❧ ❵❡❧❡♠❵ ❧✐st✮✳ • ❡❧❡♠■♥❞✐❝❡s ✈❛❧ ❧✐st ✈❛❧ â ❧✐st✳ • ❢✐♥❞
âîçâðàùàåò óïîðÿäî÷åííûé ñïèñîê èíäåêñîâ âõîæäåíèé
âîçâðàùàåò ïåðâûé ýëåìåíò ñïèñêà✱ êîòîðûé óäîâëåòâîðÿåò ïðåäèêàòó✱
èëè ◆♦t❤✐♥❣✱ åñëè íåò òàêîãî ýëåìåíòà✳ èíäåêñ✳
✶✼✳✷
❢✐♥❞■♥❞✐❝❡s
❢✐♥❞■♥❞❡①
âîçâðàùàåò ñîîòâåòñòâóþùèé
âîçâðàùàåò ñïèñîê âñåõ òàêèõ èíäåêñîâ✳
❰ïåðàöèè íàä ✏ìíîæåñòâàìè✑
▲✐st✳ ♥✉❜ ✭îçíà÷àåò ✏ñóùíîñòü✑✮ óäàëÿåò äóáëèðóþùèå ýëåìåíòû èç ñïèñêà✳ ❞❡❧❡t❡✱ ✭❭❭✮✱ ✉♥✐♦♥ è ✐♥t❡rs❡❝t ✭è èõ ❇②✲âàðèàíòû✮ ñîõðàíÿþò èíâàðèàíò✿ èõ ðåçóëüòàò íå ñîäåðæèò äóáëèêàòû✱ ïðè ➮ìååòñÿ ðÿä îïåðàöèé íàä ✏ìíîæåñòâàìè✑✱ îïðåäåëåííûå íàä òèïîì
óñëîâèè✱ ÷òî èõ ïåðâûé àðãóìåíò íå ñîäåðæèò äóáëèêàòû✳
• ♥✉❜
óäàëÿåò äóáëèðóþùèå ýëåìåíòû èç ñïèñêà✳ ❮àïðèìåð✿
♥✉❜ ❬✶✱✸✱✶✱✹✱✸✱✸❪ ❂ ❬✶✱✸✱✹❪ • ❞❡❧❡t❡ ①
óäàëÿåò ïåðâîå âõîæäåíèå
①
èç óêàçàííîãî â åãî àðãóìåíòå ñïèñêà✱
íàïðèìåð✱
❞❡❧❡t❡ ✬❛✬ ✧❜❛♥❛♥❛✧ ❂❂ ✧❜♥❛♥❛✧ • ✭❭❭✮ ÿâëÿåòñÿ ðàçíèöåé ñïèñêîâ ✭íåàññîöèàòèâíàÿ îïåðàöèÿ✮✳ ➶ ðåçóëüòàòå ①s ❭❭ ②s ïåðâîå âõîæäåíèå êàæäîãî ýëåìåíòà ②s ïîî÷åðåäíî ✭åñëè òàêîâûå èìåþòñÿ✮ óäàëåíû èç ①s✳ Òàêèì îáðàçîì✱ ✭①s ✰✰ ②s✮ ❭❭ ①s ❂❂ ②s✳ • ✉♥✐♦♥
ÿâëÿåòñÿ îáúåäèíåíèåì ñïèñêîâ✱ íàïðèìåð✱
✧❞♦❣✧ ❵✉♥✐♦♥❵ ✧❝♦✇✧ ❂❂ ✧❞♦❣❝✇✧ • ✐♥t❡rs❡❝t
ÿâëÿåòñÿ ïåðåñå÷åíèåì ñïèñêîâ✱ íàïðèìåð✱
❬✶✱✷✱✸✱✹❪ ❵✐♥t❡rs❡❝t❵ ❬✷✱✹✱✻✱✽❪ ❂❂ ❬✷✱✹❪
✶✼✳✸✳
✷✸✶
ÏÐ➴❰➪Ð➚➬❰➶➚❮➮ß ÑÏ➮Ñ✃❰➶
✶✼✳✸
Ïðåîáðàçîâàíèÿ ñïèñêîâ
• ✐♥t❡rs♣❡rs❡ s❡♣
âñòàâëÿåò
s❡♣
ìåæäó ýëåìåíòàìè óêàçàííîãî â åãî àðãóìåíòå
ñïèñêà✱ ❮àïðèìåð✱
✐♥t❡rs♣❡rs❡ ✬✱✬ ✧❛❜❝❞❡✧ ❂❂ ✧❛✱❜✱❝✱❞✱❡✧ • tr❛♥s♣♦s❡
ïåðåñòàâëÿåò ñòðîêè è ñòîëáöû ñâîåãî àðãóìåíòà✱ íàïðèìåð✱
tr❛♥s♣♦s❡ ❬❬✶✱✷✱✸❪✱❬✹✱✺✱✻❪❪ ❂❂ ❬❬✶✱✹❪✱❬✷✱✺❪✱❬✸✱✻❪❪ • ♣❛rt✐t✐♦♥
ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ ïðåäèêàò è ñïèñîê è âîçâðàùàåò
ïàðó ñïèñêîâ✿ ñîîòâåòñòâåííî òå ýëåìåíòû ñïèñêà✱ êîòîðûå óäîâëåòâîðÿþò✱ è òå✱ êîòîðûå íå óäîâëåòâîðÿþò ïðåäèêàòó✱ ò✳å✳✱
♣❛rt✐t✐♦♥ ♣ ①s ❂❂ ✭❢✐❧t❡r ♣ ①s✱ ❢✐❧t❡r ✭♥♦t ✳ ♣✮ ①s✮ • s♦rt
ðåàëèçóåò óñòîé÷èâûé àëãîðèòì ñîðòèðîâêè✱ çàäàííîé çäåñü â òåðìèíàõ
ôóíêöèè
✐♥s❡rt❇②✱
êîòîðàÿ âñòàâëÿåò îáúåêòû â ñïèñîê ñîãëàñíî óêàçàííîìó
îòíîøåíèþ óïîðÿäî÷èâàíèÿ✳
• ✐♥s❡rt ïîìåùàåò íîâûé ýëåìåíò â óïîðÿäî÷åííûé ñïèñîê ✭ýëåìåíòû ðàçìåùàþòñÿ ïî âîçðàñòàíèþ✮✳
• ❣r♦✉♣ ðàçäåëÿåò óêàçàííûé â åãî àðãóìåíòå ñïèñîê íà ñïèñîê ñïèñêîâ îäèíàêîâûõ✱ ñîñåäíèõ ýëåìåíòîâ✳ ❮àïðèìåð✱
❣r♦✉♣ ✧▼✐ss✐ss✐♣♣✐✧ ❂❂ ❬✧▼✧✱✧✐✧✱✧ss✧✱✧✐✧✱✧ss✧✱✧✐✧✱✧♣♣✧✱✧✐✧❪ • ✐♥✐ts âîçâðàùàåò ñïèñîê íà÷àëüíûõ ñåãìåíòîâ óêàçàííîãî â åãî àðãóìåíòå ñïèñêà✱ íàèáîëåå êîðîòêèå ✖ â íà÷àëå ñïèñêà✳
✐♥✐ts ✧❛❜❝✧ ❂❂ ❬✱✧❛✧✱✧❛❜✧✱✧❛❜❝✧❪ • t❛✐❧s
âîçâðàùàåò ñïèñîê âñåõ êîíå÷íûõ ñåãìåíòîâ óêàçàííîãî â åãî àðãóìåíòå
ñïèñêà✱ íàèáîëåå äëèííûå ✖ â íà÷àëå ñïèñêà✳
t❛✐❧s ✧❛❜❝✧ ❂❂ ❬✧❛❜❝✧✱ ✧❜❝✧✱ ✧❝✧✱❪ • ♠❛♣❆❝❝✉♠▲ ❢ s ❧ ïðèìåíÿåò ❢ ïî îòíîøåíèþ ê ✏ñîñòîÿíèÿ ✑ s è ê êàæäîìó ýëåìåíòó ❧ ïî î÷åðåäè✳
íàêàïëèâàþùåìó
àðãóìåíòó
• ♠❛♣❆❝❝✉♠❘ ïîõîæà íà ♠❛♣❆❝❝✉♠▲ çà èñêëþ÷åíèåì òîãî✱ ÷òî ñïèñîê îáðàáàòûâàåòñÿ ñïðàâà íàëåâî✱ à íå ñëåâà íàïðàâî✳
✷✸✷
✶✼✳✹
➹❐➚➶➚ ✶✼✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
✉♥❢♦❧❞r
Ôóíêöèÿ
✉♥❢♦❧❞r
ÿâëÿåòñÿ ✏äâîéñòâåííîé✑ ê
ê ñóììàðíîìó çíà÷åíèþ✱
✉♥❢♦❧❞r
❢♦❧❞r✿
òîãäà êàê
❢♦❧❞r
ïðèâîäèò ñïèñîê
ñòðîèò ñïèñîê èç ñëó÷àéíîãî çíà÷åíèÿ✳ ❮àïðèìåð✿
✐t❡r❛t❡ ❢ ❂❂ ✉♥❢♦❧❞r ✭❭① ✲❃ ❏✉st ✭①✱ ❢ ①✮✮ ➶ íåêîòîðûõ ñëó÷àÿõ
✉♥❢♦❧❞r
ìîæåò àííóëèðîâàòü îïåðàöèþ
❢♦❧❞r✿
✉♥❢♦❧❞r ❢✬ ✭❢♦❧❞r ❢ ③ ①s✮ ❂❂ ①s åñëè âûïîëíÿåòñÿ ñëåäóþùåå✿
❢✬ ✭❢ ① ②✮ ❂ ❏✉st ✭①✱②✮ ❢✬ ③ ❂ ◆♦t❤✐♥❣
✶✼✳✺
Ïðåäèêàòû
✐sPr❡❢✐①❖❢
è
✐s❙✉❢❢✐①❖❢
ïðîâåðÿþò✱ ÿâëÿåòñÿ ëè ïåðâûé àðãóìåíò ñîîòâåòñòâåííî
ïðèñòàâêîé èëè ñóôôèêñîì âòîðîãî àðãóìåíòà✳
✶✼✳✻
✏ ❇②✑✲îïåðàöèè
➶ ñîîòâåòñòâèè ñ ñîãëàøåíèåì✱ ïåðåãðóæåííûå ôóíêöèè èìåþò íåïåðåãðóæåííûå êîïèè✱ ÷üè èìåíà èìåþò ñóôôèêñ ✏ ❇②✑✳ ❮àïðèìåð✱ ôóíêöèÿ
♥✉❜ ìîãëà áûòü îïðåäåëåíà
ñëåäóþùèì îáðàçîì✿
♥✉❜ ♥✉❜ ❬❪ ♥✉❜ ✭①✿①s✮
✿✿ ✭❊q ❛✮ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❬❪ ❂ ① ✿ ♥✉❜ ✭❢✐❧t❡r ✭❭② ✲❃ ♥♦t ✭① ❂❂ ②✮✮ ①s✮
Òåì íå ìåíåå✱ ìåòîä ñðàâíåíèÿ íà ðàâåíñòâî íå ìîæåò ïîäõîäèòü ïîä âñå ñèòóàöèè✳ Ôóíêöèÿ✿
♥✉❜❇② ✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ♥✉❜❇② ❡q ❬❪ ❂ ❬❪ ♥✉❜❇② ❡q ✭①✿①s✮ ❂ ① ✿ ♥✉❜❇② ❡q ✭❢✐❧t❡r ✭❭② ✲❃ ♥♦t ✭❡q ① ②✮✮ ①s✮ ïîçâîëÿåò ïðîãðàììèñòó äîáàâëÿòü ñâîþ ñîáñòâåííóþ ïðîâåðêó ðàâåíñòâà✳ ✃îãäà ✏ ❇②✑✲ ôóíêöèÿ çàìåíÿåò êîíòåêñò
❊q
áèíàðíûì ïðåäèêàòîì✱ ïðåäïîëàãàåòñÿ✱ ÷òî ïðåäèêàò
îïðåäåëÿåò ýêâèâàëåíòíîñòü❀ êîãäà ✏ ❇②✑✲ôóíêöèÿ çàìåíÿåò êîíòåêñò
❖r❞
ïðåäèêàòîì✱ ïðåäïîëàãàåòñÿ✱ ÷òî ïðåäèêàò îïðåäåëÿåò íåñòðîãèé ïîðÿäîê✳
áèíàðíûì
✶✼✳✼✳
✏ ●❊◆❊❘■❈✑✲❰Ï➴Ð➚Ö➮➮
✷✸✸
✏ ❇②✑✲âàðèàíòàìè ÿâëÿþòñÿ ñëåäóþùèå✿
♥✉❜❇②✱ ❞❡❧❡t❡❇②✱ ❞❡❧❡t❡❋✐rsts❇② ✭❇②✲âàðèàíò ❭❭✮✱ ✉♥✐♦♥❇②✱ ✐♥t❡rs❡❝t❇②✱ ❣r♦✉♣❇②✱ s♦rt❇②✱ ✐♥s❡rt❇②✱ ♠❛①✐♠✉♠❇②✱ ♠✐♥✐♠✉♠❇②✳ ❡❧❡♠❇②✱ ïîòîìó ÷òî ❛♥② ✭❡q ①✮ âûïîëíÿåò òó æå ðàáîòó✱ ÷òî âûïîëíÿëà áû ❡❧❡♠❇② ❡q ①✳ ❮åáîëüøîå êîëè÷åñòâî ïåðåãðóæåííûõ ôóíêöèé ✭❡❧❡♠■♥❞❡①✱ ❡❧❡♠■♥❞✐❝❡s✱ ✐sPr❡❢✐①❖❢✱ ✐s❙✉❢❢✐①❖❢✮ ïîñ÷èòàëè íåäîñòàòî÷íî âàæíûìè äëÿ òîãî✱ ÷òîáû îíè èìåëè ✏ ❇②✑✲âàðèàíòû✳ ➪èáëèîòåêà íå îáåñïå÷èâàåò
✶✼✳✼
✏ ❣❡♥❡r✐❝✑✲îïåðàöèè
Ïðèñòàâêà
✏ ❣❡♥❡r✐❝✑
óêàçûâàåò
îáîáùåííîé âåðñèåé ôóíêöèè
❣❡♥❡r✐❝▲❡♥❣t❤
Pr❡❧✉❞❡
ôóíêöèþ✱
êîòîðàÿ
ÿâëÿåòñÿ
✳ ❮àïðèìåð✱
❧❡♥❣t❤✳
ÿâëÿþòñÿ
❣❡♥❡r✐❝❉r♦♣✱ ❣❡♥❡r✐❝❙♣❧✐t❆t✱ ❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡✳
✶✼✳✽
ïåðåãðóæåííóþ
✿✿ ■♥t❡❣r❛❧ ❛ ❂❃ ❬❜❪ ✲❃ ❛
ÿâëÿåòñÿ îáîáùåííîé âåðñèåé ✏ ❣❡♥❡r✐❝✑✲îïåðàöèÿìè
íà
ñëåäóþùèå✿
❣❡♥❡r✐❝■♥❞❡①
❣❡♥❡r✐❝▲❡♥❣t❤✱ ✭îáîáùåííàÿ
❣❡♥❡r✐❝❚❛❦❡✱ âåðñèÿ ✦✦✮✱
➘îïîëíèòåëüíûå ✏ ③✐♣✑✲îïåðàöèè
Pr❡❧✉❞❡ îáåñïå÷èâàåò
③✐♣✱ ③✐♣✸✱ ✉♥③✐♣✱ ✉♥③✐♣✸✱ ③✐♣❲✐t❤
è
③✐♣❲✐t❤✸✳
îáåñïå÷èâàåò òå æå òðè îïåðàöèè äëÿ ✹✱ ✺✱ ✻ è ✼ àðãóìåíòîâ✳
➪èáëèîòåêà ▲✐st
✷✸✹
➹❐➚➶➚ ✶✼✳
✶✼✳✾
➪èáëèîòåêà
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
▲✐st
♠♦❞✉❧❡ ▲✐st ✭ ❡❧❡♠■♥❞❡①✱ ❡❧❡♠■♥❞✐❝❡s✱ ❢✐♥❞✱ ❢✐♥❞■♥❞❡①✱ ❢✐♥❞■♥❞✐❝❡s✱ ♥✉❜✱ ♥✉❜❇②✱ ❞❡❧❡t❡✱ ❞❡❧❡t❡❇②✱ ✭❭❭✮✱ ❞❡❧❡t❡❋✐rsts❇②✱ ✉♥✐♦♥✱ ✉♥✐♦♥❇②✱ ✐♥t❡rs❡❝t✱ ✐♥t❡rs❡❝t❇②✱ ✐♥t❡rs♣❡rs❡✱ tr❛♥s♣♦s❡✱ ♣❛rt✐t✐♦♥✱ ❣r♦✉♣✱ ❣r♦✉♣❇②✱ ✐♥✐ts✱ t❛✐❧s✱ ✐sPr❡❢✐①❖❢✱ ✐s❙✉❢❢✐①❖❢✱ ♠❛♣❆❝❝✉♠▲✱ ♠❛♣❆❝❝✉♠❘✱ s♦rt✱ s♦rt❇②✱ ✐♥s❡rt✱ ✐♥s❡rt❇②✱ ♠❛①✐♠✉♠❇②✱ ♠✐♥✐♠✉♠❇②✱ ❣❡♥❡r✐❝▲❡♥❣t❤✱ ❣❡♥❡r✐❝❚❛❦❡✱ ❣❡♥❡r✐❝❉r♦♣✱ ❣❡♥❡r✐❝❙♣❧✐t❆t✱ ❣❡♥❡r✐❝■♥❞❡①✱ ❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡✱ ③✐♣✹✱ ③✐♣✺✱ ③✐♣✻✱ ③✐♣✼✱ ③✐♣❲✐t❤✹✱ ③✐♣❲✐t❤✺✱ ③✐♣❲✐t❤✻✱ ③✐♣❲✐t❤✼✱ ✉♥③✐♣✹✱ ✉♥③✐♣✺✱ ✉♥③✐♣✻✱ ✉♥③✐♣✼✱ ✉♥❢♦❧❞r✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ✲✲ ❬❪✭✭✿✮✱ ❬❪✮✱ ✲✲ Ýòî âñòðîåííûé ñèíòàêñèñ ♠❛♣✱ ✭✰✰✮✱ ❝♦♥❝❛t✱ ❢✐❧t❡r✱ ❤❡❛❞✱ ❧❛st✱ t❛✐❧✱ ✐♥✐t✱ ♥✉❧❧✱ ❧❡♥❣t❤✱ ✭✦✦✮✱ ❢♦❧❞❧✱ ❢♦❧❞❧✶✱ s❝❛♥❧✱ s❝❛♥❧✶✱ ❢♦❧❞r✱ ❢♦❧❞r✶✱ s❝❛♥r✱ s❝❛♥r✶✱ ✐t❡r❛t❡✱ r❡♣❡❛t✱ r❡♣❧✐❝❛t❡✱ ❝②❝❧❡✱ t❛❦❡✱ ❞r♦♣✱ s♣❧✐t❆t✱ t❛❦❡❲❤✐❧❡✱ ❞r♦♣❲❤✐❧❡✱ s♣❛♥✱ ❜r❡❛❦✱ ❧✐♥❡s✱ ✇♦r❞s✱ ✉♥❧✐♥❡s✱ ✉♥✇♦r❞s✱ r❡✈❡rs❡✱ ❛♥❞✱ ♦r✱ ❛♥②✱ ❛❧❧✱ ❡❧❡♠✱ ♥♦t❊❧❡♠✱ ❧♦♦❦✉♣✱ s✉♠✱ ♣r♦❞✉❝t✱ ♠❛①✐♠✉♠✱ ♠✐♥✐♠✉♠✱ ❝♦♥❝❛t▼❛♣✱ ③✐♣✱ ③✐♣✸✱ ③✐♣❲✐t❤✱ ③✐♣❲✐t❤✸✱ ✉♥③✐♣✱ ✉♥③✐♣✸ ✮ ✇❤❡r❡ ✐♠♣♦rt ▼❛②❜❡✭ ❧✐st❚♦▼❛②❜❡ ✮ ✐♥❢✐① ✺ ❭❭ ❡❧❡♠■♥❞❡① ❡❧❡♠■♥❞❡① ①
✿✿ ❊q ❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ▼❛②❜❡ ■♥t ❂ ❢✐♥❞■♥❞❡① ✭① ❂❂✮
❡❧❡♠■♥❞✐❝❡s ❡❧❡♠■♥❞✐❝❡s ①
✿✿ ❊q ❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬■♥t❪ ❂ ❢✐♥❞■♥❞✐❝❡s ✭① ❂❂✮
❢✐♥❞ ❢✐♥❞ ♣
✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ▼❛②❜❡ ❛ ❂ ❧✐st❚♦▼❛②❜❡ ✳ ❢✐❧t❡r ♣
❢✐♥❞■♥❞❡① ❢✐♥❞■♥❞❡① ♣
✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ▼❛②❜❡ ■♥t ❂ ❧✐st❚♦▼❛②❜❡ ✳ ❢✐♥❞■♥❞✐❝❡s ♣
❢✐♥❞■♥❞✐❝❡s ❢✐♥❞■♥❞✐❝❡s ♣ ①s
✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬■♥t❪ ❂ ❬ ✐ ⑤ ✭①✱✐✮ ❁✲ ③✐♣ ①s ❬✵✳✳❪✱ ♣ ① ❪
♥✉❜ ♥✉❜
✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ♥✉❜❇② ✭❂❂✮
✶✼✳✾✳
➪➮➪❐➮❰Ò➴✃➚
▲■❙❚
♥✉❜❇② ♥✉❜❇② ❡q ❬❪ ♥✉❜❇② ❡q ✭①✿①s✮
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❬❪ ❂ ① ✿ ♥✉❜❇② ❡q ✭❢✐❧t❡r ✭❭② ✲❃ ♥♦t ✭❡q ① ②✮✮ ①s✮
❞❡❧❡t❡ ❞❡❧❡t❡
✿✿ ❊q ❛ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❞❡❧❡t❡❇② ✭❂❂✮
❞❡❧❡t❡❇② ❞❡❧❡t❡❇② ❡q ① ❬❪ ❞❡❧❡t❡❇② ❡q ① ✭②✿②s✮
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❬❪ ❂ ✐❢ ① ❵❡q❵ ② t❤❡♥ ②s ❡❧s❡ ② ✿ ❞❡❧❡t❡❇② ❡q ① ②s
✭❭❭✮ ✭❭❭✮
✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❢♦❧❞❧ ✭❢❧✐♣ ❞❡❧❡t❡✮
❞❡❧❡t❡❋✐rsts❇② ❞❡❧❡t❡❋✐rsts❇② ❡q
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❢♦❧❞❧ ✭❢❧✐♣ ✭❞❡❧❡t❡❇② ❡q✮✮
✉♥✐♦♥ ✉♥✐♦♥
✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ✉♥✐♦♥❇② ✭❂❂✮
✉♥✐♦♥❇② ✉♥✐♦♥❇② ❡q ①s ②s
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ①s ✰✰ ❞❡❧❡t❡❋✐rsts❇② ❡q ✭♥✉❜❇② ❡q ②s✮ ①s
✐♥t❡rs❡❝t ✐♥t❡rs❡❝t
✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ✐♥t❡rs❡❝t❇② ✭❂❂✮
✐♥t❡rs❡❝t❇② ✐♥t❡rs❡❝t❇② ❡q ①s ②s
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❬① ⑤ ① ❁✲ ①s✱ ❛♥② ✭❡q ①✮ ②s❪
✐♥t❡rs♣❡rs❡ ✿✿ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ✐♥t❡rs♣❡rs❡ s❡♣ ❬❪ ❂ ❬❪ ✐♥t❡rs♣❡rs❡ s❡♣ ❬①❪ ❂ ❬①❪ ✐♥t❡rs♣❡rs❡ s❡♣ ✭①✿①s✮ ❂ ① ✿ s❡♣ ✿ ✐♥t❡rs♣❡rs❡ s❡♣ ①s ✲✲ tr❛♥s♣♦s❡ ÿâëÿåòñÿ ëåíèâîé è â îòíîøåíèè ñòðîê✱ è â îòíîøåíèè ñòîëáöîâ✱ ✲✲ è ðàáîòàåò äëÿ íåïðÿìîóãîëüíûõ ✬ìàòðèö✬ ✲✲ ❮àïðèìåð✱ tr❛♥s♣♦s❡ ❬❬✶✱✷❪✱❬✸✱✹✱✺❪✱❬❪❪ ❂ ❬❬✶✱✸❪✱❬✷✱✹❪✱❬✺❪❪ ✲✲ ❰áðàòèòå âíèìàíèå✱ ÷òî ❬❤ ⑤ ✭❤✿t✮ ❁✲ ①ss❪ ✲✲✲ íå òî æå ñàìîå✱ ÷òî ✲✲ ✭♠❛♣ ❤❡❛❞ ①ss✮ ïîòîìó ÷òî ïåðâûé îòáðàñûâàåò ïóñòûå ïîäñïèñêè âíóòðè ①ss tr❛♥s♣♦s❡ ✿✿ ❬❬❛❪❪ ✲❃ ❬❬❛❪❪ tr❛♥s♣♦s❡ ❬❪ ❂ ❬❪ tr❛♥s♣♦s❡ ✭❬❪ ✿ ①ss✮ ❂ tr❛♥s♣♦s❡ ①ss tr❛♥s♣♦s❡ ✭✭①✿①s✮ ✿ ①ss✮ ❂ ✭① ✿ ❬❤ ⑤ ✭❤✿t✮ ❁✲ ①ss❪✮ ✿ tr❛♥s♣♦s❡ ✭①s ✿ ❬t ⑤ ✭❤✿t✮ ❁✲ ①ss❪✮ ♣❛rt✐t✐♦♥ ♣❛rt✐t✐♦♥ ♣ ①s
✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ✭❬❛❪✱❬❛❪✮ ❂ ✭❢✐❧t❡r ♣ ①s✱ ❢✐❧t❡r ✭♥♦t ✳ ♣✮ ①s✮
✲✲ ❣r♦✉♣ äåëèò óêàçàííûé â àðãóìåíòå ñïèñîê íà ñïèñîê ñïèñêîâ îäèíàêîâûõ✱ ✲✲ ñîñåäíèõ ýëåìåíòîâ✳ ❮àïðèìåð✱ ✲✲ ❣r♦✉♣ ✧▼✐ss✐ss✐♣♣✐✧ ❂❂ ❬✧▼✧✱✧✐✧✱✧ss✧✱✧✐✧✱✧ss✧✱✧✐✧✱✧♣♣✧✱✧✐✧❪ ❣r♦✉♣ ✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❬❛❪❪ ❣r♦✉♣ ❂ ❣r♦✉♣❇② ✭❂❂✮
✷✸✺
✷✸✻ ❣r♦✉♣❇② ❣r♦✉♣❇② ❡q ❬❪ ❣r♦✉♣❇② ❡q ✭①✿①s✮
➹❐➚➶➚ ✶✼✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❬❛❪❪ ❂ ❬❪ ❂ ✭①✿②s✮ ✿ ❣r♦✉♣❇② ❡q ③s ✇❤❡r❡ ✭②s✱③s✮ ❂ s♣❛♥ ✭❡q ①✮ ①s
✲✲ ✐♥✐ts ①s âîçâðàùàåò ñïèñîê íà÷àëüíûõ ñåãìåíòîâ ①s✱ íàèáîëåå êîðîòêèé ✲✲✲ ✲✲ â íà÷àëå ñïèñêà✳ ✲✲ ❮àïðèìåð✱ ✐♥✐ts ✧❛❜❝✧ ❂❂ ❬✱✧❛✧✱✧❛❜✧✱✧❛❜❝✧❪ ✐♥✐ts ✿✿ ❬❛❪ ✲❃ ❬❬❛❪❪ ✐♥✐ts ❬❪ ❂ ❬❬❪❪ ✐♥✐ts ✭①✿①s✮ ❂ ❬❬❪❪ ✰✰ ♠❛♣ ✭①✿✮ ✭✐♥✐ts ①s✮ ✲✲ t❛✐❧s ①s âîçâðàùàåò ñïèñîê âñåõ êîíå÷íûõ ñåãìåíòîâ ①s✱ íàèáîëåå äëèííûé ✲✲✲ ✲✲ â íà÷àëå ñïèñêà✳ ✲✲ ❮àïðèìåð✱ t❛✐❧s ✧❛❜❝✧ ❂❂ ❬✧❛❜❝✧✱ ✧❜❝✧✱ ✧❝✧✱ ✧✧❪ t❛✐❧s ✿✿ ❬❛❪ ✲❃ ❬❬❛❪❪ t❛✐❧s ❬❪ ❂ ❬❬❪❪ t❛✐❧s ①①s❅✭❴✿①s✮ ❂ ①①s ✿ t❛✐❧s ①s ✐sPr❡❢✐①❖❢ ✐sPr❡❢✐①❖❢ ❬❪ ❴ ✐sPr❡❢✐①❖❢ ❴ ❬❪ ✐sPr❡❢✐①❖❢ ✭①✿①s✮ ✭②✿②s✮
✿✿ ❂ ❂ ❂
❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❇♦♦❧ ❚r✉❡ ❋❛❧s❡ ① ❂❂ ② ✫✫ ✐sPr❡❢✐①❖❢ ①s ②s
✐s❙✉❢❢✐①❖❢ ✐s❙✉❢❢✐①❖❢ ① ②
✿✿ ❊q ❛ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ❇♦♦❧ ❂ r❡✈❡rs❡ ① ❵✐sPr❡❢✐①❖❢❵ r❡✈❡rs❡ ②
♠❛♣❆❝❝✉♠▲ ♠❛♣❆❝❝✉♠▲ ❢ s ❬❪ ♠❛♣❆❝❝✉♠▲ ❢ s ✭①✿①s✮
✿✿ ✭❛ ✲❃ ❜ ✲❃ ✭❛✱ ❝✮✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ✭❛✱ ❬❝❪✮ ❂ ✭s✱ ❬❪✮ ❂ ✭s✑✱②✿②s✮ ✇❤❡r❡ ✭s✬✱ ② ✮ ❂ ❢ s ① ✭s✑✱②s✮ ❂ ♠❛♣❆❝❝✉♠▲ ❢ s✬ ①s
♠❛♣❆❝❝✉♠❘ ♠❛♣❆❝❝✉♠❘ ❢ s ❬❪ ♠❛♣❆❝❝✉♠❘ ❢ s ✭①✿①s✮
✿✿ ✭❛ ✲❃ ❜ ✲❃ ✭❛✱ ❝✮✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ✭❛✱ ❬❝❪✮ ❂ ✭s✱ ❬❪✮ ❂ ✭s✑✱ ②✿②s✮ ✇❤❡r❡ ✭s✑✱② ✮ ❂ ❢ s✬ ① ✭s✬✱ ②s✮ ❂ ♠❛♣❆❝❝✉♠❘ ❢ s ①s
✉♥❢♦❧❞r ✉♥❢♦❧❞r ❢ ❜
✿✿ ✭❜ ✲❃ ▼❛②❜❡ ✭❛✱❜✮✮ ✲❃ ❜ ✲❃ ❬❛❪ ❂ ❝❛s❡ ❢ ❜ ♦❢ ◆♦t❤✐♥❣ ✲❃ ❬❪ ❏✉st ✭❛✱❜✮ ✲❃ ❛ ✿ ✉♥❢♦❧❞r ❢ ❜
s♦rt s♦rt
✿✿ ✭❖r❞ ❛✮ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ❂ s♦rt❇② ❝♦♠♣❛r❡
s♦rt❇② s♦rt❇② ❝♠♣
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ❢♦❧❞r ✭✐♥s❡rt❇② ❝♠♣✮ ❬❪
✐♥s❡rt ✐♥s❡rt
✿✿ ✭❖r❞ ❛✮ ❂❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❂ ✐♥s❡rt❇② ❝♦♠♣❛r❡
✶✼✳✾✳
➪➮➪❐➮❰Ò➴✃➚
▲■❙❚
✐♥s❡rt❇② ✿✿ ✭❛ ✲❃ ❛ ✲❃ ✐♥s❡rt❇② ❝♠♣ ① ❬❪ ❂ ❬①❪ ✐♥s❡rt❇② ❝♠♣ ① ②s❅✭②✿②s✬✮ ❂ ❝❛s❡ ❝♠♣ ① ●❚ ✲❃ ❴ ✲❃
✷✸✼ ❖r❞❡r✐♥❣✮ ✲❃ ❛ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ② ♦❢ ② ✿ ✐♥s❡rt❇② ❝♠♣ ① ②s✬ ① ✿ ②s
♠❛①✐♠✉♠❇② ♠❛①✐♠✉♠❇② ❝♠♣ ❬❪ ♠❛①✐♠✉♠❇② ❝♠♣ ①s
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❬❛❪ ✲❃ ❛ ❂ ❡rr♦r ✧▲✐st✳♠❛①✐♠✉♠❇②✿ ïóñòîé ñïèñîê✧ ❂ ❢♦❧❞❧✶ ♠❛① ①s ✇❤❡r❡ ♠❛① ① ② ❂ ❝❛s❡ ❝♠♣ ① ② ♦❢ ●❚ ✲❃ ① ❴ ✲❃ ②
♠✐♥✐♠✉♠❇② ♠✐♥✐♠✉♠❇② ❝♠♣ ❬❪ ♠✐♥✐♠✉♠❇② ❝♠♣ ①s
✿✿ ✭❛ ✲❃ ❛ ✲❃ ❖r❞❡r✐♥❣✮ ✲❃ ❬❛❪ ✲❃ ❛ ❂ ❡rr♦r ✧▲✐st✳♠✐♥✐♠✉♠❇②✿ ïóñòîé ñïèñîê✧ ❂ ❢♦❧❞❧✶ ♠✐♥ ①s ✇❤❡r❡ ♠✐♥ ① ② ❂ ❝❛s❡ ❝♠♣ ① ② ♦❢ ●❚ ✲❃ ② ❴ ✲❃ ①
❣❡♥❡r✐❝▲❡♥❣t❤ ❣❡♥❡r✐❝▲❡♥❣t❤ ❬❪ ❣❡♥❡r✐❝▲❡♥❣t❤ ✭①✿①s✮
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❬❜❪ ✲❃ ❛ ❂ ✵ ❂ ✶ ✰ ❣❡♥❡r✐❝▲❡♥❣t❤ ①s
❣❡♥❡r✐❝❚❛❦❡ ❣❡♥❡r✐❝❚❛❦❡ ❴ ❬❪ ❣❡♥❡r✐❝❚❛❦❡ ✵ ❴ ❣❡♥❡r✐❝❚❛❦❡ ♥ ✭①✿①s✮ ⑤ ♥ ❃ ✵ ⑤ ♦t❤❡r✇✐s❡
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❬❜❪ ✲❃ ❬❜❪ ❂ ❬❪ ❂ ❬❪
❣❡♥❡r✐❝❉r♦♣ ❣❡♥❡r✐❝❉r♦♣ ✵ ①s ❣❡♥❡r✐❝❉r♦♣ ❴ ❬❪ ❣❡♥❡r✐❝❉r♦♣ ♥ ✭❴✿①s✮ ⑤ ♥ ❃ ✵ ⑤ ♦t❤❡r✇✐s❡ ❣❡♥❡r✐❝❙♣❧✐t❆t ❣❡♥❡r✐❝❙♣❧✐t❆t ✵ ①s ❣❡♥❡r✐❝❙♣❧✐t❆t ❴ ❬❪ ❣❡♥❡r✐❝❙♣❧✐t❆t ♥ ✭①✿①s✮ ⑤ ♥ ❃ ✵ ⑤ ♦t❤❡r✇✐s❡ ✇❤❡r❡ ✭①s✬✱①s✑✮
❂ ① ✿ ❣❡♥❡r✐❝❚❛❦❡ ✭♥✲✶✮ ①s ❂ ❡rr♦r ✧▲✐st✳❣❡♥❡r✐❝❚❛❦❡✿ îòðèöàòåëüíûé àðãóìåíò✧ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❬❜❪ ✲❃ ❬❜❪ ❂ ①s ❂ ❬❪ ❂ ❣❡♥❡r✐❝❉r♦♣ ✭♥✲✶✮ ①s ❂ ❡rr♦r ✧▲✐st✳❣❡♥❡r✐❝❉r♦♣✿ îòðèöàòåëüíûé àðãóìåíò✧ ✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❬❜❪ ✲❃ ✭❬❜❪✱❬❜❪✮ ❂ ✭❬❪✱①s✮ ❂ ✭❬❪✱❬❪✮ ❂ ✭①✿①s✬✱①s✑✮ ❂ ❡rr♦r ✧▲✐st✳❣❡♥❡r✐❝❙♣❧✐t❆t✿ îòðèöàòåëüíûé àðãóìåíò✧ ❂ ❣❡♥❡r✐❝❙♣❧✐t❆t ✭♥✲✶✮ ①s
✷✸✽
➹❐➚➶➚ ✶✼✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
❣❡♥❡r✐❝■♥❞❡① ❣❡♥❡r✐❝■♥❞❡① ✭①✿❴✮ ✵ ❣❡♥❡r✐❝■♥❞❡① ✭❴✿①s✮ ♥ ⑤ ♥ ❃ ✵ ⑤ ♦t❤❡r✇✐s❡ ❣❡♥❡r✐❝■♥❞❡① ❴ ❴
❂ ❣❡♥❡r✐❝■♥❞❡① ①s ✭♥✲✶✮ ❂ ❡rr♦r ✧▲✐st✳❣❡♥❡r✐❝■♥❞❡①✿ îòðèöàòåëüíûé àðãóìåíò✧ ❂ ❡rr♦r ✧▲✐st✳❣❡♥❡r✐❝■♥❞❡①✿ ñëèøêîì áîëüøîé èíäåêñ✧
❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡ ❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡ ♥ ①
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❛ ✲❃ ❜ ✲❃ ❬❜❪ ❂ ❣❡♥❡r✐❝❚❛❦❡ ♥ ✭r❡♣❡❛t ①✮
③✐♣✹ ③✐♣✹
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬✭❛✱❜✱❝✱❞✮❪ ❂ ③✐♣❲✐t❤✹ ✭✱✱✱✮
③✐♣✺ ③✐♣✺
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬❡❪ ✲❃ ❬✭❛✱❜✱❝✱❞✱❡✮❪ ❂ ③✐♣❲✐t❤✺ ✭✱✱✱✱✮
③✐♣✻
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬❡❪ ✲❃ ❬❢❪ ✲❃ ❬✭❛✱❜✱❝✱❞✱❡✱❢✮❪ ❂ ③✐♣❲✐t❤✻ ✭✱✱✱✱✱✮
③✐♣✻ ③✐♣✼ ③✐♣✼
✿✿ ✭■♥t❡❣r❛❧ ❛✮ ❂❃ ❬❜❪ ✲❃ ❛ ✲❃ ❜ ❂ ①
✿✿ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ❬❝❪ ✲❃ ❬❞❪ ✲❃ ❬❡❪ ✲❃ ❬❢❪ ✲❃ ❬❣❪ ✲❃ ❬✭❛✱❜✱❝✱❞✱❡✱❢✱❣✮❪ ❂ ③✐♣❲✐t❤✼ ✭✱✱✱✱✱✱✮
③✐♣❲✐t❤✹ ✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪ ③✐♣❲✐t❤✹ ③ ✭❛✿❛s✮ ✭❜✿❜s✮ ✭❝✿❝s✮ ✭❞✿❞s✮ ❂ ③ ❛ ❜ ❝ ❞ ✿ ③✐♣❲✐t❤✹ ③ ❛s ❜s ❝s ❞s ③✐♣❲✐t❤✹ ❴ ❴ ❴ ❴ ❴ ❂ ❬❪ ③✐♣❲✐t❤✺
✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✲❃❢✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪✲❃❬❢❪ ③✐♣❲✐t❤✺ ③ ✭❛✿❛s✮ ✭❜✿❜s✮ ✭❝✿❝s✮ ✭❞✿❞s✮ ✭❡✿❡s✮ ❂ ③ ❛ ❜ ❝ ❞ ❡ ✿ ③✐♣❲✐t❤✺ ③ ❛s ❜s ❝s ❞s ❡s ③✐♣❲✐t❤✺ ❴ ❴ ❴ ❴ ❴ ❴ ❂ ❬❪ ③✐♣❲✐t❤✻
✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✲❃❢✲❃❣✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪✲❃❬❢❪✲❃❬❣❪ ③✐♣❲✐t❤✻ ③ ✭❛✿❛s✮ ✭❜✿❜s✮ ✭❝✿❝s✮ ✭❞✿❞s✮ ✭❡✿❡s✮ ✭❢✿❢s✮ ❂ ③ ❛ ❜ ❝ ❞ ❡ ❢ ✿ ③✐♣❲✐t❤✻ ③ ❛s ❜s ❝s ❞s ❡s ❢s ③✐♣❲✐t❤✻ ❴ ❴ ❴ ❴ ❴ ❴ ❴ ❂ ❬❪ ③✐♣❲✐t❤✼
✿✿ ✭❛✲❃❜✲❃❝✲❃❞✲❃❡✲❃❢✲❃❣✲❃❤✮ ✲❃ ❬❛❪✲❃❬❜❪✲❃❬❝❪✲❃❬❞❪✲❃❬❡❪✲❃❬❢❪✲❃❬❣❪✲❃❬❤❪ ③✐♣❲✐t❤✼ ③ ✭❛✿❛s✮ ✭❜✿❜s✮ ✭❝✿❝s✮ ✭❞✿❞s✮ ✭❡✿❡s✮ ✭❢✿❢s✮ ✭❣✿❣s✮ ❂ ③ ❛ ❜ ❝ ❞ ❡ ❢ ❣ ✿ ③✐♣❲✐t❤✼ ③ ❛s ❜s ❝s ❞s ❡s ❢s ❣s ③✐♣❲✐t❤✼ ❴ ❴ ❴ ❴ ❴ ❴ ❴ ❴ ❂ ❬❪ ✉♥③✐♣✹ ✉♥③✐♣✹
✿✿ ❬✭❛✱❜✱❝✱❞✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✮ ❂ ❢♦❧❞r ✭❭✭❛✱❜✱❝✱❞✮ ⑦✭❛s✱❜s✱❝s✱❞s✮ ✲❃ ✭❛✿❛s✱❜✿❜s✱❝✿❝s✱❞✿❞s✮✮ ✭❬❪✱❬❪✱❬❪✱❬❪✮
✶✼✳✾✳
➪➮➪❐➮❰Ò➴✃➚
▲■❙❚
✉♥③✐♣✺ ✉♥③✐♣✺
✿✿ ❬✭❛✱❜✱❝✱❞✱❡✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✱❬❡❪✮ ❂ ❢♦❧❞r ✭❭✭❛✱❜✱❝✱❞✱❡✮ ⑦✭❛s✱❜s✱❝s✱❞s✱❡s✮ ✲❃ ✭❛✿❛s✱❜✿❜s✱❝✿❝s✱❞✿❞s✱❡✿❡s✮✮ ✭❬❪✱❬❪✱❬❪✱❬❪✱❬❪✮
✉♥③✐♣✻ ✉♥③✐♣✻
✿✿ ❬✭❛✱❜✱❝✱❞✱❡✱❢✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✱❬❡❪✱❬❢❪✮ ❂ ❢♦❧❞r ✭❭✭❛✱❜✱❝✱❞✱❡✱❢✮ ⑦✭❛s✱❜s✱❝s✱❞s✱❡s✱❢s✮ ✲❃ ✭❛✿❛s✱❜✿❜s✱❝✿❝s✱❞✿❞s✱❡✿❡s✱❢✿❢s✮✮ ✭❬❪✱❬❪✱❬❪✱❬❪✱❬❪✱❬❪✮
✉♥③✐♣✼ ✉♥③✐♣✼
✿✿ ❬✭❛✱❜✱❝✱❞✱❡✱❢✱❣✮❪ ✲❃ ✭❬❛❪✱❬❜❪✱❬❝❪✱❬❞❪✱❬❡❪✱❬❢❪✱❬❣❪✮ ❂ ❢♦❧❞r ✭❭✭❛✱❜✱❝✱❞✱❡✱❢✱❣✮ ⑦✭❛s✱❜s✱❝s✱❞s✱❡s✱❢s✱❣s✮ ✲❃ ✭❛✿❛s✱❜✿❜s✱❝✿❝s✱❞✿❞s✱❡✿❡s✱❢✿❢s✱❣✿❣s✮✮ ✭❬❪✱❬❪✱❬❪✱❬❪✱❬❪✱❬❪✱❬❪✮
✷✸✾
✷✹✵
➹❐➚➶➚ ✶✼✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ❰ ÑÏ➮Ñ✃➚❒➮
➹ëàâà ✶✽
Óòèëèòû ▼❛②❜❡ ♠♦❞✉❧❡ ▼❛②❜❡✭ ✐s❏✉st✱ ✐s◆♦t❤✐♥❣✱ ❢r♦♠❏✉st✱ ❢r♦♠▼❛②❜❡✱ ❧✐st❚♦▼❛②❜❡✱ ♠❛②❜❡❚♦▲✐st✱ ❝❛t▼❛②❜❡s✱ ♠❛♣▼❛②❜❡✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ▼❛②❜❡✭◆♦t❤✐♥❣✱ ❏✉st✮✱ ♠❛②❜❡ ✮ ✇❤❡r❡ ✐s❏✉st✱ ✐s◆♦t❤✐♥❣ ❢r♦♠❏✉st ❢r♦♠▼❛②❜❡ ❧✐st❚♦▼❛②❜❡ ♠❛②❜❡❚♦▲✐st ❝❛t▼❛②❜❡s ♠❛♣▼❛②❜❡
✃îíñòðóêòîð òèïà
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
▼❛②❜❡
▼❛②❜❡ ❛ ✲❃ ❇♦♦❧ ▼❛②❜❡ ❛ ✲❃ ❛ ❛ ✲❃ ▼❛②❜❡ ❛ ✲❃ ❛ ❬❛❪ ✲❃ ▼❛②❜❡ ❛ ▼❛②❜❡ ❛ ✲❃ ❬❛❪ ❬▼❛②❜❡ ❛❪ ✲❃ ❬❛❪ ✭❛ ✲❃ ▼❛②❜❡ ❜✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪
îïðåäåëåí â
Pr❡❧✉❞❡
ñëåäóþùèì îáðàçîì✿
❞❛t❛ ▼❛②❜❡ ❛ ❂ ◆♦t❤✐♥❣ ⑤ ❏✉st ❛ ❮àçíà÷åíèå
òèïà
íåïðàâèëüíûõ
▼❛②❜❡
èëè
çàêëþ÷àåòñÿ
íåîáÿçàòåëüíûõ
â
òîì✱
÷òîáû
çíà÷åíèé
ïðîèçîøëî áû✱ åñëè áû èñïîëüçîâàëàñü ôóíêöèÿ
áåç
ïðåäîñòàâèòü çàâåðøåíèÿ
❡rr♦r✱
ìåòîä
îáðàáîòêè
ïðîãðàììû✱
÷òî
è áåç èñïîëüçîâàíèÿ ôóíêöèè
■❖❊rr♦r èç ìîíàäû ■❖✱ êîòîðàÿ ïîòðåáîâàëà áû✱ ÷òîáû âûðàæåíèå ñòàëî ìîíàäè÷åñêèì✳ ❏✉st❀ íåïðàâèëüíûé ðåçóëüòàò âîçâðàùàåòñÿ â âèäå ◆♦t❤✐♥❣✳ Ïðàâèëüíûé ðåçóëüòàò èíêàïñóëèðóåòñÿ ïóòåì îáåðòûâàíèÿ åãî â
➘ðóãèå îïåðàöèè íàä
▼❛②❜❡ ïðåäóñìîòðåíû êàê ÷àñòü ìîíàäè÷åñêèõ êëàññîâ â Pr❡❧✉❞❡✳
✷✹✶
✷✹✷ ✶✽✳✶
➹❐➚➶➚ ✶✽✳
➪èáëèîòåêà
▼❛②❜❡
♠♦❞✉❧❡ ▼❛②❜❡✭ ✐s❏✉st✱ ✐s◆♦t❤✐♥❣✱ ❢r♦♠❏✉st✱ ❢r♦♠▼❛②❜❡✱ ❧✐st❚♦▼❛②❜❡✱ ♠❛②❜❡❚♦▲✐st✱ ❝❛t▼❛②❜❡s✱ ♠❛♣▼❛②❜❡✱ ✲✲ ✳✳✳ è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ▼❛②❜❡✭◆♦t❤✐♥❣✱ ❏✉st✮✱ ♠❛②❜❡ ✮ ✇❤❡r❡ ✐s❏✉st ✐s❏✉st ✭❏✉st ❛✮ ✐s❏✉st ◆♦t❤✐♥❣
✿✿ ▼❛②❜❡ ❛ ✲❃ ❇♦♦❧ ❂ ❚r✉❡ ❂ ❋❛❧s❡
✐s◆♦t❤✐♥❣ ✐s◆♦t❤✐♥❣
✿✿ ▼❛②❜❡ ❛ ✲❃ ❇♦♦❧ ❂ ♥♦t ✳ ✐s❏✉st
❢r♦♠❏✉st ❢r♦♠❏✉st ✭❏✉st ❛✮ ❢r♦♠❏✉st ◆♦t❤✐♥❣
✿✿ ▼❛②❜❡ ❛ ✲❃ ❛ ❂ ❛ ❂ ❡rr♦r ✧▼❛②❜❡✳❢r♦♠❏✉st✿ ◆♦t❤✐♥❣✧
❢r♦♠▼❛②❜❡ ❢r♦♠▼❛②❜❡ ❞ ◆♦t❤✐♥❣ ❢r♦♠▼❛②❜❡ ❞ ✭❏✉st ❛✮
✿✿ ❛ ✲❃ ▼❛②❜❡ ❛ ✲❃ ❛ ❂ ❞ ❂ ❛
♠❛②❜❡❚♦▲✐st ♠❛②❜❡❚♦▲✐st ◆♦t❤✐♥❣ ♠❛②❜❡❚♦▲✐st ✭❏✉st ❛✮
✿✿ ▼❛②❜❡ ❛ ✲❃ ❬❛❪ ❂ ❬❪ ❂ ❬❛❪
❧✐st❚♦▼❛②❜❡ ❧✐st❚♦▼❛②❜❡ ❬❪ ❧✐st❚♦▼❛②❜❡ ✭❛✿❴✮
✿✿ ❬❛❪ ✲❃ ▼❛②❜❡ ❛ ❂ ◆♦t❤✐♥❣ ❂ ❏✉st ❛
❝❛t▼❛②❜❡s ❝❛t▼❛②❜❡s ♠s
✿✿ ❬▼❛②❜❡ ❛❪ ✲❃ ❬❛❪ ❂ ❬ ♠ ⑤ ❏✉st ♠ ❁✲ ♠s ❪
♠❛♣▼❛②❜❡ ♠❛♣▼❛②❜❡ ❢
✿✿ ✭❛ ✲❃ ▼❛②❜❡ ❜✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ❂ ❝❛t▼❛②❜❡s ✳ ♠❛♣ ❢
ÓÒ➮❐➮ÒÛ ▼❆❨❇❊
➹ëàâà ✶✾
Óòèëèòû ðàáîòû ñ ñèìâîëàìè ♠♦❞✉❧❡ ❈❤❛r ✭ ✐s❆s❝✐✐✱ ✐s▲❛t✐♥✶✱ ✐s❈♦♥tr♦❧✱ ✐sPr✐♥t✱ ✐s❙♣❛❝❡✱ ✐s❯♣♣❡r✱ ✐s▲♦✇❡r✱ ✐s❆❧♣❤❛✱ ✐s❉✐❣✐t✱ ✐s❖❝t❉✐❣✐t✱ ✐s❍❡①❉✐❣✐t✱ ✐s❆❧♣❤❛◆✉♠✱ ❞✐❣✐t❚♦■♥t✱ ✐♥t❚♦❉✐❣✐t✱ t♦❯♣♣❡r✱ t♦▲♦✇❡r✱ ♦r❞✱ ❝❤r✱ r❡❛❞▲✐t❈❤❛r✱ s❤♦✇▲✐t❈❤❛r✱ ❧❡①▲✐t❈❤❛r✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ❈❤❛r✱ ❙tr✐♥❣ ✮ ✇❤❡r❡ ✐s❆s❝✐✐✱ ✐s▲❛t✐♥✶✱ ✐s❈♦♥tr♦❧✱ ✐sPr✐♥t✱ ✐s❙♣❛❝❡✱ ✐s❯♣♣❡r✱ ✐s▲♦✇❡r✱ ✐s❆❧♣❤❛✱ ✐s❉✐❣✐t✱ ✐s❖❝t❉✐❣✐t✱ ✐s❍❡①❉✐❣✐t✱ ✐s❆❧♣❤❛◆✉♠ ✿✿ ❈❤❛r ✲❃ ❇♦♦❧ t♦❯♣♣❡r✱ t♦▲♦✇❡r
✿✿ ❈❤❛r ✲❃ ❈❤❛r
❞✐❣✐t❚♦■♥t ✿✿ ❈❤❛r ✲❃ ■♥t ✐♥t❚♦❉✐❣✐t ✿✿ ■♥t ✲❃ ❈❤❛r ♦r❞ ❝❤r
✿✿ ❈❤❛r ✲❃ ■♥t ✿✿ ■♥t ✲❃ ❈❤❛r
❧❡①▲✐t❈❤❛r ✿✿ ❘❡❛❞❙ ❙tr✐♥❣ r❡❛❞▲✐t❈❤❛r ✿✿ ❘❡❛❞❙ ❈❤❛r s❤♦✇▲✐t❈❤❛r ✿✿ ❈❤❛r ✲❃ ❙❤♦✇❙
Ýòà áèáëèîòåêà ïðåäîñòàâëÿåò îãðàíè÷åííûé íàáîð îïåðàöèé íàä ñèìâîëàìè ❯♥✐❝♦❞❡✳ Ïåðâûå
✶✷✽
ýëåìåíòîâ
ýòîãî
íàáîðà
ñèìâîëîâ
èäåíòè÷íû
íàáîðó
ñèìâîëîâ
❆❙❈■■❀
ñëåäóþùèå ✶✷✽ ýëåìåíòîâ îáðàçóþò îñòàòîê íàáîðà ñèìâîëîâ ▲❛t✐♥ ✶✳ Ýòîò ìîäóëü ïðåäëàãàåò
òîëüêî
îãðàíè÷åííîå
ïðåäñòàâëåíèå
ïîëíîãî
íàáîðà
ñèìâîëîâ
ïîëíûé íàáîð àòðèáóòîâ ñèìâîëîâ ❯♥✐❝♦❞❡ â ýòîé áèáëèîòåêå íåäîñòóïåí✳
✷✹✸
❯♥✐❝♦❞❡❀
✷✹✹
➹❐➚➶➚ ✶✾✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ Ñ➮❒➶❰❐➚❒➮
Ñèìâîëû ❯♥✐❝♦❞❡ ìîæíî ðàçäåëèòü íà ïÿòü îáùèõ êàòåãîðèé✿ íåïå÷àòàåìûå ñèìâîëû✱ ñòðî÷íûå àëôàâèòíûå ñèìâîëû✱ îñòàëüíûå àëôàâèòíûå ñèìâîëû✱ ÷èñëîâûå öèôðû è îñòàëüíûå ïå÷àòàåìûå ñèìâîëû✳ ➶ ❍❛s❦❡❧❧ ëþáîé àëôàâèòíûé ñèìâîë✱ êîòîðûé íå ÿâëÿåòñÿ ñòðî÷íîé áóêâîé✱ ðàññìàòðèâàåòñÿ êàê çàãëàâíûé ñèìâîë ✭âåðõíåãî ðåãèñòðà✮ ✭❯♥✐❝♦❞❡ íà ñàìîì äåëå èìååò òðè ðåãèñòðà✿ âåðõíèé✱ íèæíèé è çàãëàâíûé✮✳ ×èñëîâûå öèôðû ìîãóò ÿâëÿòüñÿ ÷àñòüþ èäåíòèôèêàòîðîâ✱ íî öèôðû âíå äèàïàçîíà ❆❙❈■■ íå äîëæíû èñïîëüçîâàòüñÿ ÷èòàòåëåì äëÿ îáîçíà÷åíèÿ ÷èñåë✳ ➘ëÿ êàæäîãî âèäà ñèìâîëîâ ❯♥✐❝♦❞❡ âûïîëíÿþòñÿ ñëåäóþùèå ïðåäèêàòû✱ êîòîðûå âîçâðàùàþò
❚r✉❡✿
Òèï ñèìâîëîâ
Ïðåäèêàòû
Ñòðî÷íûå àëôàâèòíûå ñèìâîëû
✐sPr✐♥t ✐sPr✐♥t ✐sPr✐♥t ✐sPr✐♥t
❰ñòàëüíûå àëôàâèòíûå ñèìâîëû Öèôðû ❰ñòàëüíûå ïå÷àòàåìûå ñèìâîëû
✐s❆❧♣❤❛◆✉♠ ✐s❆❧♣❤❛◆✉♠ ✐s❆❧♣❤❛◆✉♠
✐s❆❧♣❤❛ ✐s❆❧♣❤❛
✐s▲♦✇❡r ✐s❯♣♣❡r
❮åïå÷àòàåìûå ñèìâîëû
✐s❉✐❣✐t✱ ✐s❖❝t❉✐❣✐t è ✐s❍❡①❉✐❣✐t âûáèðàþò òîëüêî ñèìâîëû ❆❙❈■■✳ ✐♥t❚♦❉✐❣✐t è ❞✐❣✐t❚♦■♥t îñóùåñòâëÿþò ïðåîáðàçîâàíèå ìåæäó îäíîé öèôðîé ❈❤❛r è ñîîòâåòñòâóþùèì ■♥t✳ ❞✐❣✐t❚♦■♥t çàâåðøàåòñÿ íåóñïåøíî✱ åñëè åå àðãóìåíò íå óäîâëåòâîðÿåò óñëîâèþ ✐s❍❡①❉✐❣✐t✱ íî îíà ðàñïîçíàåò øåñòíàäöàòèðè÷íûå öèôðû êàê â âåðõíåì✱ òàê è â íèæíåì ðåãèñòðàõ ✭ò✳å✳ ✬✵✬ ✳✳ ✬✾✬✱ ✬❛✬✳✳ ✬❢✬✱ ✬❆✬ ✳✳ ✬❋✬✮✳ ✐♥t❚♦❉✐❣✐t çàâåðøàåòñÿ íåóñïåøíî✱ åñëè åå àðãóìåíò íå íàõîäèòñÿ â äèàïàçîíå ✵✳✳ ✶✺❀
Ôóíêöèè
îíà ãåíåðèðóåò øåñòíàäöàòèðè÷íûå öèôðû â íèæíåì ðåãèñòðå✳ Ôóíêöèÿ
✐s❙♣❛❝❡
ðàñïîçíàåò ïðîáåëüíûå ñèìâîëû òîëüêî â äèàïàçîíå ▲❛t✐♥ ✶✳
Ôóíêöèÿ
s❤♦✇▲✐t❈❤❛r
ñèìâîëû
è
❧❡①▲✐t❈❤❛r êîäèðóþò
ïðåîáðàçóåò ñèìâîë â ñòðîêó✱ èñïîëüçóÿ òîëüêî ïå÷àòàåìûå
ñîãëàøåíèÿ äåëàåò
ñèìâîë✳
èñõîäíîãî
îáðàòíîå✱ Ôóíêöèÿ
ÿçûêà
âîçâðàùàÿ
r❡❛❞▲✐t❈❤❛r
❍❛s❦❡❧❧
îá
ýñêåéï✲ñèìâîëàõ✳
ïîñëåäîâàòåëüíîñòü äåëàåò
òî
æå
Ôóíêöèÿ
ñèìâîëîâ✱
ñàìîå✱
íî
êîòîðûå
êðîìå
òîãî
îñóùåñòâëÿåò ïðåîáðàçîâàíèå ê ñèìâîëó✱ êîòîðûé ýòî êîäèðóåò✳ ❮àïðèìåð✿
s❤♦✇▲✐t❈❤❛r ✬❭♥✬ s ❂ ✧❭❭♥✧ ✰✰ s ❧❡①▲✐t❈❤❛r ✧❭❭♥➬äðàâñòâóéòå✧ ❂ ❬✭✧❭❭♥✧✱ ✧➬äðàâñòâóéòå✧✮❪ r❡❛❞▲✐t❈❤❛r ✧❭❭♥➬äðàâñòâóéòå✧ ❂ ❬✭✬❭♥✬✱ ✧➬äðàâñòâóéòå✧✮❪ Ôóíêöèÿ
t♦❯♣♣❡r
ïðåîáðàçîâûâàåò
áóêâó
â
ñîîòâåòñòâóþùóþ
çàãëàâíóþ
áóêâó✱
îñòàâëÿÿ âñå îñòàëüíûå ñèìâîëû áåç èçìåíåíèé✳ ❐þáàÿ áóêâà ❯♥✐❝♦❞❡✱ êîòîðàÿ èìååò ýêâèâàëåíò â âåðõíåì ðåãèñòðå✱ ïîäâåðãàåòñÿ ïðåîáðàçîâàíèþ✳ ➚íàëîãè÷íî✱
t♦▲♦✇❡r
ïðåîáðàçîâûâàåò áóêâó â ñîîòâåòñòâóþùóþ ñòðî÷íóþ áóêâó✱ îñòàâëÿÿ âñå îñòàëüíûå ñèìâîëû áåç èçìåíåíèé✳ Ôóíêöèè
❈❤❛r✳
♦r❞
è
❝❤r
ÿâëÿþòñÿ ôóíêöèÿìè
❢r♦♠❊♥✉♠
è
t♦❊♥✉♠✱
îãðàíè÷åííûìè òèïîì
✶✾✳✶✳
➪➮➪❐➮❰Ò➴✃➚
✶✾✳✶
❈❍❆❘
➪èáëèîòåêà
✷✹✺
❈❤❛r
♠♦❞✉❧❡ ❈❤❛r ✭ ✐s❆s❝✐✐✱ ✐s▲❛t✐♥✶✱ ✐s❈♦♥tr♦❧✱ ✐sPr✐♥t✱ ✐s❙♣❛❝❡✱ ✐s❯♣♣❡r✱ ✐s▲♦✇❡r✱ ✐s❆❧♣❤❛✱ ✐s❉✐❣✐t✱ ✐s❖❝t❉✐❣✐t✱ ✐s❍❡①❉✐❣✐t✱ ✐s❆❧♣❤❛◆✉♠✱ ❞✐❣✐t❚♦■♥t✱ ✐♥t❚♦❉✐❣✐t✱ t♦❯♣♣❡r✱ t♦▲♦✇❡r✱ ♦r❞✱ ❝❤r✱ r❡❛❞▲✐t❈❤❛r✱ s❤♦✇▲✐t❈❤❛r✱ ❧❡①▲✐t❈❤❛r✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ❈❤❛r✱ ❙tr✐♥❣ ✮ ✇❤❡r❡ ✐♠♣♦rt ❆rr❛② ✲✲ ➮ñïîëüçóåòñÿ äëÿ òàáëèöû èìåí ñèìâîëîâ✳ ✐♠♣♦rt ◆✉♠❡r✐❝ ✭r❡❛❞❉❡❝✱ r❡❛❞❖❝t✱ ❧❡①❉✐❣✐ts✱ r❡❛❞❍❡①✮ ✐♠♣♦rt ❯♥✐❝♦❞❡Pr✐♠s ✲✲ ➮ñõîäíûé êîä ïðèìèòèâíûõ ôóíêöèé ❯♥✐❝♦❞❡✳ ✲✲ ❰ïåðàöèè ïðîâåðêè ñèìâîëîâ ✐s❆s❝✐✐✱ ✐s▲❛t✐♥✶✱ ✐s❈♦♥tr♦❧✱ ✐sPr✐♥t✱ ✐s❙♣❛❝❡✱ ✐s❯♣♣❡r✱ ✐s▲♦✇❡r✱ ✐s❆❧♣❤❛✱ ✐s❉✐❣✐t✱ ✐s❖❝t❉✐❣✐t✱ ✐s❍❡①❉✐❣✐t✱ ✐s❆❧♣❤❛◆✉♠ ✿✿ ❈❤❛r ✲❃ ❇♦♦❧ ✐s❆s❝✐✐ ❝
❂ ❝ ❁ ✬❭①✽✵✬
✐s▲❛t✐♥✶ ❝
❂
❝ ❁❂ ✬❭①❢❢✬
✐s❈♦♥tr♦❧ ❝
❂
❝ ❁ ✬ ✬ ⑤⑤ ❝ ❃❂ ✬❭❉❊▲✬ ✫✫ ❝ ❁❂ ✬❭①✾❢✬
✐sPr✐♥t
❂ ♣r✐♠❯♥✐❝♦❞❡■sPr✐♥t
✐s❙♣❛❝❡ ❝ ❂ ❝ ❵❡❧❡♠❵ ✧ ❭t❭♥❭r❭❢❭✈❭①❆✵✧ ✲✲ Ðàñïîçíàþòñÿ òîëüêî ïðîáåëüíûå ñèìâîëû ▲❛t✐♥✲✶ ✐s❯♣♣❡r
❂ ♣r✐♠❯♥✐❝♦❞❡■s❯♣♣❡r
✲✲ ✬❆✬✳✳✬❩✬
✐s▲♦✇❡r
❂ ♣r✐♠❯♥✐❝♦❞❡■s▲♦✇❡r
✲✲ ✬❛✬✳✳✬③✬
✐s❆❧♣❤❛ ❝
❂ ✐s❯♣♣❡r ❝ ⑤⑤ ✐s▲♦✇❡r ❝
✐s❉✐❣✐t ❝
❂ ❝ ❃❂ ✬✵✬ ✫✫ ❝ ❁❂ ✬✾✬
✐s❖❝t❉✐❣✐t ❝
❂
❝ ❃❂ ✬✵✬ ✫✫ ❝ ❁❂ ✬✼✬
✐s❍❡①❉✐❣✐t ❝
❂
✐s❉✐❣✐t ❝ ⑤⑤ ❝ ❃❂ ✬❆✬ ✫✫ ❝ ❁❂ ✬❋✬ ⑤⑤ ❝ ❃❂ ✬❛✬ ✫✫ ❝ ❁❂ ✬❢✬
✐s❆❧♣❤❛◆✉♠
❂
♣r✐♠❯♥✐❝♦❞❡■s❆❧♣❤❛◆✉♠
✲✲ ❰ïåðàöèè ïðåîáðàçîâàíèÿ ❞✐❣✐t❚♦■♥t ✿✿ ❈❤❛r ✲❃ ■♥t ❞✐❣✐t❚♦■♥t ❝ ⑤ ✐s❉✐❣✐t ❝ ❂ ⑤ ❝ ❃❂ ✬❛✬ ✫✫ ❝ ❁❂ ✬❢✬ ❂ ⑤ ❝ ❃❂ ✬❆✬ ✫✫ ❝ ❁❂ ✬❋✬ ❂ ⑤ ♦t❤❡r✇✐s❡ ❂
öèôð ❢r♦♠❊♥✉♠ ❝ ✲ ❢r♦♠❊♥✉♠ ✬✵✬ ❢r♦♠❊♥✉♠ ❝ ✲ ❢r♦♠❊♥✉♠ ✬❛✬ ✰ ✶✵ ❢r♦♠❊♥✉♠ ❝ ✲ ❢r♦♠❊♥✉♠ ✬❆✬ ✰ ✶✵ ❡rr♦r ✧❈❤❛r✳❞✐❣✐t❚♦■♥t✿ íå ÿâëÿåòñÿ öèôðîé✧
✷✹✻
➹❐➚➶➚ ✶✾✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ Ñ➮❒➶❰❐➚❒➮
✐♥t❚♦❉✐❣✐t ✿✿ ■♥t ✲❃ ❈❤❛r ✐♥t❚♦❉✐❣✐t ✐ ⑤ ✐ ❃❂ ✵ ✫✫ ✐ ❁❂ ✾ ❂ t♦❊♥✉♠ ✭❢r♦♠❊♥✉♠ ✬✵✬ ✰ ✐✮ ⑤ ✐ ❃❂ ✶✵ ✫✫ ✐ ❁❂ ✶✺ ❂ t♦❊♥✉♠ ✭❢r♦♠❊♥✉♠ ✬❛✬ ✰ ✐ ✲ ✶✵✮ ⑤ ♦t❤❡r✇✐s❡ ❂ ❡rr♦r ✧❈❤❛r✳✐♥t❚♦❉✐❣✐t✿ íå ÿâëÿåòñÿ öèôðîé✧ ✲✲ ❰ïåðàöèè èçìåíåíèÿ ðåãèñòðà áóêâ t♦❯♣♣❡r ✿✿ ❈❤❛r ✲❃ ❈❤❛r t♦❯♣♣❡r ❂ ♣r✐♠❯♥✐❝♦❞❡❚♦❯♣♣❡r t♦▲♦✇❡r ✿✿ ❈❤❛r ✲❃ ❈❤❛r t♦▲♦✇❡r ❂ ♣r✐♠❯♥✐❝♦❞❡❚♦▲♦✇❡r ✲✲ Ôóíêöèè êîäèðîâàíèÿ ñèìâîëîâ ♦r❞ ✿✿ ❈❤❛r ✲❃ ■♥t ♦r❞ ❂ ❢r♦♠❊♥✉♠ ❝❤r ❝❤r
✿✿ ■♥t ✲❃ ❈❤❛r ❂ t♦❊♥✉♠
✲✲ Ôóíêöèè íàä òåêñòîì r❡❛❞▲✐t❈❤❛r ✿✿ ❘❡❛❞❙ ❈❤❛r r❡❛❞▲✐t❈❤❛r ✭✬❭❭✬✿s✮ ❂ r❡❛❞❊s❝ s r❡❛❞▲✐t❈❤❛r ✭❝✿s✮ ❂ ❬✭❝✱s✮❪ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝ r❡❛❞❊s❝
r❡❛❞❊s❝
✿✿ ❘❡❛❞❙ ❈❤❛r ✭✬❛✬✿s✮ ❂ ❬✭✬❭❛✬✱s✮❪ ✭✬❜✬✿s✮ ❂ ❬✭✬❭❜✬✱s✮❪ ✭✬❢✬✿s✮ ❂ ❬✭✬❭❢✬✱s✮❪ ✭✬♥✬✿s✮ ❂ ❬✭✬❭♥✬✱s✮❪ ✭✬r✬✿s✮ ❂ ❬✭✬❭r✬✱s✮❪ ✭✬t✬✿s✮ ❂ ❬✭✬❭t✬✱s✮❪ ✭✬✈✬✿s✮ ❂ ❬✭✬❭✈✬✱s✮❪ ✭✬❭❭✬✿s✮ ❂ ❬✭✬❭❭✬✱s✮❪ ✭✬\ ✿s✮ ❂ ❬✭✬\ ✱s✮❪ ✭✬❭✑✿s✮ ❂ ❬✭✬❭✑✱s✮❪ ✭✬❫✬✿❝✿s✮ ⑤ ❝ ❃❂ ✬❅✬ ✫✫ ❝ ❁❂ ✬❴✬ ❂ ❬✭❝❤r ✭♦r❞ ❝ ✲ ♦r❞ ✬❅✬✮✱ s✮❪ s❅✭❞✿❴✮ ⑤ ✐s❉✐❣✐t ❞ ❂ ❬✭❝❤r ♥✱ t✮ ⑤ ✭♥✱t✮ ❁✲ r❡❛❞❉❡❝ s❪ ✭✬♦✬✿s✮ ❂ ❬✭❝❤r ♥✱ t✮ ⑤ ✭♥✱t✮ ❁✲ r❡❛❞❖❝t s❪ ✭✬①✬✿s✮ ❂ ❬✭❝❤r ♥✱ t✮ ⑤ ✭♥✱t✮ ❁✲ r❡❛❞❍❡① s❪ s❅✭❝✿❴✮ ⑤ ✐s❯♣♣❡r ❝ ❂ ❧❡t t❛❜❧❡ ❂ ✭✬❭❉❊▲✬✱ ✧❉❊▲✧✮ ✿ ❛ss♦❝s ❛s❝✐✐❚❛❜ ✐♥ ❝❛s❡ ❬✭❝✱s✬✮ ⑤ ✭❝✱ ♠♥❡✮ ❁✲ t❛❜❧❡✱ ✭❬❪✱s✬✮ ❁✲ ❬♠❛t❝❤ ♠♥❡ s❪❪ ♦❢ ✭♣r✿❴✮ ✲❃ ❬♣r❪ ❬❪ ✲❃ ❬❪ ❴ ❂ ❬❪
♠❛t❝❤ ✿✿ ✭❊q ❛✮ ❂❃ ❬❛❪ ✲❃ ❬❛❪ ✲❃ ✭❬❛❪✱❬❛❪✮ ♠❛t❝❤ ✭①✿①s✮ ✭②✿②s✮ ⑤ ① ❂❂ ② ❂ ♠❛t❝❤ ①s ②s ♠❛t❝❤ ①s ②s ❂ ✭①s✱②s✮
✶✾✳✶✳
➪➮➪❐➮❰Ò➴✃➚
❈❍❆❘
✷✹✼
s❤♦✇▲✐t❈❤❛r ✿✿ ❈❤❛r ✲❃ ❙❤♦✇❙ s❤♦✇▲✐t❈❤❛r ❝ ⑤ ❝ ❃ ✬❭❉❊▲✬ ❂ s❤♦✇❈❤❛r ✬❭❭✬ ✳ ♣r♦t❡❝t❊s❝ ✐s❉✐❣✐t ✭s❤♦✇s ✭♦r❞ ❝✮✮ s❤♦✇▲✐t❈❤❛r ✬❭❉❊▲✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭❉❊▲✧ s❤♦✇▲✐t❈❤❛r ✬❭❭✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭❭❭✧ s❤♦✇▲✐t❈❤❛r ❝ ⑤ ❝ ❃❂ ✬ ✬ ❂ s❤♦✇❈❤❛r ❝ s❤♦✇▲✐t❈❤❛r ✬❭❛✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭❛✧ s❤♦✇▲✐t❈❤❛r ✬❭❜✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭❜✧ s❤♦✇▲✐t❈❤❛r ✬❭❢✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭❢✧ s❤♦✇▲✐t❈❤❛r ✬❭♥✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭♥✧ s❤♦✇▲✐t❈❤❛r ✬❭r✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭r✧ s❤♦✇▲✐t❈❤❛r ✬❭t✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭t✧ s❤♦✇▲✐t❈❤❛r ✬❭✈✬ ❂ s❤♦✇❙tr✐♥❣ ✧❭❭✈✧ s❤♦✇▲✐t❈❤❛r ✬❭❙❖✬ ❂ ♣r♦t❡❝t❊s❝ ✭❂❂ ✬❍✬✮ ✭s❤♦✇❙tr✐♥❣ ✧❭❭❙❖✧✮ s❤♦✇▲✐t❈❤❛r ❝ ❂ s❤♦✇❙tr✐♥❣ ✭✬❭❭✬ ✿ ❛s❝✐✐❚❛❜✦❝✮ ♣r♦t❡❝t❊s❝ ♣ ❢
❂ ❢ ✳ ❝♦♥t ✇❤❡r❡ ❝♦♥t ❝♦♥t ❛s❝✐✐❚❛❜ ❂ ❧✐st❆rr❛② ✭✬❭◆❯▲✬✱ ✬ ✬✮ ❬✧◆❯▲✧✱ ✧❙❖❍✧✱ ✧❙❚❳✧✱ ✧❊❚❳✧✱ ✧❇❙✧✱ ✧❍❚✧✱ ✧▲❋✧✱ ✧❱❚✧✱ ✧❉▲❊✧✱ ✧❉❈✶✧✱ ✧❉❈✷✧✱ ✧❉❈✸✧✱ ✧❈❆◆✧✱ ✧❊▼✧✱ ✧❙❯❇✧✱ ✧❊❙❈✧✱ ✧❙P✧❪
s❅✭❝✿❴✮ ⑤ ♣ ❝ ❂ ✧❭❭✫✧ ✰✰ s s ❂ s ✧❊❖❚✧✱ ✧❋❋✧✱ ✧❉❈✹✧✱ ✧❋❙✧✱
✧❊◆◗✧✱ ✧❈❘✧✱ ✧◆❆❑✧✱ ✧●❙✧✱
✧❆❈❑✧✱ ✧❙❖✧✱ ✧❙❨◆✧✱ ✧❘❙✧✱
✧❇❊▲✧✱ ✧❙■✧✱ ✧❊❚❇✧✱ ✧❯❙✧✱
❧❡①▲✐t❈❤❛r ✿✿ ❘❡❛❞❙ ❙tr✐♥❣ ❧❡①▲✐t❈❤❛r ✭✬❭❭✬✿s✮ ❂ ♠❛♣ ✭♣r❡❢✐① ✬❭❭✬✮ ✭❧❡①❊s❝ s✮ ✇❤❡r❡ ❧❡①❊s❝ ✭❝✿s✮ ⑤ ❝ ❵❡❧❡♠❵ ✧❛❜❢♥rt✈❭❭❭✧✬✧ ❂ ❬✭❬❝❪✱s✮❪ ❧❡①❊s❝ ✭✬❫✬✿❝✿s✮ ⑤ ❝ ❃❂ ✬❅✬ ✫✫ ❝ ❁❂ ✬❴✬ ❂ ❬✭❬✬❫✬✱❝❪✱s✮❪ ✲✲ ×èñëîâûå ýñêåéï✲ñèìâîëû ❧❡①❊s❝ ✭✬♦✬✿s✮ ❂ ❬♣r❡❢✐① ✬♦✬ ✭s♣❛♥ ✐s❖❝t❉✐❣✐t s✮❪ ❧❡①❊s❝ ✭✬①✬✿s✮ ❂ ❬♣r❡❢✐① ✬①✬ ✭s♣❛♥ ✐s❍❡①❉✐❣✐t s✮❪ ❧❡①❊s❝ s❅✭❞✿❴✮ ⑤ ✐s❉✐❣✐t ❞ ❂ ❬s♣❛♥ ✐s❉✐❣✐t s❪ ✲✲ ❰÷åíü ãðóáîå ïðèáëèæåíèå ê ❭❳❨❩✳ ❧❡①❊s❝ s❅✭❝✿❴✮ ⑤ ✐s❯♣♣❡r ❝ ❂ ❬s♣❛♥ ✐s❈❤❛r◆❛♠❡ s❪ ❧❡①❊s❝ ❴ ❂ ❬❪ ✐s❈❤❛r◆❛♠❡ ❝ ❂ ✐s❯♣♣❡r ❝ ⑤⑤ ✐s❉✐❣✐t ❝ ♣r❡❢✐① ❝ ✭t✱s✮ ❂ ✭❝✿t✱ s✮ ❧❡①▲✐t❈❤❛r ✭❝✿s✮ ❧❡①▲✐t❈❤❛r ✧✧
❂ ❬✭❬❝❪✱s✮❪ ❂ ❬❪
✷✹✽
➹❐➚➶➚ ✶✾✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ Ñ➮❒➶❰❐➚❒➮
➹ëàâà ✷✵
Óòèëèòû ðàáîòû ñ ìîíàäàìè ♠♦❞✉❧❡ ▼♦♥❛❞ ✭ ▼♦♥❛❞P❧✉s✭♠③❡r♦✱ ♠♣❧✉s✮✱ ❥♦✐♥✱ ❣✉❛r❞✱ ✇❤❡♥✱ ✉♥❧❡ss✱ ❛♣✱ ♠s✉♠✱ ❢✐❧t❡r▼✱ ♠❛♣❆♥❞❯♥③✐♣▼✱ ③✐♣❲✐t❤▼✱ ③✐♣❲✐t❤▼❴✱ ❢♦❧❞▼✱ ❧✐❢t▼✱ ❧✐❢t▼✷✱ ❧✐❢t▼✸✱ ❧✐❢t▼✹✱ ❧✐❢t▼✺✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ▼♦♥❛❞✭✭❃❃❂✮✱ ✭❃❃✮✱ r❡t✉r♥✱ ❢❛✐❧✮✱ ❋✉♥❝t♦r✭❢♠❛♣✮✱ ♠❛♣▼✱ ♠❛♣▼❴✱ s❡q✉❡♥❝❡✱ s❡q✉❡♥❝❡❴✱ ✭❂❁❁✮✱ ✮ ✇❤❡r❡ ❝❧❛ss ▼♦♥❛❞ ♠ ❂❃ ▼♦♥❛❞P❧✉s ♠ ✇❤❡r❡ ♠③❡r♦ ✿✿ ♠ ❛ ♠♣❧✉s ✿✿ ♠ ❛ ✲❃ ♠ ❛ ✲❃ ♠ ❛ ❥♦✐♥ ❣✉❛r❞ ✇❤❡♥ ✉♥❧❡ss ❛♣
✿✿ ✿✿ ✿✿ ✿✿ ✿✿
▼♦♥❛❞ ♠ ❂❃ ♠ ✭♠ ❛✮ ✲❃ ♠ ❛ ▼♦♥❛❞P❧✉s ♠ ❂❃ ❇♦♦❧ ✲❃ ♠ ✭✮ ▼♦♥❛❞ ♠ ❂❃ ❇♦♦❧ ✲❃ ♠ ✭✮ ✲❃ ♠ ✭✮ ▼♦♥❛❞ ♠ ❂❃ ❇♦♦❧ ✲❃ ♠ ✭✮ ✲❃ ♠ ✭✮ ▼♦♥❛❞ ♠ ❂❃ ♠ ✭❛ ✲❃ ❜✮ ✲❃ ♠ ❛ ✲❃ ♠ ❜
♠❛♣❆♥❞❯♥③✐♣▼ ③✐♣❲✐t❤▼ ③✐♣❲✐t❤▼❴ ❢♦❧❞▼ ❢✐❧t❡r▼
✿✿ ✿✿ ✿✿ ✿✿ ✿✿
▼♦♥❛❞ ▼♦♥❛❞ ▼♦♥❛❞ ▼♦♥❛❞ ▼♦♥❛❞
♠s✉♠
✿✿ ▼♦♥❛❞P❧✉s ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ❛
♠ ♠ ♠ ♠ ♠
❂❃ ❂❃ ❂❃ ❂❃ ❂❃
✭❛ ✭❛ ✭❛ ✭❛ ✭❛
✲❃ ✲❃ ✲❃ ✲❃ ✲❃
♠ ❜ ❜ ❜ ♠
✭❜✱❝✮✮ ✲❃ ❬❛❪ ✲❃ ♠ ✭❬❜❪✱ ✲❃ ♠ ❝✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ✲❃ ♠ ❝✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ✲❃ ♠ ❛✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ♠ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ♠ ❬❛❪
✷✹✾
❬❝❪✮ ♠ ❬❝❪ ♠ ✭✮ ❛
✷✺✵
➹❐➚➶➚ ✷✵✳
❧✐❢t▼ ❧✐❢t▼✷ ❧✐❢t▼✸
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ ❒❰❮➚➘➚❒➮
✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ❜✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜✮ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝ ✲❃ ❞✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝ ✲❃ ♠ ❞✮ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝ ✲❃ ❞ ✲❃ ❡✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝ ✲❃ ♠ ❞ ✲❃ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝ ✲❃ ❞ ✲❃ ❡ ✲❃ ❢✮ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝ ✲❃ ♠ ❞ ✲❃
❧✐❢t▼✹ ❧✐❢t▼✺
➪èáëèîòåêà
▼♦♥❛❞
îïðåäåëÿåò êëàññ
▼♦♥❛❞P❧✉s
✲❃ ♠ ❝✮
♠ ❡✮ ✲❃ ♠ ❡ ✲❃ ♠ ❢✮
è îáåñïå÷èâàåò íåêîòîðûå ïîëåçíûå
îïåðàöèè íàä ìîíàäàìè✳
✷✵✳✶
Ñîãëàøåíèÿ îá èìåíàõ
Ôóíêöèè â ýòîé áèáëèîòåêå èñïîëüçóþò ñëåäóþùèå ñîãëàøåíèÿ îá èìåíàõ✿
•
Ñóôôèêñ
✏ ▼✑
âñåãäà
îáîçíà÷àåò
ôóíêöèþ
â
êàòåãîðèè
✃ëåéñëè
✭❑❧❡✐s❧✐✮✿
♠
äîáàâëÿåòñÿ ê ðåçóëüòàòàì ôóíêöèè ✭êàððèíã ïî ìîäóëþ✮ è áîëüøå íèãäå✳ Òàê✱ íàïðèìåð✱
❢✐❧t❡r ✿✿ ✭❛ ✲❃ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ❬❛❪ ❢✐❧t❡r▼ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ♠ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ♠ ❬❛❪ •
Ñóôôèêñ ✏ ❴✑ ìåíÿåò òèï ðåçóëüòàòà
✭♠ ❛✮ íà ✭♠ ✭✮✮✳ Òàêèì îáðàçîì ✭â Pr❡❧✉❞❡✮✿
s❡q✉❡♥❝❡ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ❬❛❪ s❡q✉❡♥❝❡❴ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ✭✮ •
Ïðèñòàâêà ✏ ♠✑ îáîáùàåò ñóùåñòâóþùóþ ôóíêöèþ íà ìîíàäè÷åñêóþ ôîðìó✳ Òàêèì îáðàçîì✱ íàïðèìåð✿
s✉♠ ✿✿ ◆✉♠ ❛ ❂❃ ❬❛❪ ✲❃ ❛ ♠s✉♠ ✿✿ ▼♦♥❛❞P❧✉s ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ❛
✷✵✳✷
✃ëàññ
✃ëàññ
▼♦♥❛❞P❧✉s
▼♦♥❛❞P❧✉s îïðåäåëåí ñëåäóþùèì îáðàçîì✿
❝❧❛ss ▼♦♥❛❞ ♠ ❂❃ ▼♦♥❛❞P❧✉s ♠ ✇❤❡r❡ ♠③❡r♦ ✿✿ ♠ ❛ ♠♣❧✉s ✿✿ ♠ ❛ ✲❃ ♠ ❛ ✲❃ ♠ ❛
✷✵✳✸✳
✷✺✶
ÔÓ❮✃Ö➮➮
❒åòîäû êëàññà Ñïèñêè è òèï
♠③❡r♦
▼❛②❜❡
è
♠♣❧✉s
ÿâëÿþòñÿ ñîîòâåòñòâåííî íóëåì è ïëþñîì äëÿ ìîíàäû✳
ÿâëÿþòñÿ ýêçåìïëÿðàìè êëàññà
▼♦♥❛❞P❧✉s✱
òàêèì îáðàçîì✿
✐♥st❛♥❝❡ ▼♦♥❛❞P❧✉s ▼❛②❜❡ ✇❤❡r❡ ♠③❡r♦ ❂ ◆♦t❤✐♥❣ ◆♦t❤✐♥❣ ❵♠♣❧✉s❵ ②s ❂ ②s ①s ❵♠♣❧✉s❵ ②s ❂ ①s ✐♥st❛♥❝❡ ▼♦♥❛❞P❧✉s ❬❪ ✇❤❡r❡ ♠③❡r♦ ❂ ❬❪ ♠♣❧✉s ❂ ✭✰✰✮
✷✵✳✸
Ôóíêöèè
Ôóíêöèÿ
❥♦✐♥ ÿâëÿåòñÿ îáû÷íûì îïåðàòîðîì îáúåäèíåíèÿ ìîíàä✳ ❰í èñïîëüçóåòñÿ äëÿ
òîãî✱ ÷òîáû óáðàòü îäèí óðîâåíü ìîíàäè÷åñêîé ñòðóêòóðû✱ ïðîåêòèðóÿ åãî ñâÿçàííûé àðãóìåíò âî âíåøíèé óðîâåíü✳ Ôóíêöèÿ
♠❛♣❆♥❞❯♥③✐♣▼ óñòàíàâëèâàåò ñîîòâåòñòâèå ✭îòîáðàæàåò✮ ìåæäó ñâîèì ïåðâûì
àðãóìåíòîì è ñïèñêîì✱ âîçâðàùàÿ ðåçóëüòàò â âèäå ïàðû ñïèñêîâ✳ Ýòà ôóíêöèÿ ãëàâíûì îáðàçîì èñïîëüçóåòñÿ ñî ñëîæíûìè ñòðóêòóðàìè äàííûõ èëè ñ ìîíàäîé ïðåîáðàçîâàíèé ñîñòîÿíèé✳ Ôóíêöèÿ
③✐♣❲✐t❤▼ îáîáùàåò ③✐♣❲✐t❤ íà ïðîèçâîëüíûå ìîíàäû✳ ❮àïðèìåð✱ ñëåäóþùàÿ
ôóíêöèÿ âûâîäèò íà ýêðàí ôàéë✱ äîáàâëÿÿ â íà÷àëî êàæäîé ñòðîêè åå íîìåð✿
❧✐st❋✐❧❡ ✿✿ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❧✐st❋✐❧❡ ♥♠ ❂ ❞♦ ❝ts ❁✲ r❡❛❞❋✐❧❡ ♥♠ ③✐♣❲✐t❤▼❴ ✭❭✐ ❧✐♥❡ ✲❃ ❞♦ ♣✉t❙tr ✭s❤♦✇ ✐✮❀ ♣✉t❙tr ✧✿ ✧❀ ♣✉t❙tr▲♥ ❧✐♥❡✮ ❬✶✳✳❪ ✭❧✐♥❡s ❝ts✮ Ôóíêöèÿ
❢♦❧❞▼
èíêàïñóëèðóåòñÿ
àíàëîãè÷íà â
ìîíàäå✳
❢♦❧❞❧✱
çà
❰áðàòèòå
èñêëþ÷åíèåì âíèìàíèå✱
òîãî✱
÷òî
÷òî
❢♦❧❞▼
åå
ðåçóëüòàò
ðàáîòàåò
íàä
ïåðå÷èñëåííûìè àðãóìåíòàìè ñëåâà íàïðàâî✳ Ïðè ýòîì ìîãëà áû âîçíèêíóòü ïðîáëåìà òàì✱ ãäå
❂❂
✭❃❃✮
è ✏ñâîðà÷èâàþùàÿ ôóíêöèÿ✑ íå ÿâëÿþòñÿ êîììóòàòèâíûìè✳
❢♦❧❞▼ ❢ ❛✶ ❬①✶✱ ①✷✱ ✳✳✳✱ ①♠ ❪ ❞♦ ❛✷ ❁✲ ❢ ❛✶ ①✶ ❛✸ ❁✲ ❢ ❛✷ ①✷ ✳✳✳ ❢ ❛♠ ①♠
✷✺✷
➹❐➚➶➚ ✷✵✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ ❒❰❮➚➘➚❒➮
➴ñëè òðåáóåòñÿ âû÷èñëåíèå ñïðàâà íàëåâî✱ âõîäíîé ñïèñîê ñëåäóåò îáðàòèòü ✭ïîìåíÿòü ïîðÿäîê ýëåìåíòîâ íà îáðàòíûé✮✳ Ôóíêöèè
✇❤❡♥ è ✉♥❧❡ss îáåñïå÷èâàþò óñëîâíîå âûïîëíåíèå ìîíàäè÷åñêèõ âûðàæåíèé✳
❮àïðèìåð✱
✇❤❡♥ ❞❡❜✉❣ ✭♣✉t❙tr ✧❰òëàäêà❭♥✧✮ âûâåäåò ñòðîêó
✧❰òëàäêà❭♥✧✱
åñëè áóëåâî çíà÷åíèå
❞❡❜✉❣
ðàâíÿåòñÿ
❚r✉❡✱
èíà÷å íå
âûâåäåò íè÷åãî✳ ❒îíàäè÷åñêîå ïîâûøåíèå îïåðàòîðîâ ïîâûøàåò ôóíêöèþ äî ìîíàäû✳ ➚ðãóìåíòû ôóíêöèè ðàññìàòðèâàþòñÿ ñëåâà íàïðàâî✳ ❮àïðèìåð✱
❧✐❢t▼✷ ✭✰✮ ❬✵✱✶❪ ❬✵✱✷❪ ❂ ❬✵✱✷✱✶✱✸❪ ❧✐❢t▼✷ ✭✰✮ ✭❏✉st ✶✮ ◆♦t❤✐♥❣ ❂ ◆♦t❤✐♥❣
➶î ìíîãèõ ñèòóàöèÿõ îïåðàöèè
❧✐❢t▼
êîòîðîå ïîâûøàåò ïðèìåíåíèå ôóíêöèè✳
r❡t✉r♥ ❢ ❵❛♣❵ ①✶ ❵❛♣❵ ✳✳✳ ❵❛♣❵ ①♥ ýêâèâàëåíòíî
❧✐❢t▼♥ ❢ ①✶ ①✷ ✳✳✳ ①♥
ìîãóò áûòü çàìåíåíû íà èñïîëüçîâàíèå
❛♣✱
✷✵✳✹✳
➪➮➪❐➮❰Ò➴✃➚
✷✵✳✹
▼❖◆❆❉
➪èáëèîòåêà
✷✺✸
▼♦♥❛❞
♠♦❞✉❧❡ ▼♦♥❛❞ ✭ ▼♦♥❛❞P❧✉s✭♠③❡r♦✱ ♠♣❧✉s✮✱ ❥♦✐♥✱ ❣✉❛r❞✱ ✇❤❡♥✱ ✉♥❧❡ss✱ ❛♣✱ ♠s✉♠✱ ❢✐❧t❡r▼✱ ♠❛♣❆♥❞❯♥③✐♣▼✱ ③✐♣❲✐t❤▼✱ ③✐♣❲✐t❤▼❴✱ ❢♦❧❞▼✱ ❧✐❢t▼✱ ❧✐❢t▼✷✱ ❧✐❢t▼✸✱ ❧✐❢t▼✹✱ ❧✐❢t▼✺✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ▼♦♥❛❞✭✭❃❃❂✮✱ ✭❃❃✮✱ r❡t✉r♥✱ ❢❛✐❧✮✱ ❋✉♥❝t♦r✭❢♠❛♣✮✱ ♠❛♣▼✱ ♠❛♣▼❴✱ s❡q✉❡♥❝❡✱ s❡q✉❡♥❝❡❴✱ ✭❂❁❁✮✱ ✮ ✇❤❡r❡ ✲✲ ❰ïðåäåëåíèå êëàññà ▼♦♥❛❞P❧✉s ❝❧❛ss ✭▼♦♥❛❞ ♠✮ ❂❃ ▼♦♥❛❞P❧✉s ♠ ♠③❡r♦ ✿✿ ♠ ❛ ♠♣❧✉s ✿✿ ♠ ❛ ✲❃ ♠ ❛ ✲❃ ♠ ❛
✇❤❡r❡
✲✲ Ýêçåìïëÿðû êëàññà ▼♦♥❛❞P❧✉s ✐♥st❛♥❝❡ ▼♦♥❛❞P❧✉s ▼❛②❜❡ ✇❤❡r❡ ♠③❡r♦ ❂ ◆♦t❤✐♥❣ ◆♦t❤✐♥❣ ❵♠♣❧✉s❵ ②s ①s ❵♠♣❧✉s❵ ②s ✐♥st❛♥❝❡ ▼♦♥❛❞P❧✉s ❬❪ ♠③❡r♦ ❂ ❬❪ ♠♣❧✉s ❂ ✭✰✰✮
❂ ②s ❂ ①s ✇❤❡r❡
✲✲ Ôóíêöèè ♠s✉♠ ♠s✉♠ ①s
✿✿ ▼♦♥❛❞P❧✉s ♠ ❂❃ ❬♠ ❛❪ ✲❃ ♠ ❛ ❂ ❢♦❧❞r ♠♣❧✉s ♠③❡r♦ ①s
❥♦✐♥ ❥♦✐♥ ①
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ♠ ✭♠ ❛✮ ✲❃ ♠ ❛ ❂ ① ❃❃❂ ✐❞
✇❤❡♥ ✇❤❡♥ ♣ s
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ❇♦♦❧ ✲❃ ♠ ✭✮ ✲❃ ♠ ✭✮ ❂ ✐❢ ♣ t❤❡♥ s ❡❧s❡ r❡t✉r♥ ✭✮
✉♥❧❡ss ✉♥❧❡ss ♣ s
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ❇♦♦❧ ✲❃ ♠ ✭✮ ✲❃ ♠ ✭✮ ❂ ✇❤❡♥ ✭♥♦t ♣✮ s
❛♣ ❛♣
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ♠ ✭❛ ✲❃ ❜✮ ✲❃ ♠ ❛ ✲❃ ♠ ❜ ❂ ❧✐❢t▼✷ ✭✩✮
❣✉❛r❞ ❣✉❛r❞ ♣
✿✿ ▼♦♥❛❞P❧✉s ♠ ❂❃ ❇♦♦❧ ✲❃ ♠ ✭✮ ❂ ✐❢ ♣ t❤❡♥ r❡t✉r♥ ✭✮ ❡❧s❡ ♠③❡r♦
♠❛♣❆♥❞❯♥③✐♣▼ ✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ♠ ✭❜✱❝✮✮ ✲❃ ❬❛❪ ✲❃ ♠ ✭❬❜❪✱ ❬❝❪✮ ♠❛♣❆♥❞❯♥③✐♣▼ ❢ ①s ❂ s❡q✉❡♥❝❡ ✭♠❛♣ ❢ ①s✮ ❃❃❂ r❡t✉r♥ ✳ ✉♥③✐♣
✷✺✹
➹❐➚➶➚ ✷✵✳
ÓÒ➮❐➮ÒÛ Ð➚➪❰ÒÛ Ñ ❒❰❮➚➘➚❒➮
③✐♣❲✐t❤▼ ✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ♠ ❝✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ♠ ❬❝❪ ③✐♣❲✐t❤▼ ❢ ①s ②s ❂ s❡q✉❡♥❝❡ ✭③✐♣❲✐t❤ ❢ ①s ②s✮ ③✐♣❲✐t❤▼❴ ✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ♠ ❝✮ ✲❃ ❬❛❪ ✲❃ ❬❜❪ ✲❃ ♠ ✭✮ ③✐♣❲✐t❤▼❴ ❢ ①s ②s ❂ s❡q✉❡♥❝❡❴ ✭③✐♣❲✐t❤ ❢ ①s ②s✮ ❢♦❧❞▼ ✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ♠ ❛✮ ✲❃ ❛ ✲❃ ❬❜❪ ✲❃ ♠ ❛ ❢♦❧❞▼ ❢ ❛ ❬❪ ❂ r❡t✉r♥ ❛ ❢♦❧❞▼ ❢ ❛ ✭①✿①s✮ ❂ ❢ ❛ ① ❃❃❂ ❭ ② ✲❃ ❢♦❧❞▼ ❢ ② ①s ❢✐❧t❡r▼ ✿✿ ▼♦♥❛❞ ♠ ❂❃ ✭❛ ✲❃ ♠ ❇♦♦❧✮ ✲❃ ❬❛❪ ✲❃ ♠ ❬❛❪ ❢✐❧t❡r▼ ♣ ❬❪ ❂ r❡t✉r♥ ❬❪ ❢✐❧t❡r▼ ♣ ✭①✿①s✮ ❂ ❞♦ ④ ❜ ❁✲ ♣ ①❀ ②s ❁✲ ❢✐❧t❡r▼ ♣ ①s❀ r❡t✉r♥ ✭✐❢ ❜ t❤❡♥ ✭①✿②s✮ ❡❧s❡ ②s✮ ⑥ ❧✐❢t▼ ❧✐❢t▼ ❢
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜✮ ❂ ❭❛ ✲❃ ❞♦ ④ ❛✬ ❁✲ ❛❀ r❡t✉r♥ ✭❢ ❛✬✮ ⑥
❧✐❢t▼✷ ❧✐❢t▼✷ ❢
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝✮ ❂ ❭❛ ❜ ✲❃ ❞♦ ④ ❛✬ ❁✲ ❛❀ ❜✬ ❁✲ ❜❀ r❡t✉r♥ ✭❢ ❛✬ ❜✬✮ ⑥
❧✐❢t▼✸
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝ ✲❃ ❞✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝ ✲❃ ♠ ❞✮ ❂ ❭❛ ❜ ❝ ✲❃ ❞♦ ④ ❛✬ ❁✲ ❛❀ ❜✬ ❁✲ ❜❀ ❝✬ ❁✲ ❝❀ r❡t✉r♥ ✭❢ ❛✬ ❜✬ ❝✬✮ ⑥
❧✐❢t▼✸ ❢ ❧✐❢t▼✹ ❧✐❢t▼✹ ❢ ❧✐❢t▼✺ ❧✐❢t▼✺ ❢
✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝ ✲❃ ❞ ✲❃ ❡✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝ ✲❃ ♠ ❞ ✲❃ ♠ ❡✮ ❂ ❭❛ ❜ ❝ ❞ ✲❃ ❞♦ ④ ❛✬ ❁✲ ❛❀ ❜✬ ❁✲ ❜❀ ❝✬ ❁✲ ❝❀ ❞✬ ❁✲ ❞❀ r❡t✉r♥ ✭❢ ❛✬ ❜✬ ❝✬ ❞✬✮ ⑥ ✿✿ ✭▼♦♥❛❞ ♠✮ ❂❃ ✭❛ ✲❃ ❜ ✲❃ ❝ ✲❃ ❞ ✲❃ ❡ ✲❃ ❢✮ ✲❃ ✭♠ ❛ ✲❃ ♠ ❜ ✲❃ ♠ ❝ ✲❃ ♠ ❞ ✲❃ ♠ ❡ ✲❃ ♠ ❢✮ ❂ ❭❛ ❜ ❝ ❞ ❡ ✲❃ ❞♦ ④ ❛✬ ❁✲ ❛❀ ❜✬ ❁✲ ❜❀ ❝✬ ❁✲ ❝❀ ❞✬ ❁✲ ❞❀ ❡✬ ❁✲ ❡❀ r❡t✉r♥ ✭❢ ❛✬ ❜✬ ❝✬ ❞✬ ❡✬✮ ⑥
➹ëàâà ✷✶ ➶âîä ✲ âûâîä
♠♦❞✉❧❡ ■❖ ✭ ❍❛♥❞❧❡✱ ❍❛♥❞❧❡P♦s♥✱ ■❖▼♦❞❡✭❘❡❛❞▼♦❞❡✱❲r✐t❡▼♦❞❡✱❆♣♣❡♥❞▼♦❞❡✱❘❡❛❞❲r✐t❡▼♦❞❡✮✱ ❇✉❢❢❡r▼♦❞❡✭◆♦❇✉❢❢❡r✐♥❣✱▲✐♥❡❇✉❢❢❡r✐♥❣✱❇❧♦❝❦❇✉❢❢❡r✐♥❣✮✱ ❙❡❡❦▼♦❞❡✭❆❜s♦❧✉t❡❙❡❡❦✱❘❡❧❛t✐✈❡❙❡❡❦✱❙❡❡❦❋r♦♠❊♥❞✮✱ st❞✐♥✱ st❞♦✉t✱ st❞❡rr✱ ♦♣❡♥❋✐❧❡✱ ❤❈❧♦s❡✱ ❤❋✐❧❡❙✐③❡✱ ❤■s❊❖❋✱ ✐s❊❖❋✱ ❤❙❡t❇✉❢❢❡r✐♥❣✱ ❤●❡t❇✉❢❢❡r✐♥❣✱ ❤❋❧✉s❤✱ ❤●❡tP♦s♥✱ ❤❙❡tP♦s♥✱ ❤❙❡❡❦✱ ❤❲❛✐t❋♦r■♥♣✉t✱ ❤❘❡❛❞②✱ ❤●❡t❈❤❛r✱ ❤●❡t▲✐♥❡✱ ❤▲♦♦❦❆❤❡❛❞✱ ❤●❡t❈♦♥t❡♥ts✱ ❤P✉t❈❤❛r✱ ❤P✉t❙tr✱ ❤P✉t❙tr▲♥✱ ❤Pr✐♥t✱ ❤■s❖♣❡♥✱ ❤■s❈❧♦s❡❞✱ ❤■s❘❡❛❞❛❜❧❡✱ ❤■s❲r✐t❛❜❧❡✱ ❤■s❙❡❡❦❛❜❧❡✱ ✐s❆❧r❡❛❞②❊①✐sts❊rr♦r✱ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ ✐s❆❧r❡❛❞②■♥❯s❡❊rr♦r✱ ✐s❋✉❧❧❊rr♦r✱ ✐s❊❖❋❊rr♦r✱ ✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✱ ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ ✐s❯s❡r❊rr♦r✱ ✐♦❡●❡t❊rr♦r❙tr✐♥❣✱ ✐♦❡●❡t❍❛♥❞❧❡✱ ✐♦❡●❡t❋✐❧❡◆❛♠❡✱ tr②✱ ❜r❛❝❦❡t✱ ❜r❛❝❦❡t❴✱ ✲✲ ✳✳✳è òî✱ ÷òî ýêñïîðòèðóåò Pr❡❧✉❞❡ ■❖✱ ❋✐❧❡P❛t❤✱ ■❖❊rr♦r✱ ✐♦❊rr♦r✱ ✉s❡r❊rr♦r✱ ❝❛t❝❤✱ ✐♥t❡r❛❝t✱ ♣✉t❈❤❛r✱ ♣✉t❙tr✱ ♣✉t❙tr▲♥✱ ♣r✐♥t✱ ❣❡t❈❤❛r✱ ❣❡t▲✐♥❡✱ ❣❡t❈♦♥t❡♥ts✱ r❡❛❞❋✐❧❡✱ ✇r✐t❡❋✐❧❡✱ ❛♣♣❡♥❞❋✐❧❡✱ r❡❛❞■❖✱ r❡❛❞▲♥ ✮ ✇❤❡r❡ ✐♠♣♦rt ■①✭■①✮ ❞❛t❛ ❍❛♥❞❧❡ ❂ ✳✳✳ ✐♥st❛♥❝❡ ❊q ❍❛♥❞❧❡ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❙❤♦✇ ❍❛♥❞❧❡ ✇❤❡r❡ ✳✳
✲✲ çàâèñèò îò ðåàëèçàöèè
❞❛t❛ ❍❛♥❞❧❡P♦s♥ ❂ ✳✳✳ ✐♥st❛♥❝❡ ❊q ❍❛♥❞❧❡P♦s♥ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❙❤♦✇ ❍❛♥❞❧❡P♦s♥ ✇❤❡r❡ ✲✲✲
✲✲ çàâèñèò îò ðåàëèçàöèè
✲✲ çàâèñèò îò ðåàëèçàöèè
✲✲ çàâèñèò îò ðåàëèçàöèè
✷✺✺
✷✺✻ ❞❛t❛ ■❖▼♦❞❡
➹❐➚➶➚ ✷✶✳
❂
➶➶❰➘ ✲ ➶Û➶❰➘
❘❡❛❞▼♦❞❡ ⑤ ❲r✐t❡▼♦❞❡ ⑤ ❆♣♣❡♥❞▼♦❞❡ ⑤ ❘❡❛❞❲r✐t❡▼♦❞❡ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ■①✱ ❇♦✉♥❞❡❞✱ ❊♥✉♠✱ ❘❡❛❞✱ ❙❤♦✇✮ ❞❛t❛ ❇✉❢❢❡r▼♦❞❡ ❂ ◆♦❇✉❢❢❡r✐♥❣ ⑤ ▲✐♥❡❇✉❢❢❡r✐♥❣ ⑤ ❇❧♦❝❦❇✉❢❢❡r✐♥❣ ✭▼❛②❜❡ ■♥t✮ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮ ❞❛t❛ ❙❡❡❦▼♦❞❡ ❂ ❆❜s♦❧✉t❡❙❡❡❦ ⑤ ❘❡❧❛t✐✈❡❙❡❡❦ ⑤ ❙❡❡❦❋r♦♠❊♥❞ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ■①✱ ❇♦✉♥❞❡❞✱ ❊♥✉♠✱ ❘❡❛❞✱ ❙❤♦✇✮ st❞✐♥✱ st❞♦✉t✱ st❞❡rr ✿✿ ❍❛♥❞❧❡ ♦♣❡♥❋✐❧❡ ❤❈❧♦s❡
✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖▼♦❞❡ ✲❃ ■❖ ❍❛♥❞❧❡ ✿✿ ❍❛♥❞❧❡ ✲❃ ■❖ ✭✮
✷✺✼
❤❋✐❧❡❙✐③❡ ❤■s❊❖❋ ✐s❊❖❋ ✐s❊❖❋
✿✿ ✿✿ ✿✿ ❂
❍❛♥❞❧❡ ✲❃ ■❖ ■♥t❡❣❡r ❍❛♥❞❧❡ ✲❃ ■❖ ❇♦♦❧ ■❖ ❇♦♦❧ ❤■s❊❖❋ st❞✐♥
❤❙❡t❇✉❢❢❡r✐♥❣ ❤●❡t❇✉❢❢❡r✐♥❣ ❤❋❧✉s❤ ❤●❡tP♦s♥ ❤❙❡tP♦s♥ ❤❙❡❡❦
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❍❛♥❞❧❡ ✲❃ ❇✉❢❢❡r▼♦❞❡ ✲❃ ■❖ ✭✮ ❍❛♥❞❧❡ ✲❃ ■❖ ❇✉❢❢❡r▼♦❞❡ ❍❛♥❞❧❡ ✲❃ ■❖ ✭✮ ❍❛♥❞❧❡ ✲❃ ■❖ ❍❛♥❞❧❡P♦s♥ ❍❛♥❞❧❡P♦s♥ ✲❃ ■❖ ✭✮ ❍❛♥❞❧❡ ✲❃ ❙❡❡❦▼♦❞❡ ✲❃ ■♥t❡❣❡r ✲❃ ■❖ ✭✮
❤❲❛✐t❋♦r■♥♣✉t ❤❘❡❛❞② ❤❘❡❛❞② ❤ ❤●❡t❈❤❛r ❤●❡t▲✐♥❡ ❤▲♦♦❦❆❤❡❛❞ ❤●❡t❈♦♥t❡♥ts ❤P✉t❈❤❛r ❤P✉t❙tr ❤P✉t❙tr▲♥ ❤Pr✐♥t
✿✿ ✿✿ ❂ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❍❛♥❞❧❡ ✲❃ ■♥t ✲❃ ■❖ ❇♦♦❧ ❍❛♥❞❧❡ ✲❃ ■❖ ❇♦♦❧ ❤❲❛✐t❋♦r■♥♣✉t ❤ ✵ ❍❛♥❞❧❡ ✲❃ ■❖ ❈❤❛r ❍❛♥❞❧❡ ✲❃ ■❖ ❙tr✐♥❣ ❍❛♥❞❧❡ ✲❃ ■❖ ❈❤❛r ❍❛♥❞❧❡ ✲❃ ■❖ ❙tr✐♥❣ ❍❛♥❞❧❡ ✲❃ ❈❤❛r ✲❃ ■❖ ✭✮ ❍❛♥❞❧❡ ✲❃ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❍❛♥❞❧❡ ✲❃ ❙tr✐♥❣ ✲❃ ■❖ ✭✮ ❙❤♦✇ ❛ ❂❃ ❍❛♥❞❧❡ ✲❃ ❛ ✲❃ ■❖ ✭✮
❤■s❖♣❡♥ ❤■s❈❧♦s❡❞ ❤■s❘❡❛❞❛❜❧❡ ❤■s❲r✐t❛❜❧❡ ❤■s❙❡❡❦❛❜❧❡
✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❍❛♥❞❧❡ ❍❛♥❞❧❡ ❍❛♥❞❧❡ ❍❛♥❞❧❡ ❍❛♥❞❧❡
✐s❆❧r❡❛❞②❊①✐sts❊rr♦r ✐s❉♦❡s◆♦t❊①✐st❊rr♦r ✐s❆❧r❡❛❞②■♥❯s❡❊rr♦r ✐s❋✉❧❧❊rr♦r ✐s❊❖❋❊rr♦r ✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥ ✐sP❡r♠✐ss✐♦♥❊rr♦r ✐s❯s❡r❊rr♦r
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
■❖❊rr♦r ■❖❊rr♦r ■❖❊rr♦r ■❖❊rr♦r ■❖❊rr♦r ■❖❊rr♦r ■❖❊rr♦r ■❖❊rr♦r
✐♦❡●❡t❊rr♦r❙tr✐♥❣ ✐♦❡●❡t❍❛♥❞❧❡ ✐♦❡●❡t❋✐❧❡◆❛♠❡
✿✿ ■❖❊rr♦r ✲❃ ❙tr✐♥❣ ✿✿ ■❖❊rr♦r ✲❃ ▼❛②❜❡ ❍❛♥❞❧❡ ✿✿ ■❖❊rr♦r ✲❃ ▼❛②❜❡ ❋✐❧❡P❛t❤
tr② ❜r❛❝❦❡t ❜r❛❝❦❡t❴
✿✿ ■❖ ❛ ✲❃ ■❖ ✭❊✐t❤❡r ■❖❊rr♦r ❛✮ ✿✿ ■❖ ❛ ✲❃ ✭❛ ✲❃ ■❖ ❜✮ ✲❃ ✭❛ ✲❃ ■❖ ❝✮ ✲❃ ■❖ ❝ ✿✿ ■❖ ❛ ✲❃ ✭❛ ✲❃ ■❖ ❜✮ ✲❃ ■❖ ❝ ✲❃ ■❖ ❝
✲❃ ✲❃ ✲❃ ✲❃ ✲❃
■❖ ■❖ ■❖ ■❖ ■❖
✲❃ ✲❃ ✲❃ ✲❃ ✲❃ ✲❃ ✲❃ ✲❃
❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧
❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧ ❇♦♦❧
❒îíàäè÷åñêàÿ ñèñòåìà ââîäà ✲ âûâîäà✱ èñïîëüçóåìàÿ â ❍❛s❦❡❧❧✱ îïèñàíà â îïèñàíèè ÿçûêà ❍❛s❦❡❧❧✳ ❰áùåóïîòðåáèòåëüíûå ôóíêöèè ââîäà ✲ âûâîäà✱ òàêèå êàê
♣r✐♥t✱
ÿâëÿþòñÿ ÷àñòüþ ñòàíäàðòíîãî íà÷àëà ✭Pr❡❧✉❞❡✮ è íåò íåîáõîäèìîñòè èõ ÿâíî
✷✺✽
➹❐➚➶➚ ✷✶✳
➶➶❰➘ ✲ ➶Û➶❰➘
èìïîðòèðîâàòü✳ Ýòà áèáëèîòåêà ñîäåðæèò áîëåå ïðîäâèíóòûå ñðåäñòâà ââîäà ✲ âûâîäà✳ ❮åêîòîðûå îòíîñÿùèåñÿ ê íèì îïåðàöèè íàä ôàéëîâûìè ñèñòåìàìè ñîäåðæàòñÿ â áèáëèîòåêå ❉✐r❡❝t♦r②✳ ✷✶✳✶
❰øèáêè ââîäà ✲ âûâîäà
❰øèáêè òèïà ■❖❊rr♦r èñïîëüçóþòñÿ ìîíàäîé ââîäà ✲ âûâîäà✳ Ýòî àáñòðàêòíûé òèï❀ áèáëèîòåêà îáåñïå÷èâàåò ôóíêöèè äëÿ îïðîñà è êîíñòðóèðîâàíèÿ çíà÷åíèé â ■❖❊rr♦r✿ ✖ îïåðàöèÿ çàâåðøèëàñü íåóñïåøíî✱ ïîòîìó ÷òî îäèí èç åå àðãóìåíòîâ óæå ñóùåñòâóåò✳ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r ✖ îïåðàöèÿ çàâåðøèëàñü íåóñïåøíî✱ ïîòîìó ÷òî îäèí èç åå àðãóìåíòîâ íå ñóùåñòâóåò✳ ✐s❆❧r❡❛❞②■♥❯s❡❊rr♦r ✖ îïåðàöèÿ çàâåðøèëàñü íåóñïåøíî✱ ïîòîìó ÷òî îäèí èç åå àðãóìåíòîâ ÿâëÿåòñÿ îäíîïîëüçîâàòåëüñêèì ðåñóðñîì✱ êîòîðûé óæå èñïîëüçóåòñÿ ✭íàïðèìåð✱ îòêðûòèå îäíîãî è òîãî æå ôàéëà äâàæäû äëÿ çàïèñè ìîæåò âûçâàòü ýòó îøèáêó✮✳ ✐s❋✉❧❧❊rr♦r ✖ îïåðàöèÿ çàâåðøèëàñü íåóñïåøíî✱ ïîòîìó ÷òî óñòðîéñòâî çàïîëíåíî✳ ✐s❊❖❋❊rr♦r ✖ îïåðàöèÿ çàâåðøèëàñü íåóñïåøíî✱ ïîòîìó ÷òî áûë äîñòèãíóò êîíåö ôàéëà✳ ✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥ ✖ îïåðàöèÿ íåâîçìîæíà✳ ✐sP❡r♠✐ss✐♦♥❊rr♦r ✖ îïåðàöèÿ çàâåðøèëàñü íåóñïåøíî✱ ïîòîìó ÷òî ïîëüçîâàòåëü íå èìååò äîñòàòî÷íî ïðèâèëåãèé îïåðàöèîííîé ñèñòåìû íà âûïîëíåíèå ýòîé îïåðàöèè✳ ✐s❯s❡r❊rr♦r ✖ îïðåäåëåííîå ïðîãðàììèñòîì çíà÷åíèå îøèáêè âûçâàíî èñïîëüçîâàíèåì ❢❛✐❧✳
• ✐s❆❧r❡❛❞②❊①✐sts❊rr♦r • •
• • • •
•
➶ñå ýòè ôóíêöèè âîçâðàùàþò çíà÷åíèå òèïà ❇♦♦❧✱ êîòîðîå ðàâíî ❚r✉❡✱ åñëè åå àðãóìåíòîì ÿâëÿåòñÿ ñîîòâåòñòâóþùèé âèä îøèáêè✱ è ❋❛❧s❡ èíà÷å✳ ❐þáàÿ ôóíêöèÿ✱ êîòîðàÿ âîçâðàùàåò ðåçóëüòàò ■❖✱ ìîæåò çàâåðøèòüñÿ ñ îøèáêîé ✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✳ ➘îïîëíèòåëüíûå îøèáêè✱ êîòîðûå ìîãóò áûòü âûçâàíû ðåàëèçàöèåé✱ ïåðå÷èñëåíû ïîñëå ñîîòâåòñòâóþùåé îïåðàöèè✳ ➶ íåêîòîðûõ ñëó÷àÿõ ðåàëèçàöèÿ íå ñïîñîáíà ðàçëè÷èòü âîçìîæíûå ïðè÷èíû îøèáêè✳ ➶ ýòîì ñëó÷àå îíà äîëæíà âåðíóòü ✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✳ ➮ìåþòñÿ òðè äîïîëíèòåëüíûå ôóíêöèè äëÿ òîãî✱ ÷òîáû ïîëó÷èòü èíôîðìàöèþ î çíà÷åíèè îøèáêè✱ ✖ ýòî ✐♦❡●❡t❍❛♥❞❧❡✱ êîòîðàÿ âîçâðàùàåò ❏✉st hdl ✱ åñëè çíà÷åíèå
✷✶✳✷✳
✷✺✾
Ô➚➱❐Û ➮ ➘➴Ñ✃Ð➮ÏÒ❰ÐÛ
îøèáêè îòíîñèòñÿ ê äåñêðèïòîðó
hdl ✱
è
◆♦t❤✐♥❣
✐♦❡●❡t❋✐❧❡◆❛♠❡✱ êîòîðàÿ ôàéëó èìÿ✱ è ◆♦t❤✐♥❣ èíà÷å❀
èíà÷å❀
❏✉st èìÿ✱ åñëè çíà÷åíèå îøèáêè îòíîñèòñÿ ê ✐♦❡●❡t❊rr♦r❙tr✐♥❣✱ êîòîðàÿ âîçâðàùàåò ñòðîêó✳ ➘ëÿ ✏ïîëüçîâàòåëüñêèõ✑ îøèáîê ✭êîòîðûå âûçâàíû èñïîëüçîâàíèåì ❢❛✐❧✮✱ ñòðîêà✱ âîçâðàùåííàÿ ✐♦❡●❡t❊rr♦r❙tr✐♥❣✱ ÿâëÿåòñÿ àðãóìåíòîì✱ êîòîðûé áûë ïåðåäàí â ❢❛✐❧❀ äëÿ âñåõ îñòàëüíûõ îøèáîê ñòðîêà âîçâðàùàåò è
çàâèñèò îò ðåàëèçàöèè✳ Ôóíêöèÿ Ôóíêöèÿ
tr②
âîçâðàùàåò îøèáêó â âû÷èñëåíèè✱ ÿâíî èñïîëüçóþùåì òèï
❜r❛❝❦❡t
îõâàòûâàåò
îáû÷íûé
ñïîñîá
âûäåëåíèÿ
ïàìÿòè✱
❊✐t❤❡r
✳
âû÷èñëåíèÿ
è
îñâîáîæäåíèÿ ïàìÿòè✱ â êîòîðîì øàã îñâîáîæäåíèÿ äîëæåí ïðîèçîéòè äàæå â ñëó÷àå îøèáêè âî âðåìÿ âû÷èñëåíèÿ✳ Ýòî àíàëîãè÷íî tr②✲❝❛t❝❤✲❢✐♥❛❧❧② â ❏❛✈❛✳
✷✶✳✷
Ôàéëû è äåñêðèïòîðû
❍❛s❦❡❧❧ âçàèìîäåéñòâóåò ñ âíåøíåì ìèðîì ÷åðåç àáñòðàêòíóþ
ôàéëîâóþ ñèñòåìó✳ Ýòà
ôàéëîâàÿ ñèñòåìà ïðåäñòàâëÿåò ñîáîé ñîâîêóïíîñòü èìåíîâàííûõ
îáúåêòîâ ôàéëîâîé
ñèñòåìû✱ êîòîðûå ìîæíî îðãàíèçîâàòü â êàòàëîãè ✭äèðåêòîðèè✮ ✭ñì✳
❉✐r❡❝t♦r②✮✳
➶
íåêîòîðûõ ðåàëèçàöèÿõ êàòàëîãè ìîãóò ñàìè ÿâëÿòüñÿ îáúåêòàìè ôàéëîâîé ñèñòåìû è ìîãóò ÿâëÿòüñÿ ýëåìåíòàìè â äðóãèõ êàòàëîãàõ✳ ➘ëÿ ïðîñòîòû ëþáîé îáúåêò ôàéëîâîé ñèñòåìû✱ êîòîðûé íå ÿâëÿåòñÿ êàòàëîãîì✱ íàçûâàåòñÿ
ôàéëîì✱ õîòÿ íà ñàìîì äåëå ýòî
ìîæåò áûòü êàíàë ñâÿçè èëè ëþáîé äðóãîé îáúåêò✱ ðàñïîçíàâàåìûé îïåðàöèîííîé ñèñòåìîé✳
Ôèçè÷åñêèå ôàéëû ✖ ýòî ïîñòîÿííûå✱ óïîðÿäî÷åííûå ôàéëû✱ êîòîðûå
îáû÷íî íàõîäÿòñÿ íà äèñêå✳ ➮ìåíà ôàéëîâ è êàòàëîãîâ ÿâëÿþòñÿ çíà÷åíèÿìè òèïà
❙tr✐♥❣✱ èõ òî÷íûé ñìûñë çàâèñèò
îò îïåðàöèîííîé ñèñòåìû✳ Ôàéëû ìîãóò áûòü îòêðûòû❀ ðåçóëüòàòîì îòêðûòèÿ ôàéëà ÿâëÿåòñÿ äåñêðèïòîð✱ êîòîðûé ìîæíî çàòåì èñïîëüçîâàòü äëÿ ðàáîòû ñ ñîäåðæèìîì ýòîãî ôàéëà✳ ❍❛s❦❡❧❧ îïðåäåëÿåò îïåðàöèè äëÿ ÷òåíèÿ è çàïèñè ñèìâîëîâ ñîîòâåòñòâåííî èç ôàéëà è â ôàéë✱ îíè ïðåäñòàâëåíû çíà÷åíèÿìè òèïà
❍❛♥❞❧❡✳ ✃àæäîå çíà÷åíèå ýòîãî òèïà ÿâëÿåòñÿ
äåñêðèïòîðîì✿ çàïèñüþ✱ èñïîëüçóåìîé ñèñòåìîé ïîääåðæêè âûïîëíåíèÿ ïðîãðàìì ❍❛s✲ ❦❡❧❧ äëÿ
óïðàâëåíèÿ ââîäîì ✲ âûâîäîì îáúåêòîâ ôàéëîâîé ñèñòåìû✳ ➘åñêðèïòîð èìååò
ïî êðàéíåé ìåðå ñëåäóþùèå ïðèçíàêè✿
•
óïðàâëÿåò îí ââîäîì èëè âûâîäîì èëè èìè îáîèìè❀
•
ÿâëÿåòñÿ îí
•
ïîçâîëÿåò ëè îáúåêò èçìåíÿòü òåêóùóþ ïîçèöèþ ââîäà ✲ âûâîäà❀
•
îòêëþ÷åíà ëè áóôåðèçàöèÿ✱ à åñëè âêëþ÷åíà ✖ òî êàêàÿ✿ áóôåðèçàöèÿ áëîêîâ èëè
îòêðûòûì✱ çàêðûòûì èëè ïîëóçàêðûòûì❀
ñòðîê❀
•
áóôåð ✭åãî äëèíà ìîæåò áûòü ðàâíà íóëþ✮✳
✷✻✵
➹❐➚➶➚ ✷✶✳
➶➶❰➘ ✲ ➶Û➶❰➘
➪îëüøèíñòâî äåñêðèïòîðîâ áóäåò òàêæå èìåòü òåêóùóþ ïîçèöèþ ââîäà ✲ âûâîäà✱ óêàçûâàþùóþ ãäå ïðîèçîéäåò ñëåäóþùàÿ îïåðàöèÿ ââîäà èëè âûâîäà✳ ➘åñêðèïòîð ÿâëÿåòñÿ ÷èòàåìûì✱ åñëè îí óïðàâëÿåò òîëüêî ââîäîì èëè è ââîäîì✱ è âûâîäîì❀ àíàëîãè÷íî✱ îí ÿâëÿåòñÿ çàïèñûâàåìûì✱ åñëè îí óïðàâëÿåò òîëüêî âûâîäîì èëè è ââîäîì✱ è âûâîäîì✳ ➘åñêðèïòîð ÿâëÿåòñÿ îòêðûòûì✱ êîãäà îí âïåðâûå íàçíà÷àåòñÿ✳ ✃àê òîëüêî îí çàêðûâàåòñÿ✱ åãî áîëüøå íåëüçÿ èñïîëüçîâàòü íè äëÿ ââîäà✱ íè äëÿ âûâîäà✱ õîòÿ ðåàëèçàöèÿ íå ìîæåò ïîâòîðíî èñïîëüçîâàòü åãî ïàìÿòü✱ ïîêà îñòàþòñÿ ññûëêè íà íåãî✳ ➘åñêðèïòîðû íàõîäÿòñÿ â êëàññàõ ❙❤♦✇ è ❊q✳ Ñòðîêà✱ ïîëó÷åííàÿ â ðåçóëüòàòå âûâîäà äåñêðèïòîðà✱ çàâèñèò îò ñèñòåìû❀ îíà äîëæíà âêëþ÷àòü äîñòàòî÷íî èíôîðìàöèè✱ ÷òîáû èäåíòèôèöèðîâàòü äåñêðèïòîð äëÿ îòëàäêè✳ ➶ ñîîòâåòñòâèè ñ ❂❂ äåñêðèïòîð ðàâåí òîëüêî ñàìîìó ñåáå❀ íå äåëàåòñÿ íèêàêèõ ïîïûòîê ñðàâíèòü âíóòðåííåå ñîñòîÿíèå ðàçëè÷íûõ äåñêðèïòîðîâ íà ðàâåíñòâî✳ ✷✶✳✷✳✶
Ñòàíäàðòíûå äåñêðèïòîðû
➶î âðåìÿ èíèöèàëèçàöèè ïðîãðàììû íàçíà÷àþòñÿ òðè äåñêðèïòîðà✳ Ïåðâûå äâà ✭st❞✐♥ è st❞♦✉t✮ óïðàâëÿþò ââîäîì èëè âûâîäîì èç ñòàíäàðòíûõ êàíàëîâ ââîäà èëè âûâîäà ïðîãðàììû íà ❍❛s❦❡❧❧ ñîîòâåòñòâåííî✳ Òðåòèé ✭st❞❡rr✮ óïðàâëÿåò âûâîäîì â ñòàíäàðòíûé êàíàë âûâîäà îøèáîê✳ Ýòè äåñêðèïòîðû ïåðâîíà÷àëüíî îòêðûòû✳ ✷✶✳✷✳✷
Ïîëóçàêðûòûå äåñêðèïòîðû
❰ïåðàöèÿ ❤●❡t❈♦♥t❡♥ts hdl ✭ðàçäåë ✷✶✳✾✳✹✮ ïîìåùàåò äåñêðèïòîð hdl â ïðîìåæóòî÷íîå ñîñòîÿíèå ✖ ïîëóçàêðûòîå✳ ➶ ýòîì ñîñòîÿíèè hdl ôàêòè÷åñêè çàêðûò✱ íî ýëåìåíòû ÷èòàþòñÿ èç hdl ïî òðåáîâàíèþ è íàêàïëèâàþòñÿ â ñïåöèàëüíîì ñïèñêå✱ âîçâðàùàåìîì ❤●❡t❈♦♥t❡♥ts hdl ✳ ❐þáàÿ îïåðàöèÿ✱ êîòîðàÿ çàâåðøàåòñÿ íåóñïåøíî èç✲çà òîãî✱ ÷òî äåñêðèïòîð çàêðûò✱ òàêæå çàâåðøèòñÿ íåóñïåøíî✱ åñëè äåñêðèïòîð ïîëóçàêðûò✳ ➴äèíñòâåííîå èñêëþ÷åíèå ✖ ❤❈❧♦s❡✳ Ïîëóçàêðûòûé äåñêðèïòîð ñòàíîâèòñÿ çàêðûòûì✱ åñëè✿ • • •
ïî îòíîøåíèþ ê íåìó ïðèìåíåí ❤❈❧♦s❡❀ ïðè ÷òåíèè ýëåìåíòà èç äåñêðèïòîðà âîçíèêëà îøèáêà ââîäà ✲ âûâîäà❀ èëè êàê òîëüêî âñå ñîäåðæèìîå äåñêðèïòîðà áóäåò ïðî÷èòàíî✳
✃àê òîëüêî ïîëóçàêðûòûé äåñêðèïòîð ñòàíîâèòñÿ çàêðûòûì✱ ñîäåðæèìîå ñâÿçàííîãî ñ íèì ñïèñêà ñòàíîâèòñÿ ïîñòîÿííûì✳ Ñîäåðæèìîå ýòîãî îêîí÷àòåëüíîãî ñïèñêà îïðåäåëåíî òîëüêî ÷àñòè÷íî✿ ñïèñîê áóäåò ñîäåðæàòü ïî êðàéíåé ìåðå âñå ýëåìåíòû ïîòîêà✱ êîòîðûå áûëè âû÷èñëåíû äî òîãî✱ êàê äåñêðèïòîð ñòàë çàêðûòûì✳ ❐þáûå îøèáêè ââîäà ✲ âûâîäà✱ êîòîðûå âîçíèêëè â òî âðåìÿ✱ êîãäà äåñêðèïòîð áûë ïîëóçàêðûò✱ ïðîñòî èãíîðèðóþòñÿ✳
✷✶✳✸✳
✷✻✶
❰Ò✃ÐÛÒ➮➴ ➮ ➬➚✃ÐÛÒ➮➴ Ô➚➱❐❰➶
✷✶✳✷✳✸
➪ëîêèðîâêà ôàéëîâ
Ðåàëèçàöèè äîëæíû ïî âîçìîæíîñòè âûçûâàòü ïî êðàéíåé ìåðå ëîêàëüíî ïî îòíîøåíèþ ê ïðîöåññó ❍❛s❦❡❧❧ áëîêèðîâêó ôàéëîâ ñî ìíîæåñòâåííûì ÷òåíèåì è åäèíñòâåííîé çàïèñüþ✳ Òî åñòü ìîæåò áûòü èëè ìíîãî äåñêðèïòîðîâ îäíîãî è òîãî
æå ôàéëà✱ êîòîðûå óïðàâëÿþò ââîäîì✱ èëè òîëüêî îäèí äåñêðèïòîð ôàéëà✱ êîòîðûé
✳ ➴ñëè êàêîé✲ëèáî îòêðûòûé èëè ïîëóçàêðûòûé äåñêðèïòîð óïðàâëÿåò ôàéëîì äëÿ âûâîäà✱ íèêàêîé íîâûé äåñêðèïòîð íå ìîæåò áûòü íàçíà÷åí äëÿ ýòîãî ôàéëà✳ ➴ñëè êàêîé✲ëèáî îòêðûòûé èëè ïîëóçàêðûòûé äåñêðèïòîð óïðàâëÿåò ôàéëîì äëÿ ââîäà✱ íîâûå äåñêðèïòîðû ìîãóò áûòü íàçíà÷åíû✱ òîëüêî åñëè îíè íå óïðàâëÿþò âûâîäîì✳ Õîòÿ ñîâïàäåíèå äâóõ ôàéëîâ çàâèñèò îò ðåàëèçàöèè✱ íî îíè îáû÷íî äîëæíû áûòü îäèíàêîâûìè✱ åñëè îíè èìåþò îäèíàêîâûé àáñîëþòíûé ïóòü è íè îäèí èç íèõ íå áûë ïåðåèìåíîâàí✱ íàïðèìåð✳ ✿ îïåðàöèÿ r❡❛❞❋✐❧❡ ✭ðàçäåë ✼✳✶✮ õðàíèò ïîëóçàêðûòûé äåñêðèïòîð ôàéëà äî òåõ ïîð✱ ïîêà âñå ñîäåðæèìîå ôàéëà íå áóäåò ñ÷èòàíî✳ ➮ç ýòîãî ñëåäóåò✱ ÷òî ïîïûòêà çàïèñàòü â ôàéë ✭èñïîëüçóÿ ✇r✐t❡❋✐❧❡✱ íàïðèìåð✮✱ êîòîðûé áûëî ðàíåå îòêðûò ñ ïîìîùüþ r❡❛❞❋✐❧❡✱ îáû÷íî çàâåðøàåòñÿ ñ îøèáêîé ✐s❆❧r❡❛❞②■♥❯s❡❊rr♦r✳ óïðàâëÿåò
âûâîäîì
Ïðåäóïðåæäåíèå
✷✶✳✸
❰òêðûòèå è çàêðûòèå ôàéëîâ
✷✶✳✸✳✶
❰òêðûòèå ôàéëîâ
Ôóíêöèÿ ♦♣❡♥❋✐❧❡ íàçíà÷àåò è âîçâðàùàåò íîâûé✱ îòêðûòûé äåñêðèïòîð äëÿ óïðàâëåíèÿ ôàéëîì ✳ ❰í óïðàâëÿåò ââîäîì✱ åñëè ðàâåí ❘❡❛❞▼♦❞❡✱ âûâîäîì✱ åñëè ðàâåí ❲r✐t❡▼♦❞❡ èëè ❆♣♣❡♥❞▼♦❞❡✱ è ââîäîì è âûâîäîì✱ åñëè ðåæèì ðàâåí ❘❡❛❞❲r✐t❡▼♦❞❡✳ ➴ñëè ôàéë íå ñóùåñòâóåò è îòêðûâàåòñÿ äëÿ âûâîäà✱ äîëæåí áûòü ñîçäàí íîâûé ôàéë✳ ➴ñëè ðàâåí ❲r✐t❡▼♦❞❡ è ôàéë óæå ñóùåñòâóåò✱ òî ôàéë äîëæåí áûòü óñå÷åí äî íóëåâîé äëèíû✳ ❮åêîòîðûå îïåðàöèîííûå ñèñòåìû óäàëÿþò ïóñòûå ôàéëû✱ ïîýòîìó íåò ãàðàíòèè✱ ÷òî ôàéë áóäåò ñóùåñòâîâàòü ïîñëå ♦♣❡♥❋✐❧❡ ñ ❲r✐t❡▼♦❞❡✱ åñëè îí íå áóäåò âïîñëåäñòâèè óñïåøíî çàïèñàí✳ ➘åñêðèïòîð óñòàíàâëèâàåòñÿ â êîíåö ôàéëà✱ åñëè ðàâåí ❆♣♣❡♥❞▼♦❞❡✱ èíà÷å ✖ â íà÷àëî ôàéëà ✭â ýòîì ñëó÷àå åãî âíóòðåííÿÿ ïîçèöèÿ ââîäà ✲ âûâîäà ðàâíà ✵✮✳ ❮à÷àëüíûé ðåæèì áóôåðèçàöèè çàâèñèò îò ðåàëèçàöèè✳ ➴ñëè ♦♣❡♥❋✐❧❡ çàâåðøàåòñÿ íåóñïåøíî äëÿ ôàéëà✱ îòêðûâàåìîãî äëÿ âûâîäà✱ ôàéë òåì íå ìåíåå ìîæåò áûòü ñîçäàí✱ åñëè îí óæå íå ñóùåñòâóåò✳ ✿ ôóíêöèÿ ♦♣❡♥❋✐❧❡ ìîæåò çàâåðøèòüñÿ ñ îøèáêîé ✐s❆❧r❡❛❞②■♥❯s❡❊rr♦r✱ åñëè ôàéë óæå îòêðûò è íå ìîæåò áûòü ïîâòîðíî îòêðûò❀ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ åñëè ôàéë íå ñóùåñòâóåò✱ èëè ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè ïîëüçîâàòåëü íå èìååò ïðàâ íà îòêðûòèå ôàéëà✳ ôàéë ðåæèì ôàéë
ðåæèì
ðåæèì
ðåæèì
ðåæèìîì
ðåæèì
Ñîîáùåíèÿ
îá
îøèáêàõ
✷✻✷
➹❐➚➶➚ ✷✶✳
✷✶✳✸✳✷
➶➶❰➘ ✲ ➶Û➶❰➘
➬àêðûòèå ôàéëîâ
Ôóíêöèÿ
❤❈❧♦s❡ hdl
äåëàåò äåñêðèïòîð
âû÷èñëåíèå ôóíêöèè✱ åñëè
hdl
íà äèñê êàê ïðè èñïîëüçîâàíèè
hdl
çàêðûòûì✳ ➘î òîãî êàê çàâåðøèòñÿ
ÿâëÿåòñÿ çàïèñûâàåìûì✱ òî åãî áóôåð ñáðàñûâàåòñÿ
❤❋❧✉s❤✳
➶ûïîëíåíèå
❤❈❧♦s❡
íà äåñêðèïòîðå✱ êîòîðûé
óæå áûë çàêðûò✱ íå âëå÷åò íèêàêèõ äåéñòâèé❀ òàêîå âûïîëíåíèå íå ÿâëÿåòñÿ îøèáêîé✳ ➶ñå îñòàëüíûå îïåðàöèè íà çàêðûòîì äåñêðèïòîðå áóäóò çàâåðøàòüñÿ ñ îøèáêîé✳ ➴ñëè
❤❈❧♦s❡ çàâåðøàåòñÿ íåóñïåøíî ïî êàêîé✲ëèáî ïðè÷èíå✱ âñå äàëüíåéøèå îïåðàöèè ❤❈❧♦s❡✮ íà äåñêðèïòîðå áóäóò òåì íå ìåíåå çàâåðøàòüñÿ íåóñïåøíî✱ êàê áóäòî
✭êðîìå
hdl
áûë óñïåøíî çàêðûò✳
✷✶✳✹
❰ïðåäåëåíèå ðàçìåðà ôàéëà
➘ëÿ äåñêðèïòîðà
hdl ✱
êîòîðûé ïðèêðåïëåí ê ôèçè÷åñêîìó ôàéëó✱
❤❋✐❧❡❙✐③❡ hdl
âîçâðàùàåò ðàçìåð ýòîãî ôàéëà â ✽✲áèòíûõ áàéòàõ ✭≥ ✵✮✳
✷✶✳✺
❰áíàðóæåíèå êîíöà ââîäà
➘ëÿ ÷èòàåìîãî äåñêðèïòîðà
hdl
ôóíêöèÿ
äàëüíåéøèé ââîä íå ìîæåò áûòü ïîëó÷åí
❤■s❊❖❋ hdl èç hdl ❀ äëÿ
âîçâðàùàåò
❚r✉❡✱
åñëè íèêàêîé
äåñêðèïòîðà✱ ïðèêðåïëåííîãî ê
ôèçè÷åñêîìó ôàéëó✱ ýòî îçíà÷àåò✱ ÷òî òåêóùàÿ ïîçèöèÿ ââîäà ✲ âûâîäà ðàâíà äëèíå ôàéëà✳ ➶ ïðîòèâíîì ñëó÷àå ôóíêöèÿ âîçâðàùàåò
❋❛❧s❡✳
îïèñàííîé ôóíêöèè✱ çà èñêëþ÷åíèåì òîãî✱ ÷òî îíà ðàáîòàåò òîëüêî
✷✶✳✻
✐s❊❖❋ èäåíòè÷íà ñ st❞✐♥✳
Ôóíêöèÿ
❰ïåðàöèè áóôåðèçàöèè
Ïîääåðæèâàþòñÿ òðè âèäà áóôåðèçàöèè✿ áóôåðèçàöèÿ ñòðîê✱ áóôåðèçàöèÿ áëîêîâ èëè îòñóòñòâèå áóôåðèçàöèè✳ Ýòè ðåæèìû èìåþò ñëåäóþùèå ðåçóëüòàòû✳ Ïðè âûâîäå ýëåìåíòû çàïèñûâàþòñÿ èëè
ñáðàñûâàþòñÿ íà äèñê
èç âíóòðåííåãî áóôåðà â
ñîîòâåòñòâèè ñ ðåæèìîì áóôåðèçàöèè✿
•
áóôåðèçàöèÿ
ñòðîê✿
âåñü áóôåð ñáðàñûâàåòñÿ íà äèñê âñÿêèé ðàç✱ êîãäà
âûâîäèòñÿ ñèìâîë íîâîé ñòðîêè✱ ïåðåïîëíÿåòñÿ áóôåð✱ âûçûâàåòñÿ
❤❋❧✉s❤
èëè
êîãäà
îí
çàêðûâàåòñÿ äåñêðèïòîð✳
•
áóôåðèçàöèÿ
áëîêîâ✿
ïåðåïîëíÿåòñÿ✱ âûçûâàåòñÿ
•
âåñü
îòñóòñòâèå áóôåðèçàöèè✿
â áóôåðå✳
áóôåð
❤❋❧✉s❤
çàïèñûâàåòñÿ
âñÿêèé
ðàç✱
èëè çàêðûâàåòñÿ äåñêðèïòîð✳
âûâîä çàïèñûâàåòñÿ ñðàçó è íèêîãäà íå ñîõðàíÿåòñÿ
✷✶✳✻✳
✷✻✸
❰Ï➴Ð➚Ö➮➮ ➪ÓÔ➴Ð➮➬➚Ö➮➮
➶ ðåàëèçàöèè ñîäåðæèìîå áóôåðà ìîæåò ñáðàñûâàòüñÿ íà äèñê áîëåå ÷àñòî✱ íî íå ìåíåå ÷àñòî✱ ÷åì îïðåäåëåíî âûøå✳ ➪óôåð îïóñòàøàåòñÿ✱ êàê òîëüêî îí çàïèñûâàåòñÿ✳ ➚íàëîãè÷íî✱ â ñîîòâåòñòâèè ñ ðåæèìîì áóôåðèçàöèè äëÿ äåñêðèïòîðà
hdl
âûïîëíÿåòñÿ
ââîä✿
•
áóôåðèçàöèÿ ñòðîê✿
êîãäà áóôåð äëÿ
hdl
íå ÿâëÿåòñÿ ïóñòûì✱ ñëåäóþùèé
ýëåìåíò ïîëó÷àåòñÿ èç áóôåðà❀ èíà÷å✱ êîãäà áóôåð ïóñò✱ ñèìâîëû ñ÷èòûâàþòñÿ â áóôåð äî òåõ ïîð✱ ïîêà íå âñòðåòèòñÿ ñèìâîë íîâîé ñòðîêè èëè áóôåð ñòàíåò ïîëîí✳ Ñèìâîëû íåäîñòóïíû✱ ïîêà íå ïîÿâèòñÿ ñèìâîë íîâîé ñòðîêè èëè áóôåð íå ñòàíåò ïîëîí✳
•
áóôåðèçàöèÿ áëîêîâ✿
êîãäà áóôåð äëÿ
hdl
ñòàíîâèòñÿ ïóñòûì✱ ñëåäóþùèé áëîê
äàííûõ ñ÷èòûâàåòñÿ â áóôåð✳
•
îòñóòñòâèå
áóôåðèçàöèè✿
âîçâðàùàåòñÿ✳ ❰ïåðàöèÿ
ñëåäóþùèé
❤▲♦♦❦❆❤❡❛❞
ýëåìåíò
ââîäà
ñ÷èòûâàåòñÿ
è
✭ðàçäåë ✷✶✳✾✳✸✮ ïðåäïîëàãàåò✱ ÷òî äàæå
äåñêðèïòîð â ðåæèìå îòñóòñòâèÿ áóôåðèçàöèè ìîæåò ïîòðåáîâàòü áóôåð â îäèí ñèìâîë✳ ➶ áîëüøèíñòâå ðåàëèçàöèé äëÿ ôèçè÷åñêèõ ôàéëîâ îáû÷íî ïðèìåíÿåòñÿ áóôåðèçàöèÿ áëîêîâ✱ à äëÿ òåðìèíàëîâ îáû÷íî ïðèìåíÿåòñÿ áóôåðèçàöèÿ ñòðîê✳ Ôóíêöèÿ
❤❙❡t❇✉❢❢❡r✐♥❣ hdl ðåæèì óñòàíàâëèâàåò hdl äëÿ ïîñëåäóþùèõ ÷òåíèé è çàïèñåé✳
ðåæèì
áóôåðèçàöèè
äëÿ
äåñêðèïòîðà
•
➴ñëè
ðåæèì ðàâåí ▲✐♥❡❇✉❢❢❡r✐♥❣✱ âêëþ÷àåòñÿ ðåæèì áóôåðèçàöèè ñòðîê✱ åñëè
ýòî âîçìîæíî✳
•
➴ñëè
ðåæèì
ðàâåí
❇❧♦❝❦❇✉❢❢❡r✐♥❣
ðàçìåð✱
âêëþ÷àåòñÿ ðåæèì áóôåðèçàöèè
áëîêîâ✱ åñëè ýòî âîçìîæíî✳ Ðàçìåð áóôåðà ðàâåí
❏✉st n ✱ •
➴ñëè
n
ýëåìåíòîâ✱ åñëè
ðàçìåð ðàâåí
à èíà÷å çàâèñèò îò ðåàëèçàöèè✳
ðåæèì ðàâåí ◆♦❇✉❢❢❡r✐♥❣✱ òî ðåæèì áóôåðèçàöèè îòêëþ÷àåòñÿ✱ åñëè ýòî
âîçìîæíî✳ ➴ñëè ðåæèì áóôåðèçàöèè
❇❧♦❝❦❇✉❢❢❡r✐♥❣ èëè ▲✐♥❡❇✉❢❢❡r✐♥❣ èçìåíåí íà ◆♦❇✉❢❢❡r✐♥❣✱
òîãäà
❤❋❧✉s❤❀
•
åñëè
hdl
ÿâëÿåòñÿ çàïèñûâàåìûì✱ òî áóôåð ñáðàñûâàåòñÿ íà äèñê êàê ïðè
•
åñëè
hdl
íå ÿâëÿåòñÿ çàïèñûâàåìûì✱ òî ñîäåðæèìîå áóôåðà èãíîðèðóåòñÿ✳
Ñîîáùåíèÿ îá îøèáêàõ✿ ✐sP❡r♠✐ss✐♦♥❊rr♦r✱
ôóíêöèÿ
❤❙❡t❇✉❢❢❡r✐♥❣
ìîæåò çàâåðøèòüñÿ ñ îøèáêîé
åñëè äåñêðèïòîð óæå èñïîëüçîâàëñÿ äëÿ ÷òåíèÿ èëè çàïèñè è
ðåàëèçàöèÿ íå ïîçâîëÿåò èçìåíèòü ðåæèì áóôåðèçàöèè✳
➹❐➚➶➚ ✷✶✳
✷✻✹
Ôóíêöèÿ
❤●❡t❇✉❢❢❡r✐♥❣ hdl
➶➶❰➘ ✲ ➶Û➶❰➘
âîçâðàùàåò òåêóùèé ðåæèì áóôåðèçàöèè äëÿ
hdl ✳
Ðåæèì áóôåðèçàöèè ïî óìîë÷àíèþ ïðè îòêðûòèè äåñêðèïòîðà çàâèñèò îò ðåàëèçàöèè è ìîæåò çàâèñåòü îò îáúåêòà ôàéëîâîé ñèñòåìû✱ ê êîòîðîìó ïðèêðåïëåí äåñêðèïòîð✳
✷✶✳✻✳✶
Ñáðàñûâàíèå áóôåðîâ íà äèñê
❤❋❧✉s❤ hdl çàñòàâëÿåò ëþáûå ýëåìåíòû✱ hdl ✱ òîò÷àñ æå ïåðåäàòü îïåðàöèîííîé
Ôóíêöèÿ
äåñêðèïòîðå
Ñîîáùåíèÿ îá îøèáêàõ
❤❋❧✉s❤ ìîæåò ✐sP❡r♠✐ss✐♦♥❊rr♦r✱
✿ ôóíêöèÿ
åñëè óñòðîéñòâî çàïîëíåíî❀ ðåñóðñîâ✳
Ïðè
ýòèõ
îáñòîÿòåëüñòâàõ
íå
áóôåðèçèðîâàííûå äëÿ âûâîäà â ñèñòåìå✳
çàâåðøèòüñÿ ñ îøèáêîé
✐s❋✉❧❧❊rr♦r✱
åñëè ïðåâûøåíû ïðåäåëû ñèñòåìíûõ
îïðåäåëåíî✱
áóäóò
ëè
ñèìâîëû
â
áóôåðå
ïðîèãíîðèðîâàíû èëè îñòàíóòñÿ â áóôåðå✳
✷✶✳✼
Ïîçèöèîíèðîâàíèå äåñêðèïòîðîâ
✷✶✳✼✳✶
Ïîâòîðíîå èñïîëüçîâàíèå ïîçèöèè ââîäà ✲ âûâîäà
❤●❡tP♦s♥ hdl
òåêóùóþ ïîçèöèþ ââîäà ✲ âûâîäà hdl â âèäå ❍❛♥❞❧❡P♦s♥✳ ➴ñëè âûçîâ ❤●❡tP♦s♥ h âîçâðàùàåò ïîçèöèþ p ✱ òîãäà ôóíêöèÿ ❤❙❡tP♦s♥ p óñòàíàâëèâàåò ïîçèöèþ h â ïîçèöèþ✱ êîòîðóþ îíà ñîäåðæàëà âî âðåìÿ âûçîâà ❤●❡tP♦s♥✳ Ôóíêöèÿ
âîçâðàùàåò
çíà÷åíèÿ àáñòðàêòíîãî òèïà
Ñîîáùåíèÿ îá îøèáêàõ
✿
✐sP❡r♠✐ss✐♦♥❊rr♦r✱
❤❙❡tP♦s♥
ôóíêöèÿ
✷✶✳✼✳✷
Óñòàíîâêà íîâîé ïîçèöèè
Ôóíêöèÿ
❤❙❡❡❦ hdl
ðåæèìà
✳ ➴ñëè
ìîæåò
çàâåðøèòüñÿ
ñ
îøèáêîé
åñëè áûëè ïðåâûøåíû ïðåäåëû ðåñóðñîâ ñèñòåìû✳
ðåæèì i ðåæèì
óñòàíàâëèâàåò ïîçèöèþ äåñêðèïòîðà
hdl
â çàâèñèìîñòè îò
ðàâåí✿
• ❆❜s♦❧✉t❡❙❡❡❦✿
ïîçèöèÿ
hdl
óñòàíàâëèâàåòñÿ â
• ❘❡❧❛t✐✈❡❙❡❡❦✿
ïîçèöèÿ
hdl
ñìåùàåòñÿ íà
• ❙❡❡❦❋r♦♠❊♥❞✿
ïîçèöèÿ
hdl
ñìåùàåòñÿ íà
i
i
i✳
îò òåêóùåé ïîçèöèè✳
îò êîíöà ôàéëà✳
Ñìåùåíèå çàäàåòñÿ â ✽✲áèòíûõ áàéòàõ✳
➴ñëè
äëÿ
hdl
èñïîëüçóåòñÿ
ðåæèì
áóôåðèçàöèè
ñòðîê
èëè
áëîêîâ✱
òî
óñòàíîâêà
ïîçèöèè✱ êîòîðàÿ íå íàõîäèòñÿ â òåêóùåì áóôåðå✱ ïðèâåäåò ê òîìó✱ ÷òî ñíà÷àëà áóäóò
✷✶✳✽✳
✷✻✺
Ñ➶❰➱ÑÒ➶➚ ➘➴Ñ✃Ð➮ÏÒ❰Ð❰➶
çàïèñàíû â óñòðîéñòâî âñå ýëåìåíòû â âûõîäíîì áóôåðå✱ à çàòåì âõîäíîé áóôåð áóäåò ïðîèãíîðèðîâàí✳ ❮åêîòîðûå äåñêðèïòîðû íå ìîãóò èñïîëüçîâàòüñÿ äëÿ óñòàíîâêè ïîçèöèè ✭ñì✳
❤■s❙❡❡❦❛❜❧❡✮
èëè ìîãóò ïîääåðæèâàòü òîëüêî ïîäìíîæåñòâî âîçìîæíûõ
îïåðàöèé ïîçèöèîíèðîâàíèÿ ✭íàïðèìåð✱ òîëüêî âîçìîæíîñòü óñòàíîâèòü äåñêðèïòîð â êîíåö ëåíòû èëè âîçìîæíîñòü ñìåñòèòü äåñêðèïòîð â ïîëîæèòåëüíîì íàïðàâëåíèè îò íà÷àëà ôàéëà èëè îò òåêóùåé ïîçèöèè✮✳ ❮åâîçìîæíî óñòàíîâèòü îòðèöàòåëüíóþ ïîçèöèþ ââîäà ✲ âûâîäà èëè äëÿ ôèçè÷åñêîãî ôàéëà óñòàíîâèòü ïîçèöèþ ââîäà ✲ âûâîäà çà ïðåäåëû òåêóùåãî êîíöà ôàéëà✳
Ñîîáùåíèÿ îá îøèáêàõ✿
✐sP❡r♠✐ss✐♦♥❊rr♦r✱
✷✶✳✽
ôóíêöèÿ
❤❙❡❡❦
ìîæåò
çàâåðøèòüñÿ
ñ
îøèáêîé
åñëè áûëè ïðåâûøåíû ïðåäåëû ñèñòåìíûõ ðåñóðñîâ✳
Ñâîéñòâà äåñêðèïòîðîâ
Ôóíêöèè
❤■s❖♣❡♥✱ ❤■s❈❧♦s❡❞✱ ❤■s❘❡❛❞❛❜❧❡✱ ❤■s❲r✐t❛❜❧❡
è
❤■s❙❡❡❦❛❜❧❡
âîçâðàùàþò
èíôîðìàöèþ î ñâîéñòâàõ äåñêðèïòîðà✳ ✃àæäûé èç âîçâðàùàåìûõ ðåçóëüòàòîâ ðàâåí
❚r✉❡✱
åñëè äåñêðèïòîð îáëàäàåò óêàçàííûì ñâîéñòâîì✱ è
✷✶✳✾
❋❛❧s❡
èíà÷å✳
➶âîä è âûâîä òåêñòà
➬äåñü ìû äàäèì îïðåäåëåíèÿ ñòàíäàðòíîãî íàáîðà îïåðàöèé ââîäà äëÿ ÷òåíèÿ ñèìâîëîâ è ñòðîê èç òåêñòîâûõ ôàéëîâ✱ èñïîëüçóþùèõ äåñêðèïòîðû✳ ❒íîãèå èç ýòèõ ôóíêöèé ÿâëÿþòñÿ îáîáùåíèÿìè ôóíêöèé Pr❡❧✉❞❡✳ ➶âîä ✲ âûâîä â Pr❡❧✉❞❡ êàê ïðàâèëî èñïîëüçóåò
st❞✐♥
è
st❞♦✉t❀
çäåñü äåñêðèïòîðû ÿâíî îïðåäåëåíû ñ ïîìîùüþ îïåðàöèåé
ââîäà ✲ âûâîäà✳
✷✶✳✾✳✶
Ïðîâåðêà ââîäà
❤❲❛✐t❋♦r■♥♣✉t hdl t æäåò✱ ïîêà íå ñòàíåò äîñòóïíûì ââîä ïî äåñêðèïòîðó ❚r✉❡✱ êàê òîëüêî ñòàíåò äîñòóïíûì ââîä äëÿ hdl ✱ èëè ❋❛❧s❡✱ åñëè äîñòóïåí â ïðåäåëàõ t ìèëëèñåêóíä✳
Ôóíêöèÿ
hdl ✳
❰íà âîçâðàùàåò
ââîä íå
Ôóíêöèÿ
❤❘❡❛❞② hdl
óêàçûâàåò✱ åñòü ëè ïî êðàéíåé ìåðå îäèí ýëåìåíò✱ äîñòóïíûé äëÿ
ââîäà èç äåñêðèïòîðà
hdl ✳
Ñîîáùåíèÿ îá îøèáêàõ✿ ✐s❊❖❋❊rr♦r✱
ôóíêöèè
❤❲❛✐t❋♦r■♥♣✉t
è
❤❘❡❛❞②
çàâåðøàþòñÿ ñ îøèáêîé
åñëè áûë äîñòèãíóò êîíåö ôàéëà✳
✷✶✳✾✳✷
×òåíèå ââîäà
Ôóíêöèÿ
❤●❡t❈❤❛r hdl
ñ÷èòûâàåò ñèìâîë èç ôàéëà èëè êàíàëà✱ óïðàâëÿåìîãî
hdl ✳
✷✻✻
➹❐➚➶➚ ✷✶✳
Ôóíêöèÿ
❣❡t▲✐♥❡
❤●❡t▲✐♥❡ hdl
ñ÷èòûâàåò ñòðîêó èç ôàéëà èëè êàíàëà✱ óïðàâëÿåìîãî
èç Pr❡❧✉❞❡ ÿâëÿåòñÿ êðàòêîé çàïèñüþ äëÿ
Ñîîáùåíèÿ îá îøèáêàõ✿
❤●❡t▲✐♥❡ st❞✐♥✳
hdl ✳
❤●❡t❈❤❛r çàâåðøàåòñÿ ñ îøèáêîé ✐s❊❖❋❊rr♦r✱ åñëè Ôóíêöèÿ ❤●❡t▲✐♥❡ çàâåðøàåòñÿ ñ îøèáêîé ✐s❊❖❋❊rr♦r✱
ôóíêöèÿ
áûë äîñòèãíóò êîíåö ôàéëà✳
åñëè êîíåö ôàéëà áûë îáíàðóæåí ïðè ñ÷èòûâàíèè
❤●❡t▲✐♥❡
➶➶❰➘ ✲ ➶Û➶❰➘
ïåðâîãî
ñèìâîëà ñòðîêè✳ ➴ñëè
îáíàðóæèò êîíåö ôàéëà â ëþáîì äðóãîì ìåñòå ïðè ñ÷èòûâàíèè ñòðîêè✱ îí
áóäåò îáðàáîòàí êàê ïðèçíàê êîíöà ñòðîêè è áóäåò âîçâðàùåíà ✭íåïîëíàÿ✮ ñòðîêà✳
✷✶✳✾✳✸
Ñ÷èòûâàíèå âïåðåä
Ôóíêöèÿ
❤▲♦♦❦❆❤❡❛❞ hdl
âîçâðàùàåò ñëåäóþùèé ñèìâîë èç äåñêðèïòîðà
hdl ✱ íå óäàëÿÿ
åãî èç âõîäíîãî áóôåðà❀ îíà áëîêèðóåòñÿ äî òåõ ïîð✱ ïîêà ñèìâîë íå ñòàíåò äîñòóïåí✳
Ñîîáùåíèÿ îá îøèáêàõ✿
✐s❊❖❋❊rr♦r✱ ✷✶✳✾✳✹
ôóíêöèÿ
❤▲♦♦❦❆❤❡❛❞
ìîæåò
çàâåðøèòüñÿ
ñ
îøèáêîé
åñëè áûë äîñòèãíóò êîíåö ôàéëà✳
Ñ÷èòûâàíèå âñåãî ââîäà
❤●❡t❈♦♥t❡♥ts
Ôóíêöèÿ
íåïðî÷èòàííîé
÷àñòè
hdl
êàíàëà
âîçâðàùàåò
ñïèñîê
èëè
óïðàâëÿåìîãî
ôàéëà✱
ñèìâîëîâ✱
hdl ✱
ñîîòâåòñòâóþùèõ êîòîðûé
ñäåëàí
ïîëóçàêðûòûì✳
Ñîîáùåíèÿ îá îøèáêàõ✿ ✐s❊❖❋❊rr♦r✱
ôóíêöèÿ
❤●❡t❈♦♥t❡♥ts
ìîæåò
çàâåðøèòüñÿ
✷✶✳✾✳✺
➶ûâîä òåêñòà
Ôóíêöèÿ
❤P✉t❈❤❛r hdl c
çàïèñûâàåò ñèìâîë
c
Ôóíêöèÿ
❤P✉t❙tr hdl s
çàïèñûâàåò ñòðîêó
Ôóíêöèÿ
❤Pr✐♥t hdl t
çàïèñûâàåò ñòðîêîâîå ïðåäñòàâëåíèå
â ôàéë èëè êàíàë✱ óïðàâëÿåìûé
Ñîîáùåíèÿ îá îøèáêàõ✿ ñ îøèáêîé
îøèáêîé
â ôàéë èëè êàíàë✱ óïðàâëÿåìûé
Ñèìâîëû ìîãóò áûòü áóôåðèçèðîâàíû✱ åñëè âêëþ÷åíà áóôåðèçàöèÿ äëÿ
s❤♦✇s✱
ñ
åñëè áûë äîñòèãíóò êîíåö ôàéëà✳
✐s❋✉❧❧❊rr♦r✱
ôóíêöèè
s
hdl ✱
â ôàéë èëè êàíàë✱ óïðàâëÿåìûé
t✱
hdl ✳
hdl ✳ hdl ✳
ïîëó÷åííîå ôóíêöèåé
è äîáàâëÿåò â êîíåö ñèìâîë íîâîé ñòðîêè✳
❤P✉t❈❤❛r✱ ❤P✉t❙tr
è
❤Pr✐♥t ìîãóò çàâåðøèòüñÿ ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè
åñëè óñòðîéñòâî çàïîëíåíî✱ èëè
ïðåâûøåíû ïðåäåëû äðóãèõ ñèñòåìíûõ ðåñóðñîâ✳
✷✶✳✶✵
Ïðèìåðû
Ðàññìîòðèì íåêîòîðûå ïðîñòûå ïðèìåðû✱ èëëþñòðèðóþùèå ââîä ✲ âûâîä â ❍❛s❦❡❧❧✳
✷✶✳✶✵✳
ÏÐ➮❒➴ÐÛ
✷✶✳✶✵✳✶
✷✻✼
Ñóììèðîâàíèå äâóõ ÷èñåë
Ýòà ïðîãðàììà ñ÷èòûâàåò è ñóììèðóåò äâà ÷èñëà òèïà
■♥t❡❣❡r✳
✐♠♣♦rt ■❖ ♠❛✐♥ ❂ ❞♦ ❤❙❡t❇✉❢❢❡r✐♥❣ st❞♦✉t ◆♦❇✉❢❢❡r✐♥❣ ♣✉t❙tr ✧➶âåäèòå öåëîå ÷èñëî✿ ✧ ①✶ ❁✲ r❡❛❞◆✉♠ ♣✉t❙tr ✧➶âåäèòå äðóãîå öåëîå ÷èñëî✿ ✧ ①✷ ❁✲ r❡❛❞◆✉♠ ♣✉t❙tr ✭✧➮õ ñóììà ðàâíà ✧ ✰✰ s❤♦✇ ✭①✶✰①✷✮ ✰✰ ✧❭♥✧✮ ✇❤❡r❡ r❡❛❞◆✉♠ ✿✿ ■❖ ■♥t❡❣❡r ✲✲ Óêàçàíèå ñèãíàòóðû òèïà ïîçâîëÿåò èçáåæàòü ✲✲ èñïðàâëåíèÿ òèïîâ ①✶✱①✷ ïðàâèëîì ïî óìîë÷àíèþ r❡❛❞◆✉♠ ❂ r❡❛❞▲♥
✷✶✳✶✵✳✷
✃îïèðîâàíèå ôàéëîâ
Ïðîñòàÿ ïðîãðàììà äëÿ ñîçäàíèÿ êîïèè ôàéëà✱ â êîòîðîé âñå ñèìâîëû â íèæíåì ðåãèñòðå
çàìåíåíû
íà
ñèìâîëû
â
âåðõíåì
ðåãèñòðå✳
Ýòà
ïðîãðàììà
íå
ðàçðåøàåò
êîïèðîâàòü ôàéë â ñàìîãî ñåáÿ✳ Ýòà âåðñèÿ èñïîëüçóåò ââîä ✲ âûâîä ñèìâîëüíîãî óðîâíÿ✳
❰áðàòèòå
âíèìàíèå✱
÷òî
ðîâíî
äâà
àðãóìåíòà
ïðîãðàììå✳
✐♠♣♦rt ■❖ ✐♠♣♦rt ❙②st❡♠ ✐♠♣♦rt ❈❤❛r✭ t♦❯♣♣❡r ✮ ♠❛✐♥ ❂ ❞♦ ❬❢✶✱❢✷❪ ❁✲ ❣❡t❆r❣s ❤✶ ❁✲ ♦♣❡♥❋✐❧❡ ❢✶ ❘❡❛❞▼♦❞❡ ❤✷ ❁✲ ♦♣❡♥❋✐❧❡ ❢✷ ❲r✐t❡▼♦❞❡ ❝♦♣②❋✐❧❡ ❤✶ ❤✷ ❤❈❧♦s❡ ❤✶ ❤❈❧♦s❡ ❤✷ ❝♦♣②❋✐❧❡ ❤✶ ❤✷ ❂ ❞♦ ❡♦❢ ❁✲ ❤■s❊❖❋ ❤✶ ✐❢ ❡♦❢ t❤❡♥ r❡t✉r♥ ✭✮ ❡❧s❡ ❞♦ ❝ ❁✲ ❤●❡t❈❤❛r ❤✶ ❤P✉t❈❤❛r ❤✷ ✭t♦❯♣♣❡r ❝✮ ❝♦♣②❋✐❧❡ ❤✶ ❤✷
äîëæíû
áûòü
ïåðåäàíû
➹❐➚➶➚ ✷✶✳
✷✻✽
➶➶❰➘ ✲ ➶Û➶❰➘
Ýêâèâàëåíòíàÿ✱ íî çíà÷èòåëüíî áîëåå êîðîòêàÿ âåðñèÿ✱ èñïîëüçóþùàÿ ââîä ✲ âûâîä ñòðîê✿
✐♠♣♦rt ❙②st❡♠ ✐♠♣♦rt ❈❤❛r✭ t♦❯♣♣❡r ✮ ♠❛✐♥ ❂ ❞♦ ❬❢✶✱❢✷❪ ❁✲ ❣❡t❆r❣s s ❁✲ r❡❛❞❋✐❧❡ ❢✶ ✇r✐t❡❋✐❧❡ ❢✷ ✭♠❛♣ t♦❯♣♣❡r s✮
✷✶✳✶✶
➪èáëèîòåêà
■❖
♠♦❞✉❧❡ ■❖ ④✲ ñïèñîê ýêñïîðòà ïðîïóùåí ✲⑥ ✇❤❡r❡ ✲✲ Òîëüêî îáåñïå÷èâàåò ðåàëèçàöèþ íå çàâèñÿùèõ îò ñèñòåìû ✲✲ äåéñòâèé✱ êîòîðûå ýêñïîðòèðóåò ■❖✳ tr② tr② ❢
✿✿ ■❖ ❛ ✲❃ ■❖ ✭❊✐t❤❡r ■❖❊rr♦r ❛✮ ❂ ❝❛t❝❤ ✭❞♦ r ❁✲ ❢ r❡t✉r♥ ✭❘✐❣❤t r✮✮ ✭r❡t✉r♥ ✳ ▲❡❢t✮
❜r❛❝❦❡t ✿✿ ■❖ ❛ ✲❃ ✭❛ ✲❃ ■❖ ❜✮ ✲❃ ✭❛ ✲❃ ■❖ ❝✮ ✲❃ ■❖ ❝ ❜r❛❝❦❡t ❜❡❢♦r❡ ❛❢t❡r ♠ ❂ ❞♦ ① ❁✲ ❜❡❢♦r❡ rs ❁✲ tr② ✭♠ ①✮ ❛❢t❡r ① ❝❛s❡ rs ♦❢ ❘✐❣❤t r ✲❃ r❡t✉r♥ r ▲❡❢t ❡ ✲❃ ✐♦❊rr♦r ❡ ✲✲ âàðèàíò ïðèâåäåííîãî âûøå✱ ãäå ñðåäíÿÿ ôóíêöèÿ íå òðåáóåò ① ❜r❛❝❦❡t❴ ✿✿ ■❖ ❛ ✲❃ ✭❛ ✲❃ ■❖ ❜✮ ✲❃ ■❖ ❝ ✲❃ ■❖ ❝ ❜r❛❝❦❡t❴ ❜❡❢♦r❡ ❛❢t❡r ♠ ❂ ❞♦ ① ❁✲ ❜❡❢♦r❡ rs ❁✲ tr② ♠ ❛❢t❡r ① ❝❛s❡ rs ♦❢ ❘✐❣❤t r ✲❃ r❡t✉r♥ r ▲❡❢t ❡ ✲❃ ✐♦❊rr♦r ❡
➹ëàâà ✷✷
Ôóíêöèè ñ êàòàëîãàìè ♠♦❞✉❧❡ ❉✐r❡❝t♦r② ✭ P❡r♠✐ss✐♦♥s✭ P❡r♠✐ss✐♦♥s✱ r❡❛❞❛❜❧❡✱ ✇r✐t❛❜❧❡✱ ❡①❡❝✉t❛❜❧❡✱ s❡❛r❝❤❛❜❧❡ ✮✱ ❝r❡❛t❡❉✐r❡❝t♦r②✱ r❡♠♦✈❡❉✐r❡❝t♦r②✱ r❡♠♦✈❡❋✐❧❡✱ r❡♥❛♠❡❉✐r❡❝t♦r②✱ r❡♥❛♠❡❋✐❧❡✱ ❣❡t❉✐r❡❝t♦r②❈♦♥t❡♥ts✱ ❣❡t❈✉rr❡♥t❉✐r❡❝t♦r②✱ s❡t❈✉rr❡♥t❉✐r❡❝t♦r②✱ ❞♦❡s❋✐❧❡❊①✐st✱ ❞♦❡s❉✐r❡❝t♦r②❊①✐st✱ ❣❡tP❡r♠✐ss✐♦♥s✱ s❡tP❡r♠✐ss✐♦♥s✱ ❣❡t▼♦❞✐❢✐❝❛t✐♦♥❚✐♠❡ ✮ ✇❤❡r❡ ✐♠♣♦rt ❚✐♠❡ ✭ ❈❧♦❝❦❚✐♠❡ ✮ ❞❛t❛ P❡r♠✐ss✐♦♥s ❂ P❡r♠✐ss✐♦♥s ④ r❡❛❞❛❜❧❡✱ ✇r✐t❛❜❧❡✱ ❡①❡❝✉t❛❜❧❡✱ s❡❛r❝❤❛❜❧❡ ✿✿ ❇♦♦❧ ⑥ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
❊q ❖r❞ ❘❡❛❞ ❙❤♦✇
P❡r♠✐ss✐♦♥s P❡r♠✐ss✐♦♥s P❡r♠✐ss✐♦♥s P❡r♠✐ss✐♦♥s
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
❝r❡❛t❡❉✐r❡❝t♦r② r❡♠♦✈❡❉✐r❡❝t♦r② r❡♠♦✈❡❋✐❧❡ r❡♥❛♠❡❉✐r❡❝t♦r② r❡♥❛♠❡❋✐❧❡
✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❋✐❧❡P❛t❤ ❋✐❧❡P❛t❤ ❋✐❧❡P❛t❤ ❋✐❧❡P❛t❤ ❋✐❧❡P❛t❤
✲❃ ✲❃ ✲❃ ✲❃ ✲❃
■❖ ✭✮ ■❖ ✭✮ ■❖ ✭✮ ❋✐❧❡P❛t❤ ✲❃ ■❖ ✭✮ ❋✐❧❡P❛t❤ ✲❃ ■❖ ✭✮
❣❡t❉✐r❡❝t♦r②❈♦♥t❡♥ts ❣❡t❈✉rr❡♥t❉✐r❡❝t♦r② s❡t❈✉rr❡♥t❉✐r❡❝t♦r②
✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ❬❋✐❧❡P❛t❤❪ ✿✿ ■❖ ❋✐❧❡P❛t❤ ✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ✭✮
❞♦❡s❋✐❧❡❊①✐st ❞♦❡s❉✐r❡❝t♦r②❊①✐st
✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ❇♦♦❧ ✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ❇♦♦❧
✷✻✾
✷✼✵
➹❐➚➶➚ ✷✷✳
ÔÓ❮✃Ö➮➮ Ñ ✃➚Ò➚❐❰➹➚❒➮
❣❡tP❡r♠✐ss✐♦♥s s❡tP❡r♠✐ss✐♦♥s
✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ P❡r♠✐ss✐♦♥s ✿✿ ❋✐❧❡P❛t❤ ✲❃ P❡r♠✐ss✐♦♥s ✲❃ ■❖ ✭✮
❣❡t▼♦❞✐❢✐❝❛t✐♦♥❚✐♠❡
✿✿ ❋✐❧❡P❛t❤ ✲❃ ■❖ ❈❧♦❝❦❚✐♠❡
Ýòè ôóíêöèè ðàáîòàþò ñ êàòàëîãàìè ✭äèðåêòîðèÿìè✮ â ôàéëîâîé ñèñòåìå✳ ❐þáàÿ
îïåðàöèÿ
❉✐r❡❝t♦r②
ìîæåò
âûçâàòü
✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✱
êàê
îïèñàíî
â
ðàçäåëå ✷✶✳✶❀ âñå äðóãèå äîïóñòèìûå îøèáêè îïèñàíû íèæå✳ ❰áðàòèòå âíèìàíèå✱ â ÷àñòíîñòè✱ íà òî✱ ÷òî åñëè ðåàëèçàöèÿ íå ïîääåðæèâàåò îïåðàöèþ✱ îíà äîëæíî âûçâàòü
✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✳
✃àòàëîã ñîäåðæèò ðÿä çàïèñåé✱ êàæäàÿ èç êîòîðûõ ÿâëÿåòñÿ
èìåíîâàííîé ññûëêîé íà îáúåêò ôàéëîâîé ñèñòåìû ✭ôàéë✱ êàòàëîã è ò✳ä✳✮✳ ❮åêîòîðûå çàïèñè ìîãóò áûòü ñêðûòû✱ íåäîñòóïíû èëè èìåòü íåêîòîðóþ àäìèíèñòðàòèâíóþ ôóíêöèþ ✭íàïðèìåð✱ ✏✳✑
èëè ✏✳✳✑
â P❖❙■❳✮✱ íî ñ÷èòàåòñÿ✱ ÷òî âñå òàêèå çàïèñè
ôîðìèðóþò ÷àñòü ñîäåðæèìîãî êàòàëîãà✳ ➬àïèñè â ïîäêàòàëîãàõ✱ îäíàêî✱ íå ñ÷èòàþòñÿ ÷àñòÿìè ñîäåðæèìîãî êàòàëîãà✳ Òåì íå ìåíåå ìîãóò áûòü îáúåêòû ôàéëîâîé ñèñòåìû✱ îòëè÷íûå îò ôàéëîâ è êàòàëîãîâ✱ ýòà áèáëèîòåêà íå ðàçëè÷àåò ôèçè÷åñêèå ôàéëû è äðóãèå îáúåêòû✱ íå ÿâëÿþùèåñÿ êàòàëîãàìè✳ ➶ñå òàêèå îáúåêòû ïîýòîìó äîëæíû îáðàáàòûâàòüñÿ êàê åñëè áû îíè áûëè ôàéëàìè✳ ❮à êàæäûé îáúåêò ôàéëîâîé ñèñòåìû ññûëàåòñÿ
ïóòü✳
❰áû÷íî åñòü ïî êðàéíåé
ìåðå îäèí àáñîëþòíûé ïóòü ê êàæäîìó îáúåêòó ôàéëîâîé ñèñòåìû✳ ➶ íåêîòîðûõ îïåðàöèîííûõ ñèñòåìàõ âîçìîæíî òàêæå èìåòü ïóòè✱ êîòîðûå îòíîñÿòñÿ ê òåêóùåìó êàòàëîãó✳ Ôóíêöèÿ
❝r❡❛t❡❉✐r❡❝t♦r② dir
ñîçäàåò íîâûé êàòàëîã
dir ✱ êîòîðûé ïåðâîíà÷àëüíî ïóñò✱
èëè íàñòîëüêî ïóñò✱ íàñêîëüêî ïîçâîëÿåò îïåðàöèîííàÿ ñèñòåìà✳
Ñîîáùåíèÿ îá îøèáêàõ✳
Ôóíêöèÿ ❝r❡❛t❡❉✐r❡❝t♦r② ìîæåò çàâåðøèòüñÿ ñ îøèáêîé ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè ïîëüçîâàòåëü íå èìååò ïðàâ íà ñîçäàíèå êàòàëîãà❀ ✐s❆❧r❡❛❞②❊①✐sts❊rr♦r✱ åñëè êàòàëîã óæå ñóùåñòâóåò❀ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ åñëè
ðîäèòåëüñêèé êàòàëîã äëÿ íîâîãî êàòàëîãà íå ñóùåñòâóåò✳ Ôóíêöèÿ
r❡♠♦✈❡❉✐r❡❝t♦r② dir
óäàëÿåò ñóùåñòâóþùèé êàòàëîã
dir ✳
Ðåàëèçàöèÿ ìîæåò
óñòàíîâèòü äîïîëíèòåëüíûå îãðàíè÷åíèÿ✱ êîòîðûå äîëæíû áûòü âûïîëíåíû äî òîãî✱ êàê
êàòàëîã
áóäåò
óäàëåí
✭íàïðèìåð✱
êàòàëîã
äîëæåí
áûòü
ïóñò
èëè
íå
ìîæåò
èñïîëüçîâàòüñÿ äðóãèìè ïðîöåññàìè✮✳ Ðåàëèçàöèÿ íå äîëæíà ÷àñòè÷íî óäàëÿòü êàòàëîã✱ åñëè âåñü êàòàëîã íå óäàëåí✳ Ñîîòâåòñòâóþùàÿ ðåàëèçàöèÿ íå îáÿçàíà ïîääåðæèâàòü óäàëåíèå êàòàëîãîâ âî âñåõ ñèòóàöèÿõ ✭íàïðèìåð✱ óäàëåíèå êîðíåâîãî êàòàëîãà✮✳ Ôóíêöèÿ ãäå
file
r❡♠♦✈❡❋✐❧❡ file
óäàëÿåò çàïèñü â êàòàëîãå äëÿ ñóùåñòâóþùåãî ôàéëà
file ✱
ñàì íå ÿâëÿåòñÿ êàòàëîãîì✳ Ðåàëèçàöèÿ ìîæåò óñòàíîâèòü äîïîëíèòåëüíûå
îãðàíè÷åíèÿ✱ êîòîðûå äîëæíû áûòü âûïîëíåíû äî òîãî✱ êàê ôàéë áóäåò óäàëåí ✭íàïðèìåð✱ ôàéë íå ìîæåò èñïîëüçîâàòüñÿ äðóãèìè ïðîöåññàìè✮✳
✷✼✶
Ñîîáùåíèÿ îá îøèáêàõ✳ ñ
îøèáêîé
Ôóíêöèè
r❡♠♦✈❡❉✐r❡❝t♦r②
✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱
ôàéëà✴êàòàëîãà❀
è
r❡♠♦✈❡❋✐❧❡
ïîëüçîâàòåëü
íå
èìååò
ìîãóò çàâåðøèòüñÿ ïðàâ
íà
óäàëåíèå
åñëè ôàéë✴êàòàëîã íå ñóùåñòâóåò✳
r❡♥❛♠❡❉✐r❡❝t♦r② old new èçìåíÿåò èìÿ ñóùåñòâóþùåãî êàòàëîãà old íà new óæå ñóùåñòâóåò✱ îí àòîìàðíî çàìåùàåòñÿ êàòàëîãîì old ✳ ➴ñëè êàòàëîã new íå ÿâëÿåòñÿ íè êàòàëîãîì old ✱ íè ïñåâäîíèìîì êàòàëîãîì old ✱ îí óäàëÿåòñÿ êàê ñ ïîìîùüþ r❡♠♦✈❡❉✐r❡❝t♦r②✳ Ñîîòâåòñòâóþùàÿ ðåàëèçàöèÿ íå
Ôóíêöèÿ
new ✳
➴ñëè êàòàëîã
îáÿçàíà ïîääåðæèâàòü ïåðåèìåíîâàíèå êàòàëîãîâ âî âñåõ ñèòóàöèÿõ ✭íàïðèìåð✱ ïåðåèìåíîâàíèå ñóùåñòâóþùåãî êàòàëîãà èëè ïåðåèìåíîâàíèå ìåæäó ðàçëè÷íûìè ôèçè÷åñêèìè óñòðîéñòâàìè✮✱ íî îãðàíè÷åíèÿ äîëæíû áûòü çàäîêóìåíòèðîâàíû Ôóíêöèÿ r❡♥❛♠❡❋✐❧❡ old new èçìåíÿåò èìÿ ñóùåñòâóþùåãî îáúåêòà ôàéëîâîé ñèñòåìû old íà new ✳ ➴ñëè îáúåêò new óæå ñóùåñòâóåò✱ îí àòîìàðíî çàìåùàåòñÿ îáúåêòîì old ✳ Òàêæå ïóòü íå ìîæåò ññûëàòüñÿ íà ñóùåñòâóþùèé êàòàëîã✳ Ñîîòâåòñòâóþùàÿ ðåàëèçàöèÿ íå îáÿçàíà ïîääåðæèâàòü ïåðåèìåíîâàíèå ôàéëîâ âî âñåõ ñèòóàöèÿõ ✭íàïðèìåð✱ ïåðåèìåíîâûâàíèå ìåæäó ðàçëè÷íûìè ôèçè÷åñêèìè óñòðîéñòâàìè✮✱ íî îãðàíè÷åíèÿ äîëæíû áûòü çàäîêóìåíòèðîâàíû✳
Ñîîáùåíèÿ îá îøèáêàõ✳ ñ îøèáêîé
Ôóíêöèè
✐sP❡r♠✐ss✐♦♥❊rr♦r✱
r❡♥❛♠❡❉✐r❡❝t♦r②
ôàéëà✴êàòàëîãà èëè åñëè îäèí èç äâóõ àðãóìåíòîâ
✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ Ôóíêöèÿ
è
r❡♥❛♠❡❋✐❧❡
ìîãóò çàâåðøèòüñÿ
åñëè ïîëüçîâàòåëü íå èìååò ïðàâ íà ïåðåèìåíîâàíèå
r❡♥❛♠❡❋✐❧❡
ÿâëÿåòñÿ êàòàëîãîì❀
åñëè ôàéë✴êàòàëîã íå ñóùåñòâóåò✳
❣❡t❉✐r❡❝t♦r②❈♦♥t❡♥ts dir
âîçâðàùàåò ñïèñîê
âñåõ
çàïèñåé â
dir ✳ ✃àæäàÿ dir ✱ à íå
çàïèñü â âîçâðàùàåìîì ñïèñêå ÿâëÿåòñÿ èìåíåì îòíîñèòåëüíî êàòàëîãà àáñîëþòíûì ïóòåì✳ ➴ñëè îïåðàöèîííàÿ ñèñòåìà èìååò ïîíÿòèå î òåêóùèõ êàòàëîãàõ✱
❣❡t❈✉rr❡♥t❉✐r❡❝t♦r②
âîçâðàùàåò àáñîëþòíûé ïóòü ê òåêóùåìó êàòàëîãó âûçûâàþùåãî ïðîöåññà✳
Ñîîáùåíèÿ îá îøèáêàõ✳ Ôóíêöèè ❣❡t❉✐r❡❝t♦r②❈♦♥t❡♥ts è ❣❡t❈✉rr❡♥t❉✐r❡❝t♦r② ìîãóò ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè ïîëüçîâàòåëü íå èìååò ïðàâ íà äîñòóï ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ åñëè êàòàëîã íå ñóùåñòâóåò✳
çàâåðøèòüñÿ ñ îøèáêîé ê äèðåêòîðèè❀ ➴ñëè
îïåðàöèîííàÿ
s❡t❈✉rr❡♥t❉✐r❡❝t♦r② dir
ñèñòåìà
èìååò
ïîíÿòèå
î
òåêóùèõ
êàòàëîãàõ✱
ìåíÿåò òåêóùèé êàòàëîã âûçûâàþùåãî ïðîöåññà íà
dir ✳
Ñîîáùåíèÿ îá îøèáêàõ✳ s❡t❈✉rr❡♥t❉✐r❡❝t♦r② ìîæåò çàâåðøèòüñÿ ñ îøèáêîé ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè ïîëüçîâàòåëü íå èìååò ïðàâ íà ñìåíó êàòàëîãà íà óêàçàííûé❀ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ åñëè êàòàëîã íå ñóùåñòâóåò✳ Òèï
P❡r♠✐ss✐♦♥s
èñïîëüçóåòñÿ äëÿ ðåãèñòðàöèè òîãî✱ ÿâëÿþòñÿ ëè îïðåäåëåííûå
îïåðàöèè äîïóñòèìûìè íàä ôàéëîì✴êàòàëîãîì✳
❣❡tP❡r♠✐ss✐♦♥s
è
s❡tP❡r♠✐ss✐♦♥s
ñîîòâåòñòâåííî ïîëó÷àþò è óñòàíàâëèâàþò ýòè ïðàâà✳ Ïðàâà ïðèìåíÿþòñÿ è ê ôàéëàì✱
❡①❡❝✉t❛❜❧❡ áóäåò ðàâíî ❋❛❧s❡✱ à äëÿ ôàéëîâ ❋❛❧s❡✳ ❰áðàòèòå âíèìàíèå✱ ÷òî êàòàëîãè ìîãóò
è êàòàëîãàì✳ ➘ëÿ êàòàëîãîâ çíà÷åíèå ïîëÿ çíà÷åíèå ïîëÿ
s❡❛r❝❤❛❜❧❡
áóäåò ðàâíî
✷✼✷
➹❐➚➶➚ ✷✷✳
ÔÓ❮✃Ö➮➮ Ñ ✃➚Ò➚❐❰➹➚❒➮
áûòü äîñòóïíû äëÿ ïîèñêà✱ äàæå áóäó÷è íå äîñòóïíûìè äëÿ ÷òåíèÿ✱ åñëè èìååòñÿ ïðàâî íà òî✱ ÷òîáû èñïîëüçîâàòü èõ êàê ÷àñòü ïóòè✱ íî íå èññëåäîâàòü ñîäåðæàíèå êàòàëîãà✳
❰áðàòèòå âíèìàíèå✱ ÷òîáû èçìåíèòü íåêîòîðûå✱ íî íå âñå ïðàâà✱ ñëåäóåò èñïîëüçîâàòü ñëåäóþùóþ êîíñòðóêöèþ✿
♠❛❦❡❘❡❛❞❛❜❧❡ ❢ ❂ ❞♦
❰ïåðàöèÿ
♣ ❁✲ ❣❡tP❡r♠✐ss✐♦♥s ❢ s❡tP❡r♠✐ss✐♦♥s ❢ ✭♣ ④r❡❛❞❛❜❧❡ ❂ ❚r✉❡⑥✮
❞♦❡s❉✐r❡❝t♦r②❊①✐st
❚r✉❡✱ åñëè óêàçàííûé â àðãóìåíòå ôàéë ❋❛❧s❡ èíà÷å✳ ❰ïåðàöèÿ ❞♦❡s❋✐❧❡❊①✐st âîçâðàùàåò ôàéë ñóùåñòâóåò è íå ÿâëÿåòñÿ êàòàëîãîì✱ è ❋❛❧s❡
âîçâðàùàåò
ñóùåñòâóåò è ÿâëÿåòñÿ êàòàëîãîì✱ è
❚r✉❡✱
åñëè óêàçàííûé â àðãóìåíòå
èíà÷å✳
❰ïåðàöèÿ
❣❡t▼♦❞✐❢✐❝❛t✐♦♥❚✐♠❡
âîçâðàùàåò
âðåìÿ
ñèñòåìíûõ
÷àñîâ✱
â
êîòîðîå
ôàéë✴êàòàëîã áûë èçìåíåí â ïîñëåäíèé ðàç✳
Ñîîáùåíèÿ îá îøèáêàõ
❣❡t✭s❡t✮P❡r♠✐ss✐♦♥s✱
✳
❣❡t▼♦❞✐❢✐❝❛t✐♦♥❚✐♠❡ ïîëüçîâàòåëü
íå
ìîãóò
èìååò
✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱
åñëè
çàâåðøèòüñÿ
ïðàâ
íà
ôàéë✴êàòàëîã
ìîæåò òàêæå çàâåðøèòüñÿ ñ îøèáêîé
ñ
äîñòóï íå
❞♦❡s❋✐❧❡✭❉✐r❡❝t♦r②✮❊①✐st è îøèáêîé ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ åñëè ê
ñîîòâåòñòâóþùåé
ñóùåñòâóåò✳
✐sP❡r♠✐ss✐♦♥❊rr♦r✱
Ôóíêöèÿ
åñëè ïîëüçîâàòåëü íå èìååò
ïðàâ íà èçìåíåíèå ïðàâ äëÿ óêàçàííîãî ôàéëà èëè êàòàëîãà❀ åñëè ôàéë✴êàòàëîã íå ñóùåñòâóåò✳
èíôîðìàöèè❀
s❡tP❡r♠✐ss✐♦♥s
✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱
➹ëàâà ✷✸
Ñèñòåìíûå ôóíêöèè ♠♦❞✉❧❡ ❙②st❡♠ ✭ ❊①✐t❈♦❞❡✭❊①✐t❙✉❝❝❡ss✱❊①✐t❋❛✐❧✉r❡✮✱ ❣❡t❆r❣s✱ ❣❡tPr♦❣◆❛♠❡✱ ❣❡t❊♥✈✱ s②st❡♠✱ ❡①✐t❲✐t❤✱ ❡①✐t❋❛✐❧✉r❡ ✮ ✇❤❡r❡ ❞❛t❛ ❊①✐t❈♦❞❡ ❂ ❊①✐t❙✉❝❝❡ss ⑤ ❊①✐t❋❛✐❧✉r❡ ■♥t ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮ ❣❡t❆r❣s ❣❡tPr♦❣◆❛♠❡ ❣❡t❊♥✈ s②st❡♠ ❡①✐t❲✐t❤ ❡①✐t❋❛✐❧✉r❡
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
■❖ ❬❙tr✐♥❣❪ ■❖ ❙tr✐♥❣ ❙tr✐♥❣ ✲❃ ■❖ ❙tr✐♥❣ ❙tr✐♥❣ ✲❃ ■❖ ❊①✐t❈♦❞❡ ❊①✐t❈♦❞❡ ✲❃ ■❖ ❛ ■❖ ❛
Ýòà áèáëèîòåêà îïèñûâàåò âçàèìîäåéñòâèå ïðîãðàììû ñ îïåðàöèîííîé ñèñòåìîé✳ ❐þáàÿ îïåðàöèÿ èç
❙②st❡♠
ìîæåò âûçâàòü
✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✱
êàê îïèñàíî â
ðàçäåëå ✷✶✳✶❀ âñå îñòàëüíûå äîïóñòèìûå îøèáêè îïèñàíû íèæå✳ ❰áðàòèòå âíèìàíèå✱ â ÷àñòíîñòè✱ íà òî✱ ÷òî åñëè ðåàëèçàöèÿ íå ïîääåðæèâàåò îïåðàöèþ✱ îíà äîëæíà âûçâàòü
✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✳
❊①✐t❈♦❞❡ çàäàåò ❊①✐t❙✉❝❝❡ss óêàçûâàåò
Òèï
êîäû
çàâåðøåíèÿ✱
êîòîðûå
íà óñïåøíîå çàâåðøåíèå✱ à
íåóñïåøíîå çàâåðøåíèå ïðîãðàììû ñî çíà÷åíèåì
ïðîãðàììà
ìîæåò
❊①✐t❋❛✐❧✉r❡ êîä
êîä✳
âåðíóòü✳
óêàçûâàåò íà
Òî÷íàÿ èíòåðïðåòàöèÿ
çàâèñèò îò îïåðàöèîííîé ñèñòåìû✳ ➶ ÷àñòíîñòè✱ íåêîòîðûå çíà÷åíèÿ
êîäà
êîäà
ìîãóò áûòü
çàïðåùåíû ✭íàïðèìåð✱ ✵ â P❖❙■❳✲ñèñòåìàõ✮✳ Ôóíêöèÿ
❣❡t❆r❣s
âîçâðàùàåò ñïèñîê àðãóìåíòîâ êîìàíäíîé ñòðîêè ✭èñêëþ÷àÿ èìÿ
ïðîãðàììû✮✳ Ôóíêöèÿ
❣❡tPr♦❣◆❛♠❡ âîçâðàùàåò èìÿ ïðîãðàììû✱ ïîñðåäñòâîì êîòîðîãî ✷✼✸
✷✼✹
➹❐➚➶➚ ✷✸✳
îíà áûëà âûçâàíà✳ Ôóíêöèÿ ➴ñëè ïåðåìåííàÿ
Ôóíêöèÿ
var
❣❡t❊♥✈ var
íå îïðåäåëåíà✱ áóäåò âûçâàíî èñêëþ÷åíèå
s②st❡♠ cmd
âîçâðàùàåò
êîä
❡①✐t❲✐t❤ êîä
ïðîãðàììó✳
Ïåðåä
çàâåðøåíèÿ✱
ñãåíåðèðîâàííûé
îïåðàöèîííîé
cmd ✳
çàâåðøàåò ïðîãðàììó✱ âîçâðàùàÿ
çàâåðøåíèåì
var ✳ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✳
âîçâðàùàåò çíà÷åíèå ïåðåìåííîé ñðåäû
ñèñòåìîé â ðåçóëüòàòå îáðàáîòêè êîìàíäû
Ôóíêöèÿ
Ñ➮ÑÒ➴❒❮Û➴ ÔÓ❮✃Ö➮➮
ïðîãðàììû
ñíà÷àëà
êîä
áóäóò
ïðîöåññó✱ âûçâàâøåìó
çàêðûòû
âñå
îòêðûòûå
èëè ïîëóçàêðûòûå äåñêðèïòîðû✳ ➶ûçâàâøèé ïðîöåññ ìîæåò èíòåðïðåòèðîâàòü êîä âîçâðàòà êàê ïîæåëàåò✱ íî ïðîãðàììà äîëæíà âîçâðàòèòü íîðìàëüíîãî çàâåðøåíèÿ è ñòîëêíóëàñü
ñ
ïðîáëåìîé✱
❊①✐t❋❛✐❧✉r❡ n èç✲çà
❊①✐t❙✉❝❝❡ss äëÿ îáîçíà÷åíèÿ
äëÿ îáîçíà÷åíèÿ ñèòóàöèè✱ êîãäà ïðîãðàììà
êîòîðîé
îíà
íå
ìîæåò
âîññòàíîâèòüñÿ✳
➬íà÷åíèå
❡①✐t❋❛✐❧✉r❡ ðàâíî ❡①✐t❲✐t❤ ✭❊①✐t❋❛✐❧✉r❡ exitfail ✮✱ ãäå exitfail çàâèñèò îò ðåàëèçàöèè✳ ❡①✐t❲✐t❤ èãíîðèðóåò îáðàáîòêó îøèáîê â ìîíàäå ââîäà ✲ âûâîäà è íå ìîæåò áûòü ïåðåõâà÷åíà ñ ïîìîùüþ ❝❛t❝❤✳ ➴ñëè ïðîãðàììà çàâåðøàåòñÿ â ðåçóëüòàòå âûçîâà ôóíêöèè óñòàíîâëåíî✱ ÷òî åå çíà÷åíèåì ÿâëÿåòñÿ
⊥✱
❡rr♦r
❡①✐t❋❛✐❧✉r❡✳ ➮íà÷å✱ åñëè êàêàÿ✲íèáóäü ïðîãðàììà p çàâåðøàåòñÿ ❡①✐t❲✐t❤✱ òî îíà îáðàáàòûâàåòñÿ òàê æå✱ êàê è âûðàæåíèå
ôóíêöèÿ âûçîâà
èëè ïîòîìó ÷òî
òîãäà îíà îáðàáàòûâàåòñÿ òàê æå✱ êàê è
✭p ❃❃ ❡①✐t❲✐t❤ ❊①✐t❙✉❝❝❡ss✮ ❵❝❛t❝❤❵ ❭ ❴ ✲❃ ❡①✐t❋❛✐❧✉r❡
áåç ÿâíîãî
➹ëàâà ✷✹
➘àòà è âðåìÿ ♠♦❞✉❧❡ ❚✐♠❡ ✭ ❈❧♦❝❦❚✐♠❡✱ ▼♦♥t❤✭❏❛♥✉❛r②✱❋❡❜r✉❛r②✱▼❛r❝❤✱❆♣r✐❧✱▼❛②✱❏✉♥❡✱ ❏✉❧②✱❆✉❣✉st✱❙❡♣t❡♠❜❡r✱❖❝t♦❜❡r✱◆♦✈❡♠❜❡r✱❉❡❝❡♠❜❡r✮✱ ❉❛②✭❙✉♥❞❛②✱▼♦♥❞❛②✱❚✉❡s❞❛②✱❲❡❞♥❡s❞❛②✱❚❤✉rs❞❛②✱❋r✐❞❛②✱❙❛t✉r❞❛②✮✱ ❈❛❧❡♥❞❛r❚✐♠❡✭❈❛❧❡♥❞❛r❚✐♠❡✱ ❝t❨❡❛r✱ ❝t▼♦♥t❤✱ ❝t❉❛②✱ ❝t❍♦✉r✱ ❝t▼✐♥✱ ❝t❙❡❝✱ ❝tP✐❝♦s❡❝✱ ❝t❲❉❛②✱ ❝t❨❉❛②✱ ❝t❚❩◆❛♠❡✱ ❝t❚❩✱ ❝t■s❉❙❚✮✱ ❚✐♠❡❉✐❢❢✭❚✐♠❡❉✐❢❢✱ t❞❨❡❛r✱ t❞▼♦♥t❤✱ t❞❉❛②✱ t❞❍♦✉r✱ t❞▼✐♥✱ t❞❙❡❝✱ t❞P✐❝♦s❡❝✮✱ ❣❡t❈❧♦❝❦❚✐♠❡✱ ❛❞❞❚♦❈❧♦❝❦❚✐♠❡✱ ❞✐❢❢❈❧♦❝❦❚✐♠❡s✱ t♦❈❛❧❡♥❞❛r❚✐♠❡✱ t♦❯❚❈❚✐♠❡✱ t♦❈❧♦❝❦❚✐♠❡✱ ❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣✱ ❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡ ✮ ✇❤❡r❡ ✐♠♣♦rt ■①✭■①✮ ❞❛t❛ ❈❧♦❝❦❚✐♠❡ ❂ ✳✳✳ ✐♥st❛♥❝❡ ❖r❞ ❈❧♦❝❦❚✐♠❡ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❊q ❈❧♦❝❦❚✐♠❡ ✇❤❡r❡ ✳✳✳
✲✲ ➬àâèñèò îò ðåàëèçàöèè
❞❛t❛ ▼♦♥t❤ ❂ ❏❛♥✉❛r② ⑤ ❋❡❜r✉❛r② ⑤ ▼❛r❝❤ ⑤ ❆♣r✐❧ ⑤ ▼❛② ⑤ ❏✉♥❡ ⑤ ❏✉❧② ⑤ ❆✉❣✉st ⑤ ❙❡♣t❡♠❜❡r ⑤ ❖❝t♦❜❡r ⑤ ◆♦✈❡♠❜❡r ⑤ ❉❡❝❡♠❜❡r ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✱ ■①✱ ❘❡❛❞✱ ❙❤♦✇✮ ❞❛t❛ ❉❛②
❂ ❙✉♥❞❛② ⑤ ▼♦♥❞❛② ⑤ ❚✉❡s❞❛② ⑤ ❲❡❞♥❡s❞❛② ⑤ ❚❤✉rs❞❛② ⑤ ❋r✐❞❛② ⑤ ❙❛t✉r❞❛② ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✱ ■①✱ ❘❡❛❞✱ ❙❤♦✇✮
✷✼✺
✷✼✻
➹❐➚➶➚ ✷✹✳
❞❛t❛ ❈❛❧❡♥❞❛r❚✐♠❡ ❂ ❈❛❧❡♥❞❛r❚✐♠❡ ④ ❝t❨❡❛r ❝t▼♦♥t❤ ❝t❉❛②✱ ❝t❍♦✉r✱ ❝t▼✐♥✱ ❝t❙❡❝ ❝tP✐❝♦s❡❝ ❝t❲❉❛② ❝t❨❉❛② ❝t❚❩◆❛♠❡ ❝t❚❩ ❝t■s❉❙❚ ⑥ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
➘➚Ò➚ ➮ ➶Ð➴❒ß
■♥t✱ ▼♦♥t❤✱ ■♥t✱ ■♥t❡❣❡r✱ ❉❛②✱ ■♥t✱ ❙tr✐♥❣✱ ■♥t✱ ❇♦♦❧
❞❛t❛ ❚✐♠❡❉✐❢❢ ❂ ❚✐♠❡❉✐❢❢ ④ t❞❨❡❛r✱ t❞▼♦♥t❤✱ t❞❉❛②✱ t❞❍♦✉r✱ t❞▼✐♥✱ t❞❙❡❝ ✿✿ ■♥t✱ t❞P✐❝♦s❡❝ ✿✿ ■♥t❡❣❡r ⑥ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮
✲✲ Ôóíêöèè ñî âðåìåíåì ❣❡t❈❧♦❝❦❚✐♠❡ ✿✿ ■❖ ❈❧♦❝❦❚✐♠❡ ❛❞❞❚♦❈❧♦❝❦❚✐♠❡ ❞✐❢❢❈❧♦❝❦❚✐♠❡s
✿✿ ❚✐♠❡❉✐❢❢ ✲❃ ❈❧♦❝❦❚✐♠❡ ✲❃ ❈❧♦❝❦❚✐♠❡ ✿✿ ❈❧♦❝❦❚✐♠❡ ✲❃ ❈❧♦❝❦❚✐♠❡ ✲❃ ❚✐♠❡❉✐❢❢
t♦❈❛❧❡♥❞❛r❚✐♠❡ t♦❯❚❈❚✐♠❡ t♦❈❧♦❝❦❚✐♠❡ ❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣ ❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡
✿✿ ✿✿ ✿✿ ✿✿ ✿✿
❈❧♦❝❦❚✐♠❡ ✲❃ ■❖ ❈❛❧❡♥❞❛r❚✐♠❡ ❈❧♦❝❦❚✐♠❡ ✲❃ ❈❛❧❡♥❞❛r❚✐♠❡ ❈❛❧❡♥❞❛r❚✐♠❡ ✲❃ ❈❧♦❝❦❚✐♠❡ ❈❛❧❡♥❞❛r❚✐♠❡ ✲❃ ❙tr✐♥❣ ❚✐♠❡▲♦❝❛❧❡ ✲❃ ❙tr✐♥❣ ✲❃ ❈❛❧❡♥❞❛r❚✐♠❡ ✲❃ ❙tr✐♥❣
➪èáëèîòåêà ❚✐♠❡ îáåñïå÷èâàåò ñòàíäàðòíûå ôóíêöèîíàëüíûå âîçìîæíîñòè ðàáîòû ñî âðåìåíåì ñèñòåìíûõ ÷àñîâ✱ âêëþ÷àÿ èíôîðìàöèþ î ÷àñîâûõ ïîÿñàõ✳ ❰íà ñîîòâåòñòâóåò ❘❋❈ ✶✶✷✾ â åãî èñïîëüçîâàíèè âñåîáùåãî ñêîîðäèíèðîâàííîãî âðåìåíè ✭❯❚❈ ✖ ❈♦♦r✲ ❞✐♥❛t❡❞ ❯♥✐✈❡rs❛❧ ❚✐♠❡✮✳ ❈❧♦❝❦❚✐♠❡ ÿâëÿåòñÿ àáñòðàêòíûì òèïîì✱ êîòîðûé èñïîëüçóåòñÿ äëÿ ñèñòåìíûõ âíóòðåííèõ ÷àñîâ ✭ñèñòåìíîãî âíóòðåííåãî ãåíåðàòîðà òàêòîâûõ èìïóëüñîâ✮✳ Òàêòû ñèñòåìíûõ ÷àñîâ ìîæíî ñðàâíèâàòü íåïîñðåäñòâåííî èëè ïîñëå ïðåîáðàçîâàíèÿ èõ â êàëåíäàðíîå âðåìÿ ❈❛❧❡♥❞❛r❚✐♠❡ äëÿ ââîäà ✲ âûâîäà èëè äðóãèõ ìàíèïóëÿöèé✳ ❈❛❧❡♥❞❛r❚✐♠❡ ÿâëÿåòñÿ óäîáíûì äëÿ èñïîëüçîâàíèÿ è ìàíèïóëèðîâàíèÿ ïðåäñòàâëåíèåì âíóòðåííåãî òèïà ❈❧♦❝❦❚✐♠❡✳ ×èñëîâûå ïîëÿ èìåþò ñëåäóþùèå äèàïàçîíû✿
✷✼✼ ➬íà÷åíèå ❝t❨❡❛r ❝t❉❛② ❝t❍♦✉r ❝t▼✐♥ ❝t❙❡❝ ❝tP✐❝♦s❡❝ ❝t❨❉❛② ❝t❚❩
➘èàïàçîí ✲♠❛①■♥t ✶ ✵ ✵ ✵ ✵ ✵ ✲✽✾✾✾✾
...
♠❛①■♥t ✸✶ ✷✸ ✺✾ ✻✶
... ... ... ... . . . (1012 ) − 1 ... ...
✸✻✺ ✽✾✾✾✾
✃îììåíòàðèè ➘àòû äî ãðèãîðèàíñêèõ ÿâëÿþòñÿ îøèáî÷íûìè ➘îïóñêàåò äî äâóõ ñêà÷êîâ ñåêóíä ✸✻✹ â íåâèñîêîñíûå ãîäû ❰òêëîíåíèå îò ❯❚❈ â ñåêóíäàõ
Ïîëå ctTZName ✖ ýòî íàçâàíèå ÷àñîâîãî ïîÿñà✳ ➬íà÷åíèå ïîëÿ ctIsDST ðàâíî ❚r✉❡✱ åñëè èìååò ìåñòî ëåòíåå âðåìÿ✱ è ❋❛❧s❡ èíà÷å✳ Òèï ❚✐♠❡❉✐❢❢ ðåãèñòðèðóåò ðàçëè÷èÿ ìåæäó äâóìÿ òàêòàìè ñèñòåìíûõ ÷àñîâ â óäîáíîé äëÿ èñïîëüçîâàíèÿ ôîðìå✳ Ôóíêöèÿ ❣❡t❈❧♦❝❦❚✐♠❡ âîçâðàùàåò òåêóùåå âðåìÿ â åãî âíóòðåííåì ïðåäñòàâëåíèè✳ ➶ûðàæåíèå ❛❞❞❚♦❈❧♦❝❦❚✐♠❡ d t ñêëàäûâàåò ðàçíèöó âî âðåìåíè d è âðåìÿ ñèñòåìíûõ ÷àñîâ t ✱ ÷òîáû ïîëó÷èòü íîâîå âðåìÿ ñèñòåìíûõ ÷àñîâ✳ Ðàçíèöà d ìîæåò áûòü ïîëîæèòåëüíîé èëè îòðèöàòåëüíîé✳ ➶ûðàæåíèå ❞✐❢❢❈❧♦❝❦❚✐♠❡s t1 t2 âîçâðàùàåò ðàçíèöó ìåæäó äâóìÿ çíà÷åíèÿìè ñèñòåìíûõ ÷àñîâ t1 è t2 ✱ êàê è ❚✐♠❡❉✐❢❢✳ Ôóíêöèÿ t♦❈❛❧❡♥❞❛r❚✐♠❡ t ïðåîáðàçîâûâàåò t â ìåñòíîå âðåìÿ â ñîîòâåòñòâèè ñ ÷àñîâûì ïîÿñîì è óñòàíîâêàìè ëåòíåãî âðåìåíè✳ ➮ç✲çà ýòîé çàâèñèìîñòè îò ìåñòíîé ñðåäû t♦❈❛❧❡♥❞❛r❚✐♠❡ íàõîäèòñÿ â ìîíàäå ■❖✳ Ôóíêöèÿ t♦❯❚❈❚✐♠❡ t ïðåîáðàçîâûâàåò t â ❈❛❧❡♥❞❛r❚✐♠❡ â ñòàíäàðòíîì ôîðìàòå ❯❚❈✳ t♦❈❧♦❝❦❚✐♠❡ l ïðåîáðàçîâûâàåò l â ñîîòâåòñòâóþùåå âíóòðåííåå çíà÷åíèå ❈❧♦❝❦❚✐♠❡✱ èãíîðèðóÿ ñîäåðæèìîå ïîëåé ctWDay ✱ ctYDay ✱ ctTZName è ctIsDST ✳ Ôóíêöèÿ ❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣ ôîðìàòèðóåò çíà÷åíèÿ êàëåíäàðíîãî âðåìåíè✱ èñïîëüçóÿ íàöèîíàëüíûå îñîáåííîñòè è ñòðîêó ôîðìàòèðîâàíèÿ✳
✷✼✽ ✷✹✳✶
➹❐➚➶➚ ✷✹✳
➪èáëèîòåêà
➘➚Ò➚ ➮ ➶Ð➴❒ß
❚✐♠❡
♠♦❞✉❧❡ ❚✐♠❡ ✭ ❈❧♦❝❦❚✐♠❡✱ ▼♦♥t❤✭❏❛♥✉❛r②✱❋❡❜r✉❛r②✱▼❛r❝❤✱❆♣r✐❧✱▼❛②✱❏✉♥❡✱ ❏✉❧②✱❆✉❣✉st✱❙❡♣t❡♠❜❡r✱❖❝t♦❜❡r✱◆♦✈❡♠❜❡r✱❉❡❝❡♠❜❡r✮✱ ❉❛②✭❙✉♥❞❛②✱▼♦♥❞❛②✱❚✉❡s❞❛②✱❲❡❞♥❡s❞❛②✱❚❤✉rs❞❛②✱❋r✐❞❛②✱❙❛t✉r❞❛②✮✱ ❈❛❧❡♥❞❛r❚✐♠❡✭❈❛❧❡♥❞❛r❚✐♠❡✱ ❝t❨❡❛r✱ ❝t▼♦♥t❤✱ ❝t❉❛②✱ ❝t❍♦✉r✱ ❝t▼✐♥✱ ❝t❙❡❝✱ ❝tP✐❝♦s❡❝✱ ❝t❲❉❛②✱ ❝t❨❉❛②✱ ❝t❚❩◆❛♠❡✱ ❝t❚❩✱ ❝t■s❉❙❚✮✱ ❚✐♠❡❉✐❢❢✭❚✐♠❡❉✐❢❢✱ t❞❨❡❛r✱ t❞▼♦♥t❤✱ t❞❉❛②✱ t❞❍♦✉r✱ t❞▼✐♥✱ t❞❙❡❝✱ t❞P✐❝♦s❡❝✮✱ ❣❡t❈❧♦❝❦❚✐♠❡✱ ❛❞❞❚♦❈❧♦❝❦❚✐♠❡✱ ❞✐❢❢❈❧♦❝❦❚✐♠❡s✱ t♦❈❛❧❡♥❞❛r❚✐♠❡✱ t♦❯❚❈❚✐♠❡✱ t♦❈❧♦❝❦❚✐♠❡✱ ❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣✱ ❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡ ✮ ✇❤❡r❡ ✐♠♣♦rt ■①✭■①✮ ✐♠♣♦rt ▲♦❝❛❧❡✭❚✐♠❡▲♦❝❛❧❡✭✳✳✮✱❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡✮ ✐♠♣♦rt ❈❤❛r ✭ ✐♥t❚♦❉✐❣✐t ✮ ❞❛t❛ ❈❧♦❝❦❚✐♠❡ ❂ ✳✳✳ ✐♥st❛♥❝❡ ❖r❞ ❈❧♦❝❦❚✐♠❡ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❊q ❈❧♦❝❦❚✐♠❡ ✇❤❡r❡ ✳✳✳
✲ ➬àâèñèò îò ðåàëèçàöèè
❞❛t❛ ▼♦♥t❤ ❂ ❏❛♥✉❛r② ⑤ ❋❡❜r✉❛r② ⑤ ▼❛r❝❤ ⑤ ❆♣r✐❧ ⑤ ▼❛② ⑤ ❏✉♥❡ ⑤ ❏✉❧② ⑤ ❆✉❣✉st ⑤ ❙❡♣t❡♠❜❡r ⑤ ❖❝t♦❜❡r ⑤ ◆♦✈❡♠❜❡r ⑤ ❉❡❝❡♠❜❡r ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✱ ■①✱ ❘❡❛❞✱ ❙❤♦✇✮ ❞❛t❛ ❉❛②
❂ ❙✉♥❞❛② ⑤ ▼♦♥❞❛② ⑤ ❚✉❡s❞❛② ⑤ ❲❡❞♥❡s❞❛② ⑤ ❚❤✉rs❞❛② ⑤ ❋r✐❞❛② ⑤ ❙❛t✉r❞❛② ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❊♥✉♠✱ ❇♦✉♥❞❡❞✱ ■①✱ ❘❡❛❞✱ ❙❤♦✇✮
❞❛t❛ ❈❛❧❡♥❞❛r❚✐♠❡ ❂ ❈❛❧❡♥❞❛r❚✐♠❡ ④ ❝t❨❡❛r ❝t▼♦♥t❤ ❝t❉❛②✱ ❝t❍♦✉r✱ ❝t▼✐♥✱ ❝t❙❡❝ ❝tP✐❝♦s❡❝ ❝t❲❉❛② ❝t❨❉❛② ❝t❚❩◆❛♠❡ ❝t❚❩ ❝t■s❉❙❚ ⑥ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮
✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿ ✿✿
■♥t✱ ▼♦♥t❤✱ ■♥t✱ ■♥t❡❣❡r✱ ❉❛②✱ ■♥t✱ ❙tr✐♥❣✱ ■♥t✱ ❇♦♦❧
❞❛t❛ ❚✐♠❡❉✐❢❢ ❂ ❚✐♠❡❉✐❢❢ ④ t❞❨❡❛r✱ t❞▼♦♥t❤✱ t❞❉❛②✱ t❞❍♦✉r✱ t❞▼✐♥✱ t❞❙❡❝ ✿✿ ■♥t✱ t❞P✐❝♦s❡❝ ✿✿ ■♥t❡❣❡r ⑥ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❘❡❛❞✱ ❙❤♦✇✮ ❣❡t❈❧♦❝❦❚✐♠❡ ❣❡t❈❧♦❝❦❚✐♠❡
✿✿ ■❖ ❈❧♦❝❦❚✐♠❡ ❂ ✳✳✳ ✲✲ ➬àâèñèò îò ðåàëèçàöèè
✷✹✳✶✳
➪➮➪❐➮❰Ò➴✃➚
❛❞❞❚♦❈❧♦❝❦❚✐♠❡ ❛❞❞❚♦❈❧♦❝❦❚✐♠❡ t❞ ❝t
❚■▼❊ ✿✿ ❚✐♠❡❉✐❢❢ ❂ ✳✳✳
✷✼✾ ✲❃ ❈❧♦❝❦❚✐♠❡ ✲❃ ❈❧♦❝❦❚✐♠❡ ✲✲ ➬àâèñèò îò ðåàëèçàöèè
❞✐❢❢❈❧♦❝❦❚✐♠❡s ✿✿ ❈❧♦❝❦❚✐♠❡ ❞✐❢❢❈❧♦❝❦❚✐♠❡s ❝t✶ ❝t✷ ❂ ✳✳✳
✲❃ ❈❧♦❝❦❚✐♠❡ ✲❃ ❚✐♠❡❉✐❢❢ ✲✲ ➬àâèñèò îò ðåàëèçàöèè
t♦❈❛❧❡♥❞❛r❚✐♠❡ t♦❈❛❧❡♥❞❛r❚✐♠❡ ❝t
✿✿ ❈❧♦❝❦❚✐♠❡ ❂ ✳✳✳
✲❃ ■❖ ❈❛❧❡♥❞❛r❚✐♠❡ ✲✲ ➬àâèñèò îò ðåàëèçàöèè
t♦❯❚❈❚✐♠❡ t♦❯❚❈❚✐♠❡ ❝t
✿✿ ❈❧♦❝❦❚✐♠❡ ❂ ✳✳✳
✲❃ ❈❛❧❡♥❞❛r❚✐♠❡ ✲✲ ➬àâèñèò îò ðåàëèçàöèè
t♦❈❧♦❝❦❚✐♠❡ t♦❈❧♦❝❦❚✐♠❡ ❝❛❧
✿✿ ❈❛❧❡♥❞❛r❚✐♠❡ ✲❃ ❈❧♦❝❦❚✐♠❡ ❂ ✳✳✳ ✲✲ ➬àâèñèò îò ðåàëèçàöèè
❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣ ❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣
✿✿ ❈❛❧❡♥❞❛r❚✐♠❡ ✲❃ ❙tr✐♥❣ ❂ ❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡ ❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡ ✧✪❝✧
✷✽✵
➹❐➚➶➚ ✷✹✳
➘➚Ò➚ ➮ ➶Ð➴❒ß
❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡ ✿✿ ❚✐♠❡▲♦❝❛❧❡ ✲❃ ❙tr✐♥❣ ✲❃ ❈❛❧❡♥❞❛r❚✐♠❡ ✲❃ ❙tr✐♥❣ ❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡ ❧ ❢♠t ❝t❅✭❈❛❧❡♥❞❛r❚✐♠❡ ②❡❛r ♠♦♥ ❞❛② ❤♦✉r ♠✐♥ s❡❝ s❞❡❝ ✇❞❛② ②❞❛② t③♥❛♠❡ ❴ ❴✮ ❂ ❞♦❋♠t ❢♠t ✇❤❡r❡ ❞♦❋♠t ✭✬✪✬✿❝✿❝s✮ ❂ ❞❡❝♦❞❡ ❝ ✰✰ ❞♦❋♠t ❝s ❞♦❋♠t ✭❝✿❝s✮ ❂ ❝ ✿ ❞♦❋♠t ❝s ❞♦❋♠t ✧✧ ❂ ✧✧ t♦✶✷ ✿✿ ■♥t ✲❃ ■♥t t♦✶✷ ❤ ❂ ❧❡t ❤✬ ❂ ❤ ❵♠♦❞❵ ✶✷ ✐♥ ✐❢ ❤✬ ❂❂ ✵ t❤❡♥ ✶✷ ❡❧s❡ ❤✬ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡ ❞❡❝♦❞❡
✬❆✬ ✬❛✬ ✬❇✬ ✬❜✬ ✬❤✬ ✬❈✬ ✬❝✬ ✬❉✬ ✬❞✬ ✬❡✬ ✬❍✬ ✬■✬ ✬❥✬ ✬❦✬ ✬❧✬ ✬▼✬ ✬♠✬ ✬♥✬ ✬♣✬ ✬❘✬ ✬r✬ ✬❚✬ ✬t✬ ✬❙✬ ✬s✬ ✬❯✬ ✬✉✬
❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂ ❂
❢st ✭✇❉❛②s ❧ ✦✦ ❢r♦♠❊♥✉♠ ✇❞❛②✮ s♥❞ ✭✇❉❛②s ❧ ✦✦ ❢r♦♠❊♥✉♠ ✇❞❛②✮ ❢st ✭♠♦♥t❤s ❧ ✦✦ ❢r♦♠❊♥✉♠ ♠♦♥✮ s♥❞ ✭♠♦♥t❤s ❧ ✦✦ ❢r♦♠❊♥✉♠ ♠♦♥✮ s♥❞ ✭♠♦♥t❤s ❧ ✦✦ ❢r♦♠❊♥✉♠ ♠♦♥✮ s❤♦✇✷ ✭②❡❛r ❵q✉♦t❵ ✶✵✵✮ ❞♦❋♠t ✭❞❛t❡❚✐♠❡❋♠t ❧✮ ❞♦❋♠t ✧✪♠✴✪❞✴✪②✧ s❤♦✇✷ ❞❛② s❤♦✇✷✬ ❞❛② s❤♦✇✷ ❤♦✉r s❤♦✇✷ ✭t♦✶✷ ❤♦✉r✮ s❤♦✇✸ ②❞❛② s❤♦✇✷✬ ❤♦✉r s❤♦✇✷✬ ✭t♦✶✷ ❤♦✉r✮ s❤♦✇✷ ♠✐♥ s❤♦✇✷ ✭❢r♦♠❊♥✉♠ ♠♦♥✰✶✮ ✧❭♥✧ ✭✐❢ ❤♦✉r ❁ ✶✷ t❤❡♥ ❢st ❡❧s❡ s♥❞✮ ✭❛♠P♠ ❧✮ ❞♦❋♠t ✧✪❍✿✪▼✧ ❞♦❋♠t ✭t✐♠❡✶✷❋♠t ❧✮ ❞♦❋♠t ✧✪❍✿✪▼✿✪❙✧ ✧❭t✧ s❤♦✇✷ s❡❝ ✳✳✳ ✲✲ ➬àâèñèò îò ðåàëèçàöèè s❤♦✇✷ ✭✭②❞❛② ✰ ✼ ✲ ❢r♦♠❊♥✉♠ ✇❞❛②✮ ❵❞✐✈❵ ✼✮ s❤♦✇ ✭❧❡t ♥ ❂ ❢r♦♠❊♥✉♠ ✇❞❛② ✐♥ ✐❢ ♥ ❂❂ ✵ t❤❡♥ ✼ ❡❧s❡ ♥✮
❞❡❝♦❞❡ ✬❱✬ ❂ ❧❡t ✭✇❡❡❦✱ ❞❛②s✮ ❂ ✭②❞❛② ✰ ✼ ✲ ✐❢ ❢r♦♠❊♥✉♠ ✇❞❛② ❃ ✵ t❤❡♥ ❢r♦♠❊♥✉♠ ✇❞❛② ✲ ✶ ❡❧s❡ ✻✮ ❵❞✐✈▼♦❞❵ ✼ ✐♥ s❤♦✇✷ ✭✐❢ ❞❛②s ❃❂ ✹ t❤❡♥
✷✹✳✶✳
➪➮➪❐➮❰Ò➴✃➚
❚■▼❊ ✇❡❡❦✰✶ ❡❧s❡ ✐❢ ✇❡❡❦ ❂❂ ✵ t❤❡♥ ✺✸ ❡❧s❡ ✇❡❡❦✮
❞❡❝♦❞❡ ✬❲✬ ❂ s❤♦✇✷ ✭✭②❞❛② ✰ ✼ ✲ ✐❢ ❢r♦♠❊♥✉♠ ✇❞❛② ❃ ✵ t❤❡♥ ❢r♦♠❊♥✉♠ ✇❞❛② ✲ ✶ ❡❧s❡ ✻✮ ❵❞✐✈❵ ✼✮ ❞❡❝♦❞❡ ✬✇✬ ❂ s❤♦✇ ✭❢r♦♠❊♥✉♠ ✇❞❛②✮ ❞❡❝♦❞❡ ✬❳✬ ❂ ❞♦❋♠t ✭t✐♠❡❋♠t ❧✮ ❞❡❝♦❞❡ ✬①✬ ❂ ❞♦❋♠t ✭❞❛t❡❋♠t ❧✮ ❞❡❝♦❞❡ ✬❨✬ ❂ s❤♦✇ ②❡❛r ❞❡❝♦❞❡ ✬②✬ ❂ s❤♦✇✷ ✭②❡❛r ❵r❡♠❵ ✶✵✵✮ ❞❡❝♦❞❡ ✬❩✬ ❂ t③♥❛♠❡ ❞❡❝♦❞❡ ✬✪✬ ❂ ✧✪✧ ❞❡❝♦❞❡ ❝ ❂ ❬❝❪ s❤♦✇✷✱ s❤♦✇✷✬✱ s❤♦✇✸ ✿✿ ■♥t ✲❃ ❙tr✐♥❣ s❤♦✇✷ ① ❂ ❬✐♥t❚♦❉✐❣✐t ✭① ❵q✉♦t❵ ✶✵✮✱ ✐♥t❚♦❉✐❣✐t ✭① ❵r❡♠❵ ✶✵✮❪ s❤♦✇✷✬ ① ❂ ✐❢ ① ❁ ✶✵ t❤❡♥ ❬ ✬ ✬✱ ✐♥t❚♦❉✐❣✐t ①❪ ❡❧s❡ s❤♦✇✷ ① s❤♦✇✸ ① ❂ ✐♥t❚♦❉✐❣✐t ✭① ❵q✉♦t❵ ✶✵✵✮ ✿ s❤♦✇✷ ✭① ❵r❡♠❵ ✶✵✵✮
✷✽✶
✷✽✷
➹❐➚➶➚ ✷✹✳
➘➚Ò➚ ➮ ➶Ð➴❒ß
➹ëàâà ✷✺
❐îêàëèçàöèÿ ♠♦❞✉❧❡ ▲♦❝❛❧❡✭❚✐♠❡▲♦❝❛❧❡✭✳✳✮✱ ❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡✮ ✇❤❡r❡ ❞❛t❛ ❚✐♠❡▲♦❝❛❧❡ ❂ ❚✐♠❡▲♦❝❛❧❡ ④ ✇❉❛②s ✿✿ ❬✭❙tr✐♥❣✱ ❙tr✐♥❣✮❪✱ ♠♦♥t❤s ✿✿ ❬✭❙tr✐♥❣✱ ❙tr✐♥❣✮❪✱ ❛♠P♠
✿✿ ✭❙tr✐♥❣✱ ❙tr✐♥❣✮✱
❞❛t❡❚✐♠❡❋♠t✱ ❞❛t❡❋♠t✱ t✐♠❡❋♠t✱ t✐♠❡✶✷❋♠t ✿✿ ❙tr✐♥❣ ⑥ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❙❤♦✇✮
✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
ïîëíûå è ñîêðàùåííûå íàçâàíèÿ äíåé íåäåëè ïîëíûå è ñîêðàùåííûå íàçâàíèÿ ìåñÿöåâ ñèìâîëû ❆▼✴P▼ ✭❛✳♠✳ ✲✲✲ äî ïîëóäíÿ✱ ♣✳♠✳ ✲✲✲ ïîñëå ïîëóäíÿ✮ ñòðîêè ôîðìàòèðîâàíèÿ
❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡ ✿✿ ❚✐♠❡▲♦❝❛❧❡
➪èáëèîòåêà
▲♦❝❛❧❡
íàöèîíàëüíûì
ïðåäîñòàâëÿåò
îñîáåííîñòÿì✳
➶
âîçìîæíîñòü
íàñòîÿùåå
âðåìÿ
àäàïòèðîâàòü îíà
èíôîðìàöèþ î äàòå è âðåìåíè✱ êîòîðàÿ èñïîëüçóåòñÿ ôóíêöèåé èç áèáëèîòåêè
❚✐♠❡✳
✷✽✸
ïðîãðàììó
ïîääåðæèâàåò
ê
òîëüêî
❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣
✷✽✹ ✷✺✳✶
➹❐➚➶➚ ✷✺✳
➪èáëèîòåêà
❐❰✃➚❐➮➬➚Ö➮ß
▲♦❝❛❧❡
♠♦❞✉❧❡ ▲♦❝❛❧❡✭❚✐♠❡▲♦❝❛❧❡✭✳✳✮✱ ❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡✮ ✇❤❡r❡ ❞❛t❛ ❚✐♠❡▲♦❝❛❧❡ ❂ ❚✐♠❡▲♦❝❛❧❡ ④ ✇❉❛②s ✿✿ ❬✭❙tr✐♥❣✱ ❙tr✐♥❣✮❪✱ ♠♦♥t❤s ✿✿ ❬✭❙tr✐♥❣✱ ❙tr✐♥❣✮❪✱ ❛♠P♠ ✿✿ ✭❙tr✐♥❣✱ ❙tr✐♥❣✮✱ ❞❛t❡❚✐♠❡❋♠t✱ ❞❛t❡❋♠t✱ t✐♠❡❋♠t✱ t✐♠❡✶✷❋♠t ✿✿ ❙tr✐♥❣ ⑥ ❞❡r✐✈✐♥❣ ✭❊q✱ ❖r❞✱ ❙❤♦✇✮
✲✲ ✲✲ ✲✲ ✲✲ ✲✲ ✲✲
ïîëíûå è ñîêðàùåííûå íàçâàíèÿ äíåé íåäåëè ïîëíûå è ñîêðàùåííûå íàçâàíèÿ ìåñÿöåâ ñèìâîëû ❆▼✴P▼ ✭❛✳♠✳ ✲✲✲ äî ïîëóäíÿ✱ ♣✳♠✳ ✲✲✲ ïîñëå ïîëóäíÿ✮ ñòðîêè ôîðìàòèðîâàíèÿ
❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡ ✿✿ ❚✐♠❡▲♦❝❛❧❡ ❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡ ❂ ❚✐♠❡▲♦❝❛❧❡ ④ ✇❉❛②s ❂ ❬✭✧❙✉♥❞❛②✧✱ ✧❙✉♥✧✮✱ ✭✧▼♦♥❞❛②✧✱ ✧▼♦♥✧✮✱ ✭✧❚✉❡s❞❛②✧✱ ✧❚✉❡✧✮✱ ✭✧❲❡❞♥❡s❞❛②✧✱ ✧❲❡❞✧✮✱ ✭✧❚❤✉rs❞❛②✧✱ ✧❚❤✉✧✮✱ ✭✧❋r✐❞❛②✧✱ ✧❋r✐✧✮✱ ✭✧❙❛t✉r❞❛②✧✱ ✧❙❛t✧✮❪✱ ♠♦♥t❤s ❂ ❬✭✧❏❛♥✉❛r②✧✱ ✭✧▼❛r❝❤✧✱ ✭✧▼❛②✧✱ ✭✧❏✉❧②✧✱ ✭✧❙❡♣t❡♠❜❡r✧✱ ✭✧◆♦✈❡♠❜❡r✧✱
✧❏❛♥✧✮✱ ✧▼❛r✧✮✱ ✧▼❛②✧✮✱ ✧❏✉❧✧✮✱ ✧❙❡♣✧✮✱ ✧◆♦✈✧✮✱
✭✧❋❡❜r✉❛r②✧✱ ✭✧❆♣r✐❧✧✱ ✭✧❏✉♥❡✧✱ ✭✧❆✉❣✉st✧✱ ✭✧❖❝t♦❜❡r✧✱ ✭✧❉❡❝❡♠❜❡r✧✱
❛♠P♠ ❂ ✭✧❆▼✧✱ ✧P▼✧✮✱ ❞❛t❡❚✐♠❡❋♠t ❂ ✧✪❛ ✪❜ ✪❡ ✪❍✿✪▼✿✪❙ ✪❩ ✪❨✧✱ ❞❛t❡❋♠t ❂ ✧✪♠✴✪❞✴✪②✧✱ t✐♠❡❋♠t ❂ ✧✪❍✿✪▼✿✪❙✧✱ t✐♠❡✶✷❋♠t ❂ ✧✪■✿✪▼✿✪❙ ✪♣✧ ⑥
✧❋❡❜✧✮✱ ✧❆♣r✧✮✱ ✧❏✉♥✧✮✱ ✧❆✉❣✧✮✱ ✧❖❝t✧✮✱ ✧❉❡❝✧✮❪✱
➹ëàâà ✷✻
➶ðåìÿ ❈P❯ ♠♦❞✉❧❡ ❈P❯❚✐♠❡ ✭ ❣❡t❈P❯❚✐♠❡✱ ❝♣✉❚✐♠❡Pr❡❝✐s✐♦♥ ✮ ✇❤❡r❡ ❣❡t❈P❯❚✐♠❡ ✿✿ ■❖ ■♥t❡❣❡r ❝♣✉❚✐♠❡Pr❡❝✐s✐♦♥ ✿✿ ■♥t❡❣❡r
Ôóíêöèÿ ❣❡t❈P❯❚✐♠❡ âîçâðàùàåò âðåìÿ ❈P❯ ✭öåíòðàëüíîãî ïðîöåññîðà✮ â ïèêîñåêóíäàõ ✭ïèêîñåêóíäà ✖ îäíà òðèëëèîííàÿ äîëÿ ñåêóíäû✮✱ èñïîëüçóåìîå äàííîé ïðîãðàììîé✳ Òî÷íîñòü ýòîãî ðåçóëüòàòà çàäàåòñÿ ñ ïîìîùüþ ❝♣✉❚✐♠❡Pr❡❝✐s✐♦♥✳ ❝♣✉❚✐♠❡Pr❡❝✐s✐♦♥ ✖ ýòî íàèìåíüøàÿ èçìåðèìàÿ ðàçíèöà âî âðåìåíè ❈P❯✱ êîòîðóþ ðåàëèçàöèÿ ìîæåò çàðåãèñòðèðîâàòü❀ îíà çàäàåòñÿ â âèäå öåëîãî ÷èñëà ïèêîñåêóíä✳
✷✽✺
✷✽✻
➹❐➚➶➚ ✷✻✳
➶Ð➴❒ß ❈P❯
➹ëàâà ✷✼
Ñëó÷àéíûå ÷èñëà ♠♦❞✉❧❡ ❘❛♥❞♦♠ ✭ ❘❛♥❞♦♠●❡♥✭♥❡①t✱ s♣❧✐t✱ ❣❡♥❘❛♥❣❡✮✱ ❙t❞●❡♥✱ ♠❦❙t❞●❡♥✱ ❘❛♥❞♦♠✭ r❛♥❞♦♠✱ r❛♥❞♦♠❘✱ r❛♥❞♦♠s✱ r❛♥❞♦♠❘s✱ r❛♥❞♦♠■❖✱ r❛♥❞♦♠❘■❖ ✮✱ ❣❡t❙t❞❘❛♥❞♦♠✱ ❣❡t❙t❞●❡♥✱ s❡t❙t❞●❡♥✱ ♥❡✇❙t❞●❡♥ ✮ ✇❤❡r❡ ✕✕✕✕✕✕✕✕ ✃ëàññ ❘❛♥❞♦♠●❡♥ ✕✕✕✕✕✕✕✕✕✕✕✕ ❝❧❛ss ❘❛♥❞♦♠●❡♥ ❣❡♥❘❛♥❣❡ ✿✿ ❣ ♥❡①t ✿✿ ❣ s♣❧✐t ✿✿ ❣
❣ ✇❤❡r❡ ✲❃ ✭■♥t✱ ■♥t✮ ✲❃ ✭■♥t✱ ❣✮ ✲❃ ✭❣✱ ❣✮
✕✕✕✕✕✕✕✕ Ñòàíäàðòíûé ýêçåìïëÿð êëàññà ❘❛♥❞♦♠●❡♥ ✕✕✕✕✕✲ ❞❛t❛ ❙t❞●❡♥ ❂ ✳✳✳ ✲✲ ➚áñòðàêòíûé ✐♥st❛♥❝❡ ❘❛♥❞♦♠●❡♥ ❙t❞●❡♥ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❘❡❛❞ ❙t❞●❡♥ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❙❤♦✇ ❙t❞●❡♥ ✇❤❡r❡ ✳✳✳ ♠❦❙t❞●❡♥ ✿✿ ■♥t ✲❃ ❙t❞●❡♥ ✕✕✕✕✕✕✕✕ ✃ëàññ ❘❛♥❞♦♠ ✕✕✕✕✕✕✕✕✕✕✕✕✕✲ ❝❧❛ss ❘❛♥❞♦♠ ❛ ✇❤❡r❡ r❛♥❞♦♠❘ ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ✭❛✱ ❛✮ ✲❃ ❣ ✲❃ ✭❛✱ ❣✮ r❛♥❞♦♠ ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ❣ ✲❃ ✭❛✱ ❣✮ r❛♥❞♦♠❘s ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ✭❛✱ ❛✮ ✲❃ ❣ ✲❃ ❬❛❪ r❛♥❞♦♠s ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ❣ ✲❃ ❬❛❪ r❛♥❞♦♠❘■❖ ✿✿ ✭❛✱❛✮ ✲❃ ■❖ ❛ r❛♥❞♦♠■❖ ✿✿ ■❖ ❛
✷✽✼
✷✽✽
➹❐➚➶➚ ✷✼✳
✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠
■♥t ■♥t❡❣❡r ❋❧♦❛t ❉♦✉❜❧❡ ❇♦♦❧ ❈❤❛r
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
Ñ❐Ó×➚➱❮Û➴ ×➮Ñ❐➚
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
✕✕✕✕✕✕✕✕ ➹ëîáàëüíûé ãåíåðàòîð ñëó÷àéíûõ ÷èñåë ✕✕✕✕✕✕✕✕ ♥❡✇❙t❞●❡♥ ✿✿ ■❖ ❙t❞●❡♥ s❡t❙t❞●❡♥ ✿✿ ❙t❞●❡♥ ✲❃ ■❖ ✭✮ ❣❡t❙t❞●❡♥ ✿✿ ■❖ ❙t❞●❡♥ ❣❡t❙t❞❘❛♥❞♦♠ ✿✿ ✭❙t❞●❡♥ ✲❃ ✭❛✱ ❙t❞●❡♥✮✮ ✲❃ ■❖ ❛
➪èáëèîòåêà
❘❛♥❞♦♠
èìååò äåëî ñî ñòàíäàðòíîé çàäà÷åé ãåíåðàöèè ïñåâäîñëó÷àéíûõ
÷èñåë✳ ➪èáëèîòåêà äåëàåò âîçìîæíûì ãåíåðàöèþ ïîâòîðíûõ ðåçóëüòàòîâ✱ ïîñðåäñòâîì ñòàðòà
ñ
óêàçàííîãî
ðàçëè÷íûõ
íà÷àëüíîãî
ðåçóëüòàòîâ
ïðè
ñëó÷àéíîãî
êàæäîì
÷èñëà
âûïîëíåíèè✱
ãåíåðàòîðà✱ ïîñðåäñòâîì
èëè
ïîëó÷åíèÿ
èñïîëüçîâàíèÿ
èíèöèàëèçèðóåìîãî ñèñòåìîé ãåíåðàòîðà èëè ïðåäîñòàâëåíèÿ ñëó÷àéíîãî çíà÷åíèÿ èç íåêîòîðîãî äðóãîãî èñòî÷íèêà✳
➪èáëèîòåêà äåëèòñÿ íà äâà óðîâíÿ✿
•
ßäðî
ãåíåðàòîðà ñëó÷àéíûõ ÷èñåë îáåñïå÷èâàåò ïîñòàâêó áèòîâ✳ ✃ëàññ ❘❛♥❞♦♠●❡♥
îáåñïå÷èâàåò îáùèé èíòåðôåéñ ê òàêèì ãåíåðàòîðàì✳
•
✃ëàññ
❘❛♥❞♦♠
ñëó÷àéíûõ
îáåñïå÷èâàåò ñïîñîá èçâëå÷ü êîíêðåòíûå çíà÷åíèÿ èç ãåíåðàòîðà
÷èñåë✳
❮àïðèìåð✱
ýêçåìïëÿð
ãåíåðèðîâàòü ñëó÷àéíûå çíà÷åíèÿ òèïà
✷✼✳✶
✃ëàññ
✃ëàññ
❘❛♥❞♦♠●❡♥
❘❛♥❞♦♠●❡♥
❋❧♦❛t
êëàññà
❋❧♦❛t✳
è ãåíåðàòîð
❘❛♥❞♦♠
ïîçâîëÿåò
❙t❞●❡♥
îáåñïå÷èâàåò îáùèé èíòåðôåéñ ê ãåíåðàòîðàì ñëó÷àéíûõ ÷èñåë✳
❝❧❛ss ❘❛♥❞♦♠●❡♥ ❣❡♥❘❛♥❣❡ ✿✿ ❣ ♥❡①t ✿✿ ❣ s♣❧✐t ✿✿ ❣
❣ ✇❤❡r❡ ✲❃ ✭■♥t✱■♥t✮ ✲❃ ✭■♥t✱ ❣✮ ✲❃ ✭❣✱ ❣✮
✲✲ ❒åòîä ïî óìîë÷àíèþ ❣❡♥❘❛♥❣❡ ❣ ❂ ✭♠✐♥❇♦✉♥❞✱♠❛①❇♦✉♥❞✮
•
❰ïåðàöèÿ
❣❡♥❘❛♥❣❡
Òðåáóåòñÿ✱ ÷òîáû✿
äàåò äèàïàçîí çíà÷åíèé✱ âîçâðàùåííûé ãåíåðàòîðîì✳
✷✼✳✶✳
✃❐➚ÑÑ
❘❆◆❉❖▼●❊◆
➮ ➹➴❮➴Ð➚Ò❰Ð
❙❚❉●❊◆
✷✽✾
✕ ➴ñëè (a, b) = ❣❡♥❘❛♥❣❡ g ✱ òî a < b✳ ✕ ❣❡♥❘❛♥❣❡ ⊥ = 6 ⊥✳ ➶òîðîå óñëîâèå ãàðàíòèðóåò✱ ÷òî
❣❡♥❘❛♥❣❡
íå ìîæåò ïðîâåðÿòü ñâîé àðãóìåíò✱
è ñëåäîâàòåëüíî çíà÷åíèå✱ êîòîðîå îí âîçâðàùàåò✱ ìîæíî îïðåäåëèòü òîëüêî ïîñðåäñòâîì ðåàëèçàöèè
ýêçåìïëÿðà âûïîëíÿòü
êëàññà îäèí
❘❛♥❞♦♠●❡♥✳ Ýòî✱ â ñâîþ î÷åðåäü✱ ❣❡♥❘❛♥❣❡✱ ÷òîáû óñòàíîâèòü
âûçîâ
ïîçâîëÿåò äèàïàçîí
♥❡①t✱ ♥❡①t✳
ãåíåðàòîðà✱ íå êàñàÿñü òîãî✱ ÷òî ãåíåðàòîð✱ âîçâðàùåííûé ✭ñêàæåì✮ áû èìåòü äèàïàçîí✱ îòëè÷íûé îò äèàïàçîíà ãåíåðàòîðà✱ ïåðåäàííîãî
•
❰ïåðàöèÿ
ìîã
♥❡①t âîçâðàùàåò ■♥t✱ êîòîðûé ðàâíîìåðíî ðàñïðåäåëåí â äèàïàçîíå✱ ❣❡♥❘❛♥❣❡ ✭âêëþ÷àÿ îáå êîíå÷íûå òî÷êè✮✱ è íîâûé ãåíåðàòîð✳
âîçâðàùåííîì
•
❰ïåðàöèÿ
s♣❧✐t
ïîçâîëÿåò ïîëó÷èòü äâà íåçàâèñèìûõ ãåíåðàòîðà ñëó÷àéíûõ
÷èñåë✳ Ýòî î÷åíü ïîëåçíî â ôóíêöèîíàëüíûõ ïðîãðàììàõ ✭íàïðèìåð✱ ïðè ïåðåäà÷å ãåíåðàòîðà ñëó÷àéíûõ ÷èñåë â ðåêóðñèâíûõ âûçîâàõ✮✱ íî î÷åíü ìàëî ðàáîòû áûëî ñäåëàíî íàä ñòàòèñòè÷åñêè íàäåæíûìè ðåàëèçàöèÿìè
s♣❧✐t
✭❬ ✶✱✹ ❪ ✖
åäèíñòâåííûå ïðèìåðû✱ î êîòîðûõ ìû çíàåì✮✳
❘❛♥❞♦♠ ❙t❞●❡♥✿
➪èáëèîòåêà äàííûõ
ïðåäîñòàâëÿåò îäèí ýêçåìïëÿð
❞❛t❛ ❙t❞●❡♥ ❂ ✳✳✳
❘❛♥❞♦♠●❡♥
✖ àáñòðàêòíûé òèï
✲✲ ➚áñòðàêòíûé
✐♥st❛♥❝❡ ❘❛♥❞♦♠●❡♥ ❙t❞●❡♥ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❘❡❛❞ ❙t❞●❡♥ ✇❤❡r❡ ✳✳✳ ✐♥st❛♥❝❡ ❙❤♦✇ ❙t❞●❡♥ ✇❤❡r❡ ✳✳✳ ♠❦❙t❞●❡♥ ✿✿ ■♥t ✲❃ ❙t❞●❡♥ Ýêçåìïëÿð Ðåçóëüòàò
❙t❣●❡♥
êëàññà
ïîâòîðíîãî
❘❛♥❞♦♠●❡♥
èìååò
èñïîëüçîâàíèÿ
❣❡♥❘❛♥❣❡
♥❡①t
äîëæåí
ïî êðàéíåé ìåðå ✸✵ áèòîâ✳ áûòü
ïî
êðàéíåé
ìåðå
òàêèì
æå ñòàòèñòè÷åñêè íàäåæíûì✱ êàê ✏❒èíèìàëüíûé ñòàíäàðòíûé ãåíåðàòîð ñëó÷àéíûõ ÷èñåë✑✱ îïèñàííûé ❬ ✷✱✸ ❪✳ ➘î òåõ ïîð✱ ïîêà íàì áîëüøå íè÷åãî íåèçâåñòíî î ðåàëèçàöèÿõ
s♣❧✐t✱ âñå✱ ÷åãî ìû òðåáóåì✱ ✖ ÷òîáû s♣❧✐t ïðîèçâîäèë ãåíåðàòîðû✱ êîòîðûå ÿâëÿþòñÿ✿ ✭❛✮ íå èäåíòè÷íûìè è ✭❜✮ íåçàâèñèìî íàäåæíûìè â òîëüêî ÷òî äàííîì ñìûñëå✳ Ýêçåìïëÿðû
❙❤♦✇✴❘❡❛❞
êëàññà
❙t❞●❡♥
îáåñïå÷èâàþò ïðèìèòèâíûé ñïîñîá ñîõðàíèòü
ñîñòîÿíèå ãåíåðàòîðà ñëó÷àéíûõ ÷èñåë✳ Òðåáóåòñÿ✱ ÷òîáû ✃ðîìå
òîãî✱
r❡❛❞
ìîæíî
✭íåîáÿçàòåëüíî ïîðîæäåííîé êëàññà
❙t❞●❡♥
èñïîëüçîâàòü
s❤♦✇✮
äëÿ
r❡❛❞ ✭s❤♦✇ ❣✮ ❂❂ ❣✳
îòîáðàæåíèÿ
íà çíà÷åíèå òèïà
❙t❞●❡♥✳
ïðîèçâîëüíîé
ñòðîêè
➶îîáùå✱ ýêçåìïëÿð
îáëàäàåò ñëåäóþùèìè ñâîéñòâàìè✿
•
❰í ãàðàíòèðóåò✱ ÷òî çàâåðøèòñÿ óñïåøíî äëÿ ëþáîé ñòðîêè✳
•
❰í ãàðàíòèðóåò✱ ÷òî ïîòðåáèò òîëüêî êîíå÷íóþ ÷àñòü ñòðîêè✳
r❡❛❞
✷✾✵
➹❐➚➶➚ ✷✼✳
•
Ñ❐Ó×➚➱❮Û➴ ×➮Ñ❐➚
Ðàçëè÷íûå ñòðîêè àðãóìåíòà✱ âåðîÿòíî✱ ïðèâåäóò ê ðàçëè÷íûì ðåçóëüòàòàì✳
Ôóíêöèÿ
♠❦❙t❞●❡♥
îáåñïå÷èâàåò
àëüòåðíàòèâíûé
ãåíåðàòîðà✱ ïîñðåäñòâîì îòîáðàæåíèÿ
■♥t
ñïîñîá
ñîçäàíèÿ
íà÷àëüíîãî
â ãåíåðàòîð✳ ❰ïÿòü✱ ðàçëè÷íûå àðãóìåíòû✱
âåðîÿòíî✱ äîëæíû ïîðîäèòü ðàçëè÷íûå ãåíåðàòîðû✳ Ïðîãðàììèñòû ìîãóò✱ êîíå÷íî✱ ïîñòàâëÿòü ñâîè ñîáñòâåííûå ýêçåìïëÿðû êëàññà
❘❛♥❞♦♠●❡♥✳
Ïðåäóïðåæäåíèå î ðåàëèçàöèÿõ✳
➶íåøíå ïðèâëåêàòåëüíàÿ ðåàëèçàöèÿ
s♣❧✐t
âûãëÿäèò
òàê✿
✐♥st❛♥❝❡ ❘❛♥❞♦♠●❡♥ ▼②●❡♥ ✇❤❡r❡ ✳✳✳ s♣❧✐t ❣ ❂ ✭❣✱ ✈❛r✐❛♥t❖❢ ❣✮ ➬äåñü
s♣❧✐t
âîçâðàùàåò ñàì
❣
è íîâûé ãåíåðàòîð✱ ïîëó÷åííûé èç
❣✳
❮î òåïåðü
ðàññìîòðèì ýòè äâà ïðåäïîëîæèòåëüíî íåçàâèñèìûõ ãåíåðàòîðà✿
❣✶ ❂ s♥❞ ✭s♣❧✐t ❣✮ ❣✷ ❂ s♥❞ ✭s♣❧✐t ✭❢st ✭s♣❧✐t ❣✮✮✮ ➴ñëè
s♣❧✐t
èñêðåííå ïîñòàâëÿåò íåçàâèñèìûå ãåíåðàòîðû ✭êàê óêàçàíî✮✱ òî
äîëæíû áûòü íåçàâèñèìû✱ íî íà ñàìîì äåëå îíè îáà ðàâíû
✈❛r✐❛♥t❖❢ ❣✳
❣✶
è
❣✷
Ðåàëèçàöèè
âûøåóïîìÿíóòîãî âèäà íå îòâå÷àþò òðåáîâàíèÿì ñïåöèôèêàöèè✳
✷✼✳✷
✃ëàññ
❘❛♥❞♦♠
➮ìåÿ â ñîáñòâåííîì ðàñïîðÿæåíèè èñòî÷íèê ïîñòàâêè ñëó÷àéíûõ ÷èñåë✱ êëàññ ïîçâîëÿåò ïðîãðàììèñòó èçâëåêàòü ñëó÷àéíûå çíà÷åíèÿ ðàçíîîáðàçíûõ òèïîâ✿
❘❛♥❞♦♠
✷✼✳✷✳
✃❐➚ÑÑ
❘❆◆❉❖▼
✷✾✶
❝❧❛ss ❘❛♥❞♦♠ ❛ ✇❤❡r❡ r❛♥❞♦♠❘ ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ✭❛✱ ❛✮ ✲❃ ❣ ✲❃ ✭❛✱ ❣✮ r❛♥❞♦♠ ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ❣ ✲❃ ✭❛✱ ❣✮ r❛♥❞♦♠❘s ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ✭❛✱ ❛✮ ✲❃ ❣ ✲❃ ❬❛❪ r❛♥❞♦♠s ✿✿ ❘❛♥❞♦♠●❡♥ ❣ ❂❃ ❣ ✲❃ ❬❛❪ r❛♥❞♦♠❘■❖ ✿✿ ✭❛✱❛✮ ✲❃ ■❖ ❛ r❛♥❞♦♠■❖ ✿✿ ■❖ ❛ ✲✲ ❒åòîäû ïî óìîë÷àíèþ r❛♥❞♦♠s ❣ ❂ ① ✿ r❛♥❞♦♠s ❣✬ ✇❤❡r❡ ✭①✱❣✬✮ ❂ r❛♥❞♦♠ ❣ r❛♥❞♦♠❘s ❂ ✳✳✳àíàëîãè÷íî✳✳✳ r❛♥❞♦♠■❖ ❂ ❣❡t❙t❞❘❛♥❞♦♠ r❛♥❞♦♠ r❛♥❞♦♠❘■❖ r❛♥❣❡ ❂ ❣❡t❙t❞❘❛♥❞♦♠ ✭r❛♥❞♦♠❘ r❛♥❣❡✮ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡ ✐♥st❛♥❝❡
❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠ ❘❛♥❞♦♠
■♥t ■♥t❡❣❡r ❋❧♦❛t ❉♦✉❜❧❡ ❇♦♦❧ ❈❤❛r
✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡ ✇❤❡r❡
✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳ ✳✳✳
• r❛♥❞♦♠❘ ïðèíèìàåò â êà÷åñòâå àðãóìåíòîâ äèàïàçîí (lo, hi ) è ãåíåðàòîð ñëó÷àéíûõ ÷èñåë g è âîçâðàùàåò ñëó÷àéíîå çíà÷åíèå✱ ðàâíîìåðíî ðàñïðåäåëåííîå â çàêðûòîì èíòåðâàëå [lo, hi ] âìåñòå ñ íîâûì ãåíåðàòîðîì✳ ➴ñëè lo > hi ✱ òî ïîâåäåíèå ôóíêöèè â ýòîì ñëó÷àå íå îïðåäåëåíî✳ ➘ëÿ íåïðåðûâíûõ òèïîâ íåò òðåáîâàíèÿ✱ ÷òîáû çíà÷åíèÿ
lo
è
hi
áûëè êîãäà✲ëèáî âîñïðîèçâåäåíû â êà÷åñòâå ñëó÷àéíûõ çíà÷åíèé✱
íî îíè ìîãóò áûòü èñïîëüçîâàíû â ýòîì êà÷åñòâå✱ ýòî çàâèñèò îò ðåàëèçàöèè è èíòåðâàëà✳
• r❛♥❞♦♠
✕
âûïîëíÿåò òî æå ñàìîå✱ ÷òî è
r❛♥❞♦♠❘✱
íî íå èñïîëüçóåò äèàïàçîí✳
➘ëÿ îãðàíè÷åííûõ òèïîâ ✭ýêçåìïëÿðîâ êëàññà
❇♦✉♥❞❡❞✱
íàïðèìåð✱
❈❤❛r✮✱
äèàïàçîí îáû÷íî ÿâëÿåòñÿ öåëûì òèïîì✳
✕
➘ëÿ äðîáíûõ òèïîâ äèàïàçîí îáû÷íî ÿâëÿåòñÿ ïîëóçàêðûòûì èíòåðâàëîì
[0 , 1 )✳
✕ •
➘ëÿ
■♥t❡❣❡r
äèàïàçîí ÿâëÿåòñÿ ✭ïðîèçâîëüíî✮ äèàïàçîí
❒íîæåñòâåííûå âåðñèè✱
r❛♥❞♦♠❘s
è
r❛♥❞♦♠s✱
■♥t✳
ïîðîæäàþò áåñêîíå÷íûé ñïèñîê
ñëó÷àéíûõ çíà÷åíèé è íå âîçâðàùàþò íîâûé ãåíåðàòîð✳
•
➶åðñèè
■❖✱ r❛♥❞♦♠❘■❖
è
÷èñåë ✭ñì✳ ðàçäåë ✷✼✳✸✮✳
r❛♥❞♦♠■❖✱
èñïîëüçóþò ãëîáàëüíûé ãåíåðàòîð ñëó÷àéíûõ
✷✾✷
➹❐➚➶➚ ✷✼✳
✷✼✳✸
Ñ❐Ó×➚➱❮Û➴ ×➮Ñ❐➚
➹ëîáàëüíûé ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
➴ñòü åäèíñòâåííûé✱ íåÿâíûé✱ ãëîáàëüíûé ãåíåðàòîð ñëó÷àéíûõ ÷èñåë òèïà
❙t❞●❡♥✱ ■❖✳
êîòîðûé õðàíèòñÿ â íåêîòîðîé ãëîáàëüíîé ïåðåìåííîé✱ ïîääåðæèâàåìîé ìîíàäîé
❰í èíèöèàëèçèðóåòñÿ àâòîìàòè÷åñêè íåêîòîðûì çàâèñÿùèì îò ñèñòåìû ñïîñîáîì✱ íàïðèìåð✱ ïîñðåäñòâîì èñïîëüçîâàíèÿ âðåìåíè äíÿ èëè ãåíåðàòîðà ñëó÷àéíûõ ÷èñåë â ÿäðå ▲✐♥✉①✳ ➘ëÿ òîãî ÷òîáû ïîëó÷èòü äåòåðìèíèðîâàííîå ïîâåäåíèå✱ èñïîëüçóéòå
s❡t❙t❞●❡♥✳ s❡t❙t❞●❡♥ ❣❡t❙t❞●❡♥ ♥❡✇❙t❞●❡♥ ❣❡t❙t❞❘❛♥❞♦♠
• ❣❡t❙t❞●❡♥
è
✿✿ ✿✿ ✿✿ ✿✿
❙t❞●❡♥ ✲❃ ■❖ ✭✮ ■❖ ❙t❞●❡♥ ■❖ ❙t❞●❡♥ ✭❙t❞●❡♥ ✲❃ ✭❛✱ ❙t❞●❡♥✮✮ ✲❃ ■❖ ❛
s❡t❙t❞●❡♥
ñîîòâåòñòâåííî âîçâðàùàþò è óñòàíàâëèâàþò ãëîáàëüíûé
ãåíåðàòîð ñëó÷àéíûõ ÷èñåë✳
• ♥❡✇❙t❞●❡♥
ïðèìåíÿåò
s♣❧✐t
ïî îòíîøåíèþ ê òåêóùåìó ãëîáàëüíîìó ãåíåðàòîðó
ñëó÷àéíûõ ÷èñåë✱ îáíîâëÿåò åãî îäíèì èç ðåçóëüòàòîâ è âîçâðàùàåò äðóãîé✳
• ❣❡t❙t❞❘❛♥❞♦♠
èñïîëüçóåò óêàçàííóþ ôóíêöèþ✱ ÷òîáû ïîëó÷èòü çíà÷åíèå èç
òåêóùåãî ãëîáàëüíîãî ãåíåðàòîðà ñëó÷àéíûõ ÷èñåë✱ è îáíîâëÿåò ãëîáàëüíûé ãåíåðàòîð ñ ïîìîùüþ íîâîãî ãåíåðàòîðà✱ âîçâðàùåííîãî ôóíêöèåé✳ ❮àïðèìåð✱
r♦❧❧❉✐❝❡ âîçâðàùàåò ñëó÷àéíîå öåëîå ÷èñëî ìåæäó r♦❧❧❉✐❝❡ ✿✿ ■❖ ■♥t r♦❧❧❉✐❝❡ ❂ ❣❡t❙t❞❘❛♥❞♦♠ ✭r❛♥❞♦♠❘ ✭✶✱✻✮✮
✶ è ✻✿
Ññûëêè ❬✶❪
❋❲ ❇✉rt♦♥ ❛♥❞ ❘▲ P❛❣❡✱ ✏❉✐str✐❜✉t❡❞ r❛♥❞♦♠ ♥✉♠❜❡r ❣❡♥❡r❛t✐♦♥✑✱ ❏♦✉r♥❛❧ ♦❢ ❋✉♥❝✲ t✐♦♥❛❧ Pr♦❣r❛♠♠✐♥❣✱ ✷✭✷✮✿✷✵✸✲✷✶✷✱ ❆♣r✐❧ ✶✾✾✷✳ Ô✳Ó✳
➪åðòîí
è
Ð✳❐✳
Ïåéäæ✱
✏➹åíåðàöèÿ
ðàñïðåäåëåííûõ
ñëó÷àéíûõ
÷èñåë✑✱
➷óðíàë ✏Ôóíêöèîíàëüíîå ïðîãðàììèðîâàíèå✑✱ ✷ ✭✷✮✿✷✵✸✲✷✶✷✱ àïðåëü ✶✾✾✷✳
❬✷❪
❙❑ P❛r❦✱ ❛♥❞ ❑❲ ▼✐❧❧❡r✱ ✏❘❛♥❞♦♠ ♥✉♠❜❡r ❣❡♥❡r❛t♦rs ✲ ❣♦♦❞ ♦♥❡s ❛r❡ ❤❛r❞ t♦ ❢✐♥❞✑✱ ❈♦♠♠ ❆❈▼ ✸✶✭✶✵✮✱ ❖❝t ✶✾✽✽✱ ♣♣✶✶✾✷✲✶✷✵✶✳ Ñ✳✃✳
Ïàðê
è
✃✳Ó✳
❒èëëåð✱
✏➹åíåðàòîðû
ñëó÷àéíûõ
÷èñåë
✖
òðóäíî
íàéòè
õîðîøèå✑✱ ❈♦♠♠ ❆❈▼ ✸✶ ✭✶✵✮✱ îêòÿáðü ✶✾✽✽✱ ñòð✳✶✶✾✷✲✶✷✵✶✳
❬✸❪
❉● ❈❛rt❛✱ ✏❚✇♦ ❢❛st ✐♠♣❧❡♠❡♥t❛t✐♦♥s ♦❢ t❤❡ ♠✐♥✐♠❛❧ st❛♥❞❛r❞ r❛♥❞♦♠ ♥✉♠❜❡r ❣❡♥❡r✲ ❛t♦r✑✱ ❈♦♠♠ ❆❈▼✱ ✸✸✭✶✮✱ ❏❛♥ ✶✾✾✵✱ ♣♣✽✼✲✽✽✳ ➘✳➹✳ ✃àðòà✱ ✏➘âå áûñòðûå ðåàëèçàöèè ìèíèìàëüíîãî ñòàíäàðòíîãî ãåíåðàòîðà ñëó÷àéíûõ ÷èñåë✑✱ ❈♦♠♠ ❆❈▼✱ ✸✸ ✭✶✮✱ ÿíâàðü ✶✾✾✵✱ ñòð✳✽✼✲✽✽✳
✷✼✳✸✳
❬✹❪
➹❐❰➪➚❐Ü❮Û➱ ➹➴❮➴Ð➚Ò❰Ð Ñ❐Ó×➚➱❮ÛÕ ×➮Ñ➴❐
✷✾✸
P ❍❡❧❧❡❦❛❧❡❦✱ ✏❉♦♥✬t tr✉st ♣❛r❛❧❧❡❧ ▼♦♥t❡ ❈❛r❧♦✑✱ ❆❈▼ ❙■●❙■▼ ❙✐♠✉❧❛t✐♦♥ ❉✐❣❡st ✷✽✭✶✮✱ ♣♣✽✷✲✽✾✱ ❏✉❧② ✶✾✾✽✳ Ï✳ Õåëëåêàëåê✱ ✏❮å äîâåðÿéòå ïàðàëëåëüíîìó ìåòîäó ❒îíòå✲✃àðëî ✑✱ ❆❈▼ ❙■●❙■▼ ❙✐♠✉❧❛t✐♦♥ ❉✐❣❡st ✷✽ ✭✶✮✱ ñòð✳✽✷✲✽✾✱ èþëü ✶✾✾✽✳
❲❡❜✲❝àéò
❤tt♣✿✴✴r❛♥❞♦♠✳♠❛t✳s❜❣✳❛❝✳❛t✴ ÿâëÿåòñÿ áîëüøèì èñòî÷íèêîì èíôîðìàöèè✳
✷✾✹
➹❐➚➶➚ ✷✼✳
Ñ❐Ó×➚➱❮Û➴ ×➮Ñ❐➚
❐èòåðàòóðà ❬✶❪ ❏✳ ❇❛❝❦✉s✳ ❈❛♥ ♣r♦❣r❛♠♠✐♥❣ ❜❡ ❧✐❜❡r❛t❡❞ ❢r♦♠ t❤❡ ✈♦♥ ◆❡✉♠❛♥♥ st②❧❡❄ ❆ ❢✉♥❝t✐♦♥❛❧ st②❧❡ ❛♥❞ ✐ts ❛❧❣❡❜r❛ ♦❢ ♣r♦❣r❛♠s✳ ❈❆❈▼✱ ✷✶✭✽✮✿✻✶✸✕✻✹✶✱ ❆✉❣✉st ✶✾✼✽✳ ➘æ✳ ➪ýêóñ✳ ❒îæåò ëè ïðîãðàììèðîâàíèå áûòü îñâîáîæäåíî îò ñòèëÿ ôîí ❮åéìàíà❄ Ôóíêöèîíàëüíûé ñòèëü è åãî àëãåáðà ïðîãðàìì✳ ❈❆❈▼✱ ✷✶✭✽✮✿✻✶✸✕✻✹✶✱ àâãóñò ✶✾✼✽✳ ❬✷❪ ❍✳❇✳ ❈✉rr② ❛♥❞ ❘✳ ❋❡②s✳ ✶✾✺✽✳
❈♦♠❜✐♥❛t♦r② ▲♦❣✐❝✳
◆♦rt❤✲❍♦❧❧❛♥❞ P✉❜✳ ❈♦✳✱ ❆♠st❡r❞❛♠✱
Õ✳➪✳ ✃àððè è Ð✳ Ôåéñ✳ ✃îìáèíàòîðíàÿ ëîãèêà✳ ◆♦rt❤✲❍♦❧❧❛♥❞ P✉❜✳ ❈♦✳✱ ➚ìñòåðäàì✱ ✶✾✺✽✳ ❬✸❪ ▲✳ ❉❛♠❛s ❛♥❞ ❘✳ ▼✐❧♥❡r✳ Pr✐♥❝✐♣❛❧ t②♣❡ s❝❤❡♠❡s ❢♦r ❢✉♥❝t✐♦♥❛❧ ♣r♦❣r❛♠s✳ ■♥ Pr♦✲ ❝❡❡❞✐♥❣s ♦❢ t❤❡ ✾t❤ ❆❈▼ ❙②♠♣♦s✐✉♠ ♦♥ Pr✐♥❝✐♣❧❡s ♦❢ Pr♦❣r❛♠♠✐♥❣ ▲❛♥❣✉❛❣❡s✱ ♣❛❣❡s ✷✵✼✕✷✶✷✱ ❆❧❜✉q✉❡rq✉❡✱ ◆✳▼✳✱ ❏❛♥✉❛r② ✶✾✽✷✳ ❐✳ ➘àìàñ è Ð✳ ❒èëíåð✳ ❰ñíîâíûå ñõåìû òèïîâ äëÿ ôóíêöèîíàëüíûõ ïðîãðàìì✳ ➶ òðóäàõ ✾✲ãî ñèìïîçèóìà ❆❈▼ ïî ïðèíöèïàì ÿçûêîâ ïðîãðàììèðîâàíèÿ✱ ñòð✳ ✷✵✼✕✷✶✷✱ ➚ëüáóêåðê✱ ◆✳▼✳✱ ÿíâàðü ✶✾✽✷✳ ❬✹❪ ❑✲❋✳ ❋❛①✁❡♥ ❆ st❛t✐❝ s❡♠❛♥t✐❝s ❢♦r ❍❛s❦❡❧❧ ✃✲Ô✳ Ôàêñåí✳
❏♦✉r♥❛❧ ♦❢ ❋✉♥❝t✐♦♥❛❧ Pr♦❣r❛♠♠✐♥❣✱
Ñòàòè÷åñêàÿ ñåìàíòèêà äëÿ ❍❛s❦❡❧❧✳ ✷✵✵✷✳
✷✵✵✷✳
➷óðíàë ✏Ôóíêöèîíàëüíîå
ïðîãðàììèðîâàíèå✑ ✱
❬✺❪ ❏✳❘✳ ❍✐♥❞❧❡②✳ ❚❤❡ ♣r✐♥❝✐♣❛❧ t②♣❡ s❝❤❡♠❡ ♦❢ ❛♥ ♦❜❥❡❝t ✐♥ ❝♦♠❜✐♥❛t♦r② ❧♦❣✐❝✳ ❚r❛♥s❛❝t✐♦♥s ♦❢ t❤❡ ❆♠❡r✐❝❛♥ ▼❛t❤❡♠❛t✐❝❛❧ ❙♦❝✐❡t②✱ ✶✹✻✿✷✾✕✻✵✱ ❉❡❝❡♠❜❡r ✶✾✻✾✳ ➘æ✳Ð✳ Õèíäëè✳
❰ñíîâíûå ñõåìû òèïîâ îáúåêòîâ â êîìáèíàòîðíîé ëîãèêå✳ ✶✹✻✿✷✾✕✻✵✱ äåêàáðü ✶✾✻✾✳
Ïåðåãîâîðû ➚ìåðèêàíñêîãî ìàòåìàòè÷åñêîãî îáùåñòâà✱
❬✻❪ P✳ ❍✉❞❛❦✱ ❏✳ ❋❛s❡❧✱ ❛♥❞ ❏✳ P❡t❡rs♦♥✳ ❆ ❣❡♥t❧❡ ✐♥tr♦❞✉❝t✐♦♥ t♦ ❍❛s❦❡❧❧✳ ❚❡❝❤♥✐❝❛❧ ❘❡♣♦rt ❨❆▲❊❯✴❉❈❙✴❘❘✲✾✵✶✱ ❨❛❧❡ ❯♥✐✈❡rs✐t②✱ ▼❛② ✶✾✾✻✳ Ï✳ Õóäàê✱ ➘æ✳ Ôàñåë è ➘æ✳ Ïåòåðñîí✳ ✃ðàòêèé ââîäíûé êóðñ â ❍❛s❦❡❧❧✳ Òåõíè÷åñêîå îïèñàíèå ❨❆▲❊❯✴❉❈❙✴❘❘✲✾✵✶✱ ➱åëüñêèé óíèâåðñèòåò✱ ìàé ✶✾✾✻✳ ❬✼❪ ▼❛r❦ P✳ ❏♦♥❡s✳ ❆ s②st❡♠ ♦❢ ❝♦♥str✉❝t♦r ❝❧❛ss❡s✿ ♦✈❡r❧♦❛❞✐♥❣ ❛♥❞ ✐♠♣❧✐❝✐t ❤✐❣❤❡r✲♦r❞❡r ♣♦❧②♠♦r♣❤✐s♠✳ ❏♦✉r♥❛❧ ♦❢ ❋✉♥❝t✐♦♥❛❧ Pr♦❣r❛♠♠✐♥❣✱ ✺✭✶✮✱ ❏❛♥✉❛r② ✶✾✾✺✳ ✷✾✺
❐➮Ò➴Ð➚ÒÓÐ➚
✷✾✻
❒àðê Ï✳ ➘æîíñ✳ Ñèñòåìà êëàññîâ êîíñòðóêòîðîâ✿ ïåðåãðóçêà è íåÿâíûé ïîëèìîðôèçì âûñîêîãî ïîðÿäêà✳ ➷óðíàë ✏Ôóíêöèîíàëüíîå ïðîãðàììèðîâàíèå✑ ✱ ✺✭✶✮✱ ÿíâàðü ✶✾✾✺✳ ❬✽❪ ▼❛r❦ P✳ ❏♦♥❡s✳ ❚②♣✐♥❣ ❍❛s❦❡❧❧ ✐♥ ❍❛s❦❡❧❧✳
❍❛s❦❡❧❧ ❲♦r❦s❤♦♣✱
❒àðê Ï✳ ➘æîíñ✳ Òèïèçàöèÿ ❍❛s❦❡❧❧ â ❍❛s❦❡❧❧✳ ✶✾✾✾✳
P❛r✐s✱ ❖❝t♦❜❡r ✶✾✾✾✳
Ñåìèíàð ïî ❍❛s❦❡❧❧✱
Ïàðèæ✱ îêòÿáðü
❬✾❪ P✳ P❡♥❢✐❡❧❞✱ ❏r✳ Pr✐♥❝✐♣❛❧ ✈❛❧✉❡s ❛♥❞ ❜r❛♥❝❤ ❝✉ts ✐♥ ❝♦♠♣❧❡① ❆P▲✳ ■♥ ❢❡r❡♥❝❡ Pr♦❝❡❡❞✐♥❣s✱ ♣❛❣❡s ✷✹✽✕✷✺✻✱ ❙❛♥ ❋r❛♥❝✐s❝♦✱ ❙❡♣t❡♠❜❡r ✶✾✽✶✳
❆P▲ ✬✽✶ ❈♦♥✲
Ï✳ Ïåíôèëä✱ ìëàäøèé✳ ➹ëàâíûå çíà÷åíèÿ è âåòâè â ñëîæíîì ❆P▲✳ ➶ êîíôåðåíöèè ïî ❆P▲ ✬✽✶✱ ñòð✳ ✷✹✽✕✷✺✻✱ Ñàí✲Ôðàíöèñêî✱ ñåíòÿáðü ✶✾✽✶✳ ❬✶✵❪ ❙✳▲✳ P❡②t♦♥ ❏♦♥❡s✳ ❚❤❡ ■♠♣❧❡♠❡♥t❛t✐♦♥ ♦❢ ❋✉♥❝t✐♦♥❛❧ Pr♦❣r❛♠♠✐♥❣ Pr❡♥t✐❝❡✲❍❛❧❧ ■♥t❡r♥❛t✐♦♥❛❧✱ ❊♥❣❧❡✇♦♦❞ ❈❧✐❢❢s✱ ◆❡✇ ❏❡rs❡②✱ ✶✾✽✼
òðóäàõ
▲❛♥❣✉❛❣❡s✳
Ñ✳❐✳ Ïåéòîí ➘æîíñ✳ Ðåàëèçàöèÿ ÿçûêîâ ôóíêöèîíàëüíîãî ïðîãðàììèðîâàíèÿ✳ Pr❡♥t✐❝❡✲❍❛❧❧ ■♥t❡r♥❛t✐♦♥❛❧✱ ❊♥❣❧❡✇♦♦❞ ❈❧✐❢❢s✱ ❮üþ✲➘æåðñè✱ ✶✾✽✼✳ ❬✶✶❪ ❯♥✐❝♦❞❡ ❈♦♥s♦rt✐✉♠✳ ▼❆✱ ✷✵✵✵✳
❚❤❡ ❯♥✐❝♦❞❡ ❙t❛♥❞❛r❞✱ ❱❡rs✐♦♥ ✸✳✵✳
✃îíñîðöèóì ❯♥✐❝♦❞❡✳ ▼❆✱ ✷✵✵✵✳
Ñòàíäàðò ❯♥✐❝♦❞❡✱ âåðñèÿ ✸✳✵✳
❬✶✷❪ P✳ ❲❛❞❧❡r ❛♥❞ ❙✳ ❇❧♦tt✳ ❍♦✇ t♦ ♠❛❦❡ ❛❞
❤♦❝
❆❞❞✐s♦♥ ❲❡s❧❡②✱ ❘❡❛❞✐♥❣✱ ❆❞❞✐s♦♥ ❲❡s❧❡②✱ ❘❡❛❞✐♥❣✱
♣♦❧②♠♦r♣❤✐s♠ ❧❡ss ❛❞
❤♦❝✳
■♥ Pr♦❝❡❡❞✐♥❣s ♣❛❣❡s ✻✵✕✼✻✱
♦❢ t❤❡ ✶✻t❤ ❆❈▼ ❙②♠♣♦s✐✉♠ ♦♥ Pr✐♥❝✐♣❧❡s ♦❢ Pr♦❣r❛♠♠✐♥❣ ▲❛♥❣✉❛❣❡s✱
❆✉st✐♥✱ ❚❡①❛s✱ ❏❛♥✉❛r② ✶✾✽✾✳
Ï✳ Óîäëåð è Ñ✳ ➪ëîòò✳ ✃àê ñäåëàòü ñïåöèàëüíûé ïîëèìîðôèçì ìåíåå ñïåöèàëüíûì✳ ➶ òðóäàõ ✶✻✲ãî ñèìïîçèóìà ❆❈▼ ïî ïðèíöèïàì ÿçûêîâ ïðîãðàììèðîâàíèÿ✱ ñòð✳ ✻✵✕✼✻✱ ❆✉st✐♥✱ Òåõàñ✱ ÿíâàðü ✶✾✽✾✳
■♥❞❡① Ýëåìåíòû ïðåäìåòíîãî óêàçàòåëÿ✱ êîòîðûå îòíîñÿòñÿ ê íåòåðìèíàëàì â ñèíòàêñèñå ❍❛s❦❡❧❧✱ èçîáðàæåíû â êóðñèâíîì øðèôòå✳ Ñóùíîñòè êîäà èçîáðàæåíû â øðèôòå ïèøóùåé ìàøèíêè✳ ❰áû÷íûå ýëåìåíòû ïðåäìåòíîãî óêàçàòåëÿ èçîáðàæåíû â ïðÿìîì øðèôòå✳
❭❛✱ ✶✼ ❭❜✱ ✶✼ ❭❢✱ ✶✼ ❭♥✱ ✶✼ ❭r✱ ✶✼ ❭t✱ ✶✼ ❭✈✱ ✶✼ ⊥✱ ✷✺✱ ✷✼✹ ❫✱ ✼✾✱ ✶✷✶✱ ✶✷✷✱ ✶✸✹✱ ✶✸✾ ❫❫✱ ✼✾✱ ✶✷✶✱ ✶✷✷✱ ✶✸✹✱ ✶✸✾ ❴✱ ñì✳ ✇✐❧❞❝❛r❞ ♣❛tt❡r♥ ⑤⑤✱ ✼✾✱ ✶✵✼✱ ✶✸✹✱ ✶✹✵ ⑦✱ ñì✳ ✐rr❡❢✉t❛❜❧❡ ♣❛tt❡r♥
✦✱ ✻✺✱ ✷✷✶✱ ✷✷✷✱ ✷✷✹✱ ✷✷✺ ✦✦✱ ✼✾✱ ✶✹✺✱ ✶✹✻ ✩✱ ✼✾✱ ✶✶✵✱ ✶✸✹✱ ✶✹✵ ✩✦✱ ✶✶✵✱ ✶✸✹✱ ✶✹✵ ✪✱ ✶✾✾✱ ✷✵✶ ✫✫✱ ✼✾✱ ✶✵✼✱ ✶✸✹✱ ✶✹✵ ✭✱✮✱ ✶✵✾ ✭➼✮✱ ✶✵✾ ✭✮✱ ñì✳ tr✐✈✐❛❧ t②♣❡ ❛♥❞ ✉♥✐t ❡①♣r❡ss✐♦♥ ✯✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✺ ✯✯✱ ✼✾✱ ✶✷✶✱ ✶✸✹✱ ✶✸✻ ✰✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✺✱ s❡❡ ❛❧s♦ n ✰k ♣❛t✲ t❡r♥ ✰✰✱ ✼✾✱ ✶✹✺ ✲✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✺✱ s❡❡ ❛❧s♦ ♥❡❣❛t✐♦♥ ✳✱ ✼✾✱ ✶✵✾✱ ✶✸✹✱ ✶✹✵ ✴✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✻ ✴✴✱ ✷✷✶✱ ✷✷✸✕✷✷✺ ✴❂✱ ✼✾✱ ✶✶✶✱ ✶✸✹✱ ✶✽✽ ✿✱ ✼✾✱ ✶✵✽ ✿✰✱ ✷✵✸✱ ✷✵✹ ✿✿✱ ✹✸ ❁✱ ✼✾✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ❁❂✱ ✼✾✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ❂➽✱ ✶✶✽✱ ✶✸✹✱ ✶✸✾ ❂❂✱ ✼✾✱ ✶✶✶✱ ✶✸✹✱ ✶✽✽ ❃✱ ✼✾✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ❃❂✱ ✼✾✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ➾✱ ✼✾✱ ✶✶✼✱ ✶✷✼✱ ✶✸✹✱ ✶✸✾ ➾❂✱ ✼✾✱ ✶✶✼✱ ✶✷✼✱ ✶✸✹✱ ✶✸✾ ❅✱ ñì✳ ❛s✲♣❛tt❡r♥ ❬❪ ✭♥✐❧✮✱ ✶✵✽ ➮ñïîëüçîâàíèå êâàíòîðîâ✱ ✻✵ ❭✱ ñì✳ ❧❛♠❜❞❛ ❛❜str❛❝t✐♦♥ ❭✫✱ ✶✼ ❭❭✱ ✷✷✼✱ ✷✷✽✱ ✷✸✵✱ ✷✸✹✱ ✷✸✺
❛❜❜r❡✈✐❛t❡❞ ♠♦❞✉❧❡✱ ✾✸ ❛❜s✱ ✶✷✶✱ ✶✷✷✱ ✶✸✺ ❆❜s♦❧✉t❡❙❡❡❦✱ ✷✻✹ ❛❜str❛❝t ❞❛t❛t②♣❡✱ ✻✹✱ ✶✵✻ ❛❝❝✉♠✱ ✷✷✶✱ ✷✷✹✱ ✷✷✺ ❛❝❝✉♠❆rr❛②✱ ✷✷✶✱ ✷✷✸✱ ✷✷✺ ❛❝♦s✱ ✶✷✶✱ ✶✸✻ ❛❝♦s❤✱ ✶✷✶✱ ✶✸✻ ❛❞❞❚♦❈❧♦❝❦❚✐♠❡✱ ✷✼✻✱ ✷✼✾ ❛❡①♣✱ ✷✷✱ ✸✵✱ ✸✷✕✸✺✱ ✶✽✵ ❛❧❣❡❜r❛✐❝ ❞❛t❛t②♣❡✱ ✻✷✱ ✾✹✱ ✶✽✼ ❛❧❧✱ ✶✹✾ ❛❧t✱ ✸✼✱ ✶✽✶ ❛❧ts✱ ✸✼✱ ✶✽✶ ❛♠❜✐❣✉♦✉s t②♣❡✱ ✼✹✱ ✽✻ ❛♥❞✱ ✶✹✾ ❆◆❨✱ ✾✱ ✶✺✾ ❛♥②✱ ✾✱ ✶✺✾ ❛♥②✱ ✶✹✾ ❆◆❨s❡q✱ ✾✱ ✶✺✾ ❛♣✱ ✷✹✾✱ ✷✺✸ ❛♣❛t✱ ✹✺✱ ✶✽✸ ❛♣♣❡♥❞❋✐❧❡✱ ✶✷✼✱ ✶✺✻ ✷✾✼
■◆❉❊❳
✷✾✽
❆♣♣❡♥❞▼♦❞❡✱
❜t②♣❡✱
✷✻✶
❇✉❢❢❡r▼♦❞❡
❛♣♣❧✐❝❛t✐♦♥✱ ✷✽ ❢✉♥❝t✐♦♥✱
ñì✳
❢✉♥❝t✐♦♥ ❛♣♣❧✐❝❛t✐♦♥
♦♣❡r❛t♦r✱
ñì✳
♦♣❡r❛t♦r ❛♣♣❧✐❝❛t✐♦♥
❛♣♣r♦①❘❛t✐♦♥❛❧✱
✶✷✷✱ ✶✷✸✱ ✶✾✾✱ ✷✵✶
❛r✐t❤♠❡t✐❝ ♦♣❡r❛t♦r✱ ✶✷✵ ❛r✐t❤♠❡t✐❝ s❡q✉❡♥❝❡✱ ✸✹✱ ✶✵✽
❆rr❛② ❆rr❛②
✭❞❛t❛t②♣❡✮✱ ✷✷✷ ✭♠♦❞✉❧❡✮✱ ✷✶✵✱ ✷✷✶✱ ✷✷✹✱ ✷✹✺
❛rr❛②✱ ✷✷✶
✷✷✶✱ ✷✷✷✱ ✷✷✺
❛s✲♣❛tt❡r♥ ✭❅✮✱ ✹✻✱ ✹✽ ❛s❝✐✐✱
✾✱ ✶✺✾
✶✼✱ ✶✻✷ ✾✱ ✶✺✾
❛s❝❙♠❛❧❧✱
✾✱ ✶✺✾
❛s❝❙②♠❜♦❧✱
❝❞❡❝❧✱
✺✹✱ ✻✽✱ ✶✼✸
❝❞❡❝❧s✱
✺✹✱ ✻✽✱ ✶✼✸ ✶✷✷✱ ✶✷✸✱ ✶✸✼
❈❤❛r ❈❤❛r
✭❞❛t❛t②♣❡✮✱ ✶✵✼✱ ✶✹✵
❝❤❛r✱
✶✼✱ ✶✻✷
✭♠♦❞✉❧❡✮✱ ✶✺✶✱ ✷✶✵✱ ✷✹✸✱ ✷✹✺✱ ✷✼✽
❧✐t❡r❛❧ s②♥t❛①✱ ✶✼ ❝❤❛r❛❝t❡r s❡t ❆❙❈■■✱
ñì✳
❆❙❈■■ ❝❤❛r❛❝t❡r s❡t
tr❛♥s♣❛r❡♥t✱
✾✱ ✶✺✾
ñì✳
tr❛♥s♣❛r❡♥t ❝❤❛r❛❝✲
t❡r s❡t
❛s✐♥✱ ✶✷✶✱ ✶✸✻ ❛s✐♥❤✱ ✶✷✶✱ ✶✸✻ ❛ss♦❝s✱ ✷✷✶✱ ✷✷✷✱ ✷✷✺ ❛s❚②♣❡❖❢✱ ✶✹✹ ❛t❛♥✱ ✶✷✶✱ ✶✸✻ ❛t❛♥✷✱ ✶✷✷✱ ✶✷✸✱ ✶✸✽ ❛t❛♥❤✱ ✶✷✶✱ ✶✸✻ ❛t②♣❡✱
❝❛t❝❤✱ ✶✷✾✱ ✶✺✺✱ ✷✼✹ ❝❛t▼❛②❜❡s✱ ✷✹✶✱ ✷✹✷
❝❤❛r❛❝t❡r✱ ✶✵✼
❆❙❈■■ ❝❤❛r❛❝t❡r s❡t✱ ✽ ❛s❝▲❛r❣❡✱
❝❛s❡ ❡①♣r❡ss✐♦♥✱ ✸✽
❝❤❛♥❣✐♥❣ t❤❡ ❞✐r❡❝t♦r②✱ ✷✼✶
❞❡r✐✈❡❞✱ ✷✷✹
❛s❝❉✐❣✐t✱
✭❞❛t❛t②♣❡✮✱ ✷✺✻
❈❛❧❡♥❞❛r❚✐♠❡ ✭❞❛t❛t②♣❡✮✱ ✷✼✻✱ ✷✼✽ ❝❛❧❡♥❞❛r❚✐♠❡❚♦❙tr✐♥❣✱ ✷✼✻✱ ✷✼✾
❝❡✐❧✐♥❣✱
❛❝❝✉♠✉❧❛t❡❞✱ ✷✷✸
❛rr❛②✱
✺✼✱ ✶✼✺
❝❤❛r❡s❝✱
❝❤r✱ ❝✐s✱
✶✼✱ ✶✻✷
✷✹✸✱ ✷✹✻ ✷✵✸✱ ✷✵✹
❝❧❛ss✱ ✺✻✱ ✻✽ ❝❧❛ss✱
✻✵✱ ✶✼✺
❝❧❛ss ❛ss❡rt✐♦♥✱ ✻✵ ❝❧❛ss ❞❡❝❧❛r❛t✐♦♥✱ ✻✽✱ ✾✺
✺✼✱ ✶✼✺
✇✐t❤ ❛♥ ❡♠♣t②
✇❤❡r❡
❜❛s✐❝ ✐♥♣✉t✴♦✉t♣✉t✱ ✶✷✺
❝❧❛ss ❡♥✈✐r♦♥♠❡♥t✱ ✻✶
❜✐♥❞✐♥❣✱ ✺✸
❝❧❛ss ♠❡t❤♦❞✱ ✺✻✱ ✻✾✱ ✼✶
❢✉♥❝t✐♦♥✱ ♣❛tt❡r♥✱
ñì✳
ñì✳
❢✉♥❝t✐♦♥ ❜✐♥❞✐♥❣
♣❛tt❡r♥ ❜✐♥❞✐♥❣
s✐♠♣❧❡ ♣❛tt❡r♥✱
ñì✳
s✐♠♣❧❡ ♣❛tt❡r♥
❇♦♦❧
❝❧♦❝❦ t✐♠❡✱ ✷✼✺
❈❧♦❝❦❚✐♠❡ ❝❧♦s❡❝♦♠✱
✭❞❛t❛t②♣❡✮✱ ✷✼✺✱ ✷✼✽
✾✱ ✶✺✾
❝❧♦s✐♥❣ ❛ ❢✐❧❡✱ ✷✻✷
❜✐♥❞✐♥❣ ❜♦❞②✱
✾✷✱ ✶✼✶
❝❧♦s✉r❡✱ ✶✵✸
✭❞❛t❛t②♣❡✮✱ ✶✵✼✱ ✶✹✵
❝♥❛♠❡✱ ❝♥tr❧✱
❜♦♦❧❡❛♥✱ ✶✵✼
❇♦✉♥❞❡❞
✭❝❧❛ss✮✱ ✶✶✽✱ ✶✸✺
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✽✾
✐♥st❛♥❝❡ ❢♦r ❈❤❛r✱ ❜♦✉♥❞s✱ ✷✷✶✱ ✷✷✷✱ ✷✷✺ ❜r❛❝❦❡t✱ ✷✺✼✱ ✷✻✽ ❜r❛❝❦❡t❴✱ ✷✺✼✱ ✷✻✽ ❜r❡❛❦✱ ✶✹✽
♣❛rt✱ ✼✵
✶✹✶
✾✻✱ ✶✼✷
✶✼✱ ✶✻✷
❝♦❡r❝✐♦♥✱ ✶✷✸ ❝♦♠♠❡♥t✱ ✶✶ ❡♥❞✲♦❢✲❧✐♥❡✱ ✶✶ ♥❡st❡❞✱ ✶✷ ❝♦♠♠❡♥t✱
✾✱ ✶✺✾
❝♦♠♣❛r❡✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ❈♦♠♣❧❡① ✭♠♦❞✉❧❡✮✱ ✷✵✸✱
✷✵✹
■◆❉❊❳ ❝♦♥✱
✷✾✾ ❞❝❧❛ss✱
✷✺✱ ✷✻✱ ✶✽✹
❝♦♥❝❛t✱ ✶✹✺ ❝♦♥❝❛t▼❛♣✱ ✶✹✺
❞❡❝✐♠❛❧✱ ❞❡❝❧✱
❝♦♥❞✐t✐♦♥❛❧ ❡①♣r❡ss✐♦♥✱ ✸✶ ❝♦♥✐❞✱
❝♦♥♦♣✱
❝♦♥st✱ ❝♦♥str✱
✶✺✱ ✶✻✷
✺✹✱ ✼✾✱ ✶✼✸
❞❡❝❧❛r❛t✐♦♥✱ ✺✸
✶✷✱ ✶✹✱ ✶✻✷
❝♦♥❥✉❣❛t❡✱
✻✸✱ ✶✼✻
❝❧❛ss✱
✷✺✱ ✷✻✱ ✶✽✹
❞❡❢❛✉❧t✱
✶✵✾✱ ✶✹✵
❢✐①✐t②✱
✻✸✱ ✶✼✻
✐♠♣♦rt✱
❝♦♥strs✱
✻✸✱ ✶✼✻
ñì✳
❝♦♥str✉❝t♦r ❡①♣r❡ss✐♦♥✱ ✺✽
✇✐t❤✐♥ ✇✐t❤✐♥
✐♠♣♦rt ❞❡❝❧❛r❛t✐♦♥
ñì✳
✐♥st❛♥❝❡ ❞❡❝❧❛r❛t✐♦♥
❝❧❛ss ❞❡❝❧❛r❛t✐♦♥✱ ✻✽ ❛ ❧❡t ❡①♣r❡ss✐♦♥✱ ✸✻ ❛♥ ✐♥st❛♥❝❡ ❞❡❝❧❛r❛t✐♦♥✱
✇✐t❤✐♥ ❛
✶✸✱ ✶✻✷
❢✐①✐t② ❞❡❝❧❛r❛t✐♦♥
ñì✳
✐♥st❛♥❝❡✱
❞❛t❛ ❞❡❝❧❛r❛t✐♦♥ ❞❡❢❛✉❧t ❞❡❝❧❛r❛t✐♦♥
ñì✳
ñì✳
❝♦♥str✉❝t♦r ❝❧❛ss✱ ✺✻ ❝♦♥s②♠✱
❝❧❛ss ❞❡❝❧❛r❛t✐♦♥
ñì✳
❞❛t❛t②♣❡✱
✷✵✸✱ ✷✵✹
❝♦♥t❡①t✱ ✻✵
❞❡❝❧❛r❛t✐♦♥ ❣r♦✉♣✱ ✽✷
❝♦♥t❡①t✱
❞❡❝❧s✱
✻✵✱ ✶✼✺
❝♦s✱ ✶✷✶✱ ✶✸✻ ❝♦s❤✱ ✶✷✶✱ ✶✸✻
❞❡❢❛✉❧t ❞❡❝❧❛r❛t✐♦♥✱ ✼✹ ❞❡❢❛✉❧t❚✐♠❡▲♦❝❛❧❡✱ ✷✽✸✱ ✷✽✹ ❞❡❧❡t❡✱ ✷✷✽✱ ✷✸✵✱ ✷✸✺ ❞❡❧❡t❡❇②✱ ✷✷✽✱ ✷✸✸✱ ✷✸✺ ❞❡❧❡t❡❋✐rsts❇②✱ ✷✷✽✱ ✷✸✸✱ ✷✸✺
❈P❯ t✐♠❡✱ ✷✽✺
❈P❯❚✐♠❡ ✭♠♦❞✉❧❡✮✱ ✷✽✺ ❝♣✉❚✐♠❡Pr❡❝✐s✐♦♥✱ ✷✽✺ ❝r❡❛t❡❉✐r❡❝t♦r②✱ ✷✻✾✱ ✷✼✵
❞❡❧❡t✐♥❣ ❞✐r❡❝t♦r✐❡s✱ ✷✼✵
❝r❡❛t✐♥❣ ❛ ❢✐❧❡✱ ✷✻✶
❞❡❧❡t✐♥❣ ❢✐❧❡s✱ ✷✼✵
❝t❉❛②✱ ✷✼✻✱ ✷✼✽ ❝t❍♦✉r✱ ✷✼✻✱ ✷✼✽ ❝t■s❉❙❚✱ ✷✼✻✱ ✷✼✽ ❝t▼✐♥✱ ✷✼✻✱ ✷✼✽
❞❡♥♦♠✐♥❛t♦r✱
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✽✼✱
❞✐❣✐t✱
❉✐r❡❝t♦r② ✭♠♦❞✉❧❡✮✱ ✷✻✾ ❞✐✈✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✻ ❞✐✈▼♦❞✱ ✶✷✶✱ ✶✸✻
❞❡❝❧❛r❛t✐♦♥✱ ✹✵✱ ✻✸
❞❛t❛t②♣❡✱ ✻✷ ñì✳
r❡♥❛♠✐♥❣✱
❛❜str❛❝t ❞❛t❛t②♣❡
ñì✳
❞❡❝❧❛r❛t✐♦♥✱ r❡❝✉rs✐✈❡✱
✷✹✸✱ ✷✹✺
❞✐r❡❝t♦r✐❡s✱ ✷✺✾✱ ✷✻✾
✾✱ ✶✺✾
❛❧❣❡❜r❛✐❝✱
✷✼✻✱ ✷✼✾
✾✱ ✶✺✾
❞✐❣✐t❚♦■♥t✱
✶✹✼
❛❜str❛❝t✱
✻✸✱ ✶✼✻
❞✐❢❢❈❧♦❝❦❚✐♠❡s✱
✶✵✾✱ ✶✹✹
❞❛t❛ ❝♦♥str✉❝t♦r✱ ✻✹
❞❛t❛
s❡❡ ❛❧s♦
❞❡❝❧❛r❛t✐♦♥ ❞❡r✐✈✐♥❣✱
❈✉rr②✱ ❍❛s❦❡❧❧ ❇✳✱ ✐✐✐
❞❛s❤❡s✱
✶✾✾✱ ✷✵✶
❞❡♣❡♥❞❡♥❝② ❛♥❛❧②s✐s✱ ✽✷
❝✉rr❡♥t ❞✐r❡❝t♦r②✱ ✷✼✶
❝②❝❧❡✱
✶✷✷✱ ✶✷✹✱ ✶✸✽
❞❡❢❛✉❧t ❝❧❛ss ♠❡t❤♦❞✱ ✼✵✱ ✼✷✱ ✶✾✷
❝♦s✐♥❡✱ ✶✷✸
❝✉rr②✱
✺✹✱ ✶✼✸
❞❡❝♦❞❡❋❧♦❛t✱
❝♦♥t❡①t r❡❞✉❝t✐♦♥✱ ✽✹
✼✶
❛❧❣❡❜r❛✐❝ ❞❛t❛t②♣❡
ñì✳
ñì✳ ñì✳
❞❛t❛
❞❡❝❧❛r❛t✐♦♥
r❡❝✉rs✐✈❡ ❞❛t❛t②♣❡
♥❡✇t②♣❡
❞❛t❡❋♠t✱ ✷✽✸✱ ✷✽✹ ❞❛t❡❚✐♠❡❋♠t✱ ✷✽✸✱ ✷✽✹ ❉❛② ✭❞❛t❛t②♣❡✮✱ ✷✼✺✱ ✷✼✽
❞❡❝❧❛r❛t✐♦♥
❞♦ ❡①♣r❡ss✐♦♥✱ ✸✾✱ ✶✷✽
❞♦❉✐✈✱ ✷✶✶ ❞♦❡s❉✐r❡❝t♦r②❊①✐st✱ ✷✻✾ ❞♦❡s❋✐❧❡❊①✐st✱ ✷✻✾ ❉♦✉❜❧❡ ✭❞❛t❛t②♣❡✮✱ ✶✶✾✱ ✶✷✷✱ ❞r♦♣✱ ✶✹✽ ❞r♦♣❲❤✐❧❡✱ ✶✹✽ ❡✱
✷✶✺
✶✹✷
✐♥st❛♥❝❡
■◆❉❊❳
✸✵✵
❊✐t❤❡r ✭❞❛t❛t②♣❡✮✱ ✶✶✵✱ ✶✹✶ ❡✐t❤❡r✱ ✶✶✵✱ ✶✹✶ ❡❧❡♠✱ ✼✾✱ ✶✹✺✱ ✶✹✾ ❡❧❡♠■♥❞❡①✱ ✷✷✽✱ ✷✸✵✱ ✷✸✹ ❡❧❡♠■♥❞✐❝❡s✱ ✷✷✽✱ ✷✸✵✱ ✷✸✹ ❡❧❡♠s✱ ✷✷✶✱ ✷✷✷✱ ✷✷✺ ❡♥❝♦❞❡❋❧♦❛t✱ ✶✷✷✱ ✶✷✹✱ ✶✸✽
❡①♣✱
❡♥❞ ♦❢ ❢✐❧❡✱ ✷✻✷
❡①♣r❡ss✐♦♥✱ ✺✱ ✷✶
❡♥t✐t②✱ ✾✶
❊♥✉♠
✷✷✱ ✷✽✱ ✷✾✱ ✸✶✱ ✸✻✱ ✸✼✱ ✸✾✱ ✹✸✱ ✶✼✽
❡①♣✱ ✶✷✶✱ ✶✸✻ ❡①♣♦♥❡♥t✱ ✶✷✷✱ ❡①♣♦rt✱
✾✸✱ ✶✼✶
❡①♣♦rt ❧✐st✱ ✾✸ ❡①♣♦rts✱
❈❤❛r✱ ✶✹✶ ✐♥st❛♥❝❡ ❢♦r ❉♦✉❜❧❡✱ ✶✹✸ ✐♥st❛♥❝❡ ❢♦r ❋❧♦❛t✱ ✶✹✸ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✷ s✉♣❡r❝❧❛ss ♦❢ ■♥t❡❣r❛❧✱ ✶✸✻ ✐♥st❛♥❝❡ ❢♦r
❡♥✉♠❡r❛t✐♦♥✱ ✷✶✽
❡♥✉♠❋r♦♠✱ ✶✶✺✱ ✶✸✺ ❡♥✉♠❋r♦♠❚❤❡♥✱ ✶✶✺✱ ✶✸✺ ❡♥✉♠❋r♦♠❚❤❡♥❚♦✱ ✶✶✺✱ ✶✸✺ ❡♥✉♠❋r♦♠❚♦✱ ✶✶✺✱ ✶✸✺ ❡♥✈✐r♦♥♠❡♥t ❝❧❛ss✱
ñì✳
❝❧❛ss ❡♥✈✐r♦♥♠❡♥t
t②♣❡✱
ñì✳
t②♣❡ ❡♥✈✐r♦♥♠❡♥t
❡♥✈✐r♦♥♠❡♥t ✈❛r✐❛❜❧❡s✱ ✷✼✹
❊◗✱ ✶✶✵ ❊q ✭❝❧❛ss✮✱
✶✶✶✱ ✶✶✾✱ ✶✸✹
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✽✽
❆rr❛②✱ ✷✷✺ ✐♥st❛♥❝❡ ❢♦r ❈❤❛r✱ ✶✹✵ s✉♣❡r❝❧❛ss ♦❢ ◆✉♠✱ ✶✸✺ s✉♣❡r❝❧❛ss ♦❢ ❖r❞✱ ✶✸✹ ✐♥st❛♥❝❡ ❢♦r
❡rr♦r✱ ✺✱ ✷✺ ❡s❝❛♣❡✱
❡✈❡♥✱
✶✼✱ ✶✻✷
✶✷✵✱ ✶✷✶✱ ✶✸✽
❡①❝❡♣t✐♦♥ ❤❛♥❞❧✐♥❣✱ ✶✷✽ ✷✻✾
❡①❡❝✉t✐♦♥ t✐♠❡✱ ✷✽✺
❊①✐t❈♦❞❡ ✭❞❛t❛t②♣❡✮✱ ❊①✐t❋❛✐❧✉r❡✱ ✷✼✸ ❡①✐t❋❛✐❧✉r❡✱ ✷✼✸ ❊①✐t❙✉❝❝❡ss✱ ✷✼✸ ❡①✐t❲✐t❤✱ ✷✼✸ exp i ✱ ✷✷✱ ✶✼✽
❝❛s❡ ❡①♣r❡ss✐♦♥ ñì✳
❝♦♥❞✐t✐♦♥❛❧ ❡①♣r❡s✲
s✐♦♥ ❧❡t✱
ñì✳
❧❡t ❡①♣r❡ss✐♦♥
s✐♠♣❧❡ ❝❛s❡✱
ñì✳
s✐♠♣❧❡ ❝❛s❡ ❡①♣r❡s✲
s✐♦♥ t②♣❡✱
ñì✳
t②♣❡ ❡①♣r❡ss✐♦♥
✉♥✐t✱
ñì✳
✉♥✐t ❡①♣r❡ss✐♦♥
❡①♣r❡ss✐♦♥ t②♣❡✲s✐❣♥❛t✉r❡✱ ✹✸✱ ✼✺
❡①♣t✱ ✷✶✶ ❡①♣ts✱ ✷✶✶
❢✱ ✷✶✺ ❢❛✐❧✱ ✶✶✼✱ ✶✷✾✱ ❋❛❧s❡✱ ✶✵✼ ❢❜✐♥❞✱ ❢❡①♣✱
✶✸✾✱ ✷✺✽
✹✶✱ ✶✽✶
✷✷✱ ✷✽✱ ✶✼✽
❋❋❋♦r♠❛t
✭❞❛t❛t②♣❡✮✱ ✷✶✷
❢✐❡❧❞ ❧❛❜❡❧✱
ñì✳
❧❛❜❡❧✱ ✻✹
❝♦♥str✉❝t✐♦♥✱ ✹✶ s❡❧❡❝t✐♦♥✱ ✹✵ ✉♣❞❛t❡✱ ✹✷ ❢✐❡❧❞❞❡❝❧✱
✻✸✱ ✶✼✻
❢✐❧❡✱ ✷✺✾ ❢✐❧❡ ❜✉❢❢❡r✐♥❣✱ ✷✻✷ ❢✐❧❡ s②st❡♠✱ ✷✺✾
✷✺✱ ✶✹✹✱ ✷✼✹
❡①❡❝✉t❛❜❧❡✱
ñì✳
❝♦♥❞✐t✐♦♥❛❧✱
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✽✾
❡rr♦r✱
✾✸✱ ✶✼✶
❝❛s❡✱
✭❝❧❛ss✮✱ ✼✹✱ ✶✶✺✱ ✶✸✺
✶✷✹✱ ✶✸✽
❡①♣♦♥❡♥t✐❛t✐♦♥✱ ✶✷✶
✷✼✸
❋✐❧❡P❛t❤ ✭t②♣❡ s②♥♦♥②♠✮✱ ❢✐❧t❡r✱ ✶✹✺ ❢✐❧t❡r▼✱ ✷✹✾✱ ✷✺✹ ❢✐♥❞✱ ✷✷✽✱ ✷✸✵✱ ✷✸✹ ❢✐♥❞■♥❞❡①✱ ✷✷✽✱ ✷✸✹ ❢✐♥❞■♥❞✐❝❡s✱ ✷✷✽✱ ✷✸✹
✶✷✼✱ ✶✺✺
❢✐①✐t②✱ ✷✼ ❢✐①✐t②✱
✺✹✱ ✼✽✱ ✶✼✸
❢✐①✐t② ❞❡❝❧❛r❛t✐♦♥✱ ✼✵✱ ✼✷✱ ✼✼
❢❧✐♣✱ ✶✵✾✱ ✶✹✵ ❋❧♦❛t ✭❞❛t❛t②♣❡✮✱
✶✶✾✱ ✶✷✷✱ ✶✹✷
■◆❉❊❳ ❢❧♦❛t✱ ✶✻ ❢❧♦❛t❉✐❣✐ts✱ ✶✷✷✱ ✶✷✹✱ ✶✸✽ ❋❧♦❛t✐♥❣ ✭❝❧❛ss✮✱ ✶✶✾✱ ✶✷✶✱ ✶✸✻ ✐♥st❛♥❝❡ ❢♦r ❈♦♠♣❧❡①✱ ✷✵✻ s✉♣❡r❝❧❛ss ♦❢ ❘❡❛❧❋❧♦❛t✱ ✶✸✽ ❢❧♦❛t✐♥❣ ❧✐t❡r❛❧ ♣❛tt❡r♥✱ ✹✽ ❢❧♦❛t❘❛❞✐①✱ ✶✷✷✱ ✶✷✹✱ ✶✸✽ ❢❧♦❛t❘❛♥❣❡✱ ✶✷✷✱ ✶✷✹✱ ✶✸✽ ❢❧♦❛t❚♦❉✐❣✐ts✱ ✷✵✼✱ ✷✶✹ ❢❧♦♦r✱ ✶✷✷✱ ✶✷✸✱ ✶✸✼ ❢❧✉s❤✐♥❣ ❛ ❢✐❧❡ ❜✉❢❢❡r✱ ✷✻✹ ❢♠❛♣✱ ✶✶✼✱ ✶✸✾✱ ✷✷✹ ❢♦❧❞❧✱ ✶✹✻ ❢♦❧❞❧✶✱ ✶✹✻ ❢♦❧❞▼✱ ✷✹✾✱ ✷✺✹ ❢♦❧❞r✱ ✶✹✼ ❢♦❧❞r✶✱ ✶✹✼ ❢♦r♠❛❧ s❡♠❛♥t✐❝s✱ ✸ ❢♦r♠❛t❈❛❧❡♥❞❛r❚✐♠❡✱ ✷✼✻✱ ✷✽✵ ❢♦r♠❛t❘❡❛❧❋❧♦❛t✱ ✷✶✸ ❢♦r♠❢❡❡❞✱ ✾✱ ✶✺✾ ❢♣❛t✱ ✹✺✱ ✶✽✷ ❢♣❛ts✱ ✹✺✱ ✶✽✷ ❋r❛❝t✐♦♥❛❧ ✭❝❧❛ss✮✱ ✷✽✱ ✶✶✾✱ ✶✷✶✱ ✶✸✻ ✐♥st❛♥❝❡ ❢♦r ❈♦♠♣❧❡①✱ ✷✵✺ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✶ s✉♣❡r❝❧❛ss ♦❢ ❋❧♦❛t✐♥❣✱ ✶✸✻ s✉♣❡r❝❧❛ss ♦❢ ❘❡❛❧❋r❛❝✱ ✶✸✼ ❢r♦♠❊♥✉♠✱ ✶✶✺✱ ✶✸✺ ❢r♦♠■♥t❡❣❡r✱ ✷✽✱ ✶✶✾✕✶✷✶✱ ✶✸✺ ❢r♦♠■♥t❡❣r❛❧✱ ✶✷✷✱ ✶✷✹✱ ✶✸✾ ❢r♦♠❏✉st✱ ✷✹✶✱ ✷✹✷ ❢r♦♠▼❛②❜❡✱ ✷✹✶✱ ✷✹✷ ❢r♦♠❘❛t✱ ✷✵✼✱ ✷✶✵ ❢r♦♠❘❛t✬✱ ✷✶✵ ❢r♦♠❘❛t✐♦♥❛❧✱ ✷✽✱ ✶✶✾✕✶✷✶✱ ✶✸✻ ❢st✱ ✶✵✾✱ ✶✹✹ ❢✉♥❝t✐♦♥✱ ✶✵✾ ❢✉♥❝t✐♦♥ ❜✐♥❞✐♥❣✱ ✼✾✱ ✽✵ ❢✉♥❝t✐♦♥ t②♣❡✱ ✺✾ ❢✉♥❝t✐♦♥❛❧ ❧❛♥❣✉❛❣❡✱ ✐✐✐ ❋✉♥❝t♦r ✭❝❧❛ss✮✱ ✶✶✼✱ ✶✸✾ ✐♥st❛♥❝❡ ❢♦r ❬❪✱ ✶✹✸ ✐♥st❛♥❝❡ ❢♦r ❆rr❛②✱ ✷✷✺ ✐♥st❛♥❝❡ ❢♦r ■❖✱ ✶✹✶
✸✵✶ ✐♥st❛♥❝❡ ❢♦r ▼❛②❜❡✱ ✶✹✶ ❢✉♥❝t♦r✱ ✶✶✼ ❢✉♥❧❤s✱ ✶✼✽
❣❛♣✱ ✶✼✱ ✶✻✷ ❣❝❞✱ ✶✷✵✱ ✶✷✷✱ ✶✸✽ ❣❝♦♥✱ ✷✻✱ ✶✽✹ ❣❝♦♥s②♠✱ ✷✻ ❣❞✱ ✸✼✱ ✼✾✱ ✶✼✽ ❣❞♣❛t✱ ✸✼✱ ✶✽✶ ❣❞r❤s✱ ✼✾✱ ✶✼✽ ❣❡♥❞❡❝❧✱ ✺✹✱ ✻✽✱ ✼✽✱ ✶✼✸ ❣❡♥❡r❛❧✐③❛t✐♦♥✱ ✽✸ ❣❡♥❡r❛❧✐③❛t✐♦♥ ♣r❡♦r❞❡r✱ ✻✶ ❣❡♥❡r❛t♦r✱ ✸✺ ❣❡♥❡r✐❝❉r♦♣✱ ✷✷✾✱ ✷✸✼ ❣❡♥❡r✐❝■♥❞❡①✱ ✷✷✾✱ ✷✸✽ ❣❡♥❡r✐❝▲❡♥❣t❤✱ ✷✷✾✱ ✷✸✼ ❣❡♥❡r✐❝❘❡♣❧✐❝❛t❡✱ ✷✷✾✱ ✷✸✽ ❣❡♥❡r✐❝❙♣❧✐t❆t✱ ✷✷✾✱ ✷✸✼ ❣❡♥❡r✐❝❚❛❦❡✱ ✷✷✾✱ ✷✸✼ ❣❡♥❘❛♥❣❡✱ ✷✽✼✱ ✷✽✽ ❣❡t t❤❡ ❝♦♥t❡♥ts ♦❢ ❛ ❢✐❧❡✱ ✷✻✻ ❣❡t❆r❣s✱ ✷✼✸ ❣❡t❈❤❛r✱ ✶✷✻✱ ✶✺✺ ❣❡t❈❧♦❝❦❚✐♠❡✱ ✷✼✻✱ ✷✼✽ ❣❡t❈♦♥t❡♥ts✱ ✶✷✻✱ ✶✺✺ ❣❡t❈P❯❚✐♠❡✱ ✷✽✺ ❣❡t❈✉rr❡♥t❉✐r❡❝t♦r②✱ ✷✻✾✱ ✷✼✵ ❣❡t❉✐r❡❝t♦r②❈♦♥t❡♥ts✱ ✷✻✾✱ ✷✼✵ ❣❡t❊♥✈✱ ✷✼✸ ❣❡t▲✐♥❡✱ ✶✷✻✱ ✶✺✺ ❣❡t▼♦❞✐❢✐❝❛t✐♦♥❚✐♠❡✱ ✷✼✵ ❣❡tP❡r♠✐ss✐♦♥s✱ ✷✼✵ ❣❡tPr♦❣◆❛♠❡✱ ✷✼✸ ❣❡t❙t❞●❡♥✱ ✷✽✽✱ ✷✾✷ ❣❡t❙t❞❘❛♥❞♦♠✱ ✷✽✽✱ ✷✾✷ ❣r❛♣❤✐❝✱ ✾✱ ✶✺✾ ❣r♦✉♣✱ ✷✷✾✱ ✷✸✶✱ ✷✸✺ ❣r♦✉♣❇②✱ ✷✷✾✱ ✷✸✸✱ ✷✸✻ ●❚✱ ✶✶✵ ❣t②❝♦♥✱ ✺✼✱ ✼✶✱ ✶✼✺ ❣✉❛r❞✱ ✸✺✱ ✸✽✱ ✹✾ ❣✉❛r❞✱ ✷✹✾✱ ✷✺✸
❍❛♥❞❧❡ ✭❞❛t❛t②♣❡✮✱ ✷✺✺
■◆❉❊❳
✸✵✷
❍❛♥❞❧❡P♦s♥
✭❞❛t❛t②♣❡✮✱ ✷✺✺
✐♠♣♦rt✱
✾✻✱ ✶✼✷
❤❛♥❞❧❡s✱ ✷✺✾
✐♠♣♦rt ❞❡❝❧❛r❛t✐♦♥✱ ✾✻
❍❛s❦❡❧❧✱ ✐✐✐✱ ✸
✐♠♣s♣❡❝✱
❤❈❧♦s❡✱ ✷✺✻✱ ❤❡❛❞✱ ✶✹✺
✷✻✷
❤❡①❛❞❡❝✐♠❛❧✱
✶✺✱ ✶✻✷
❤❡①✐t✱
✾✱ ✶✺✾
❤❋✐❧❡❙✐③❡✱ ✷✺✼✱ ✷✻✷ ❤❋❧✉s❤✱ ✷✺✼✱ ✷✻✹ ❤●❡t❇✉❢❢❡r✐♥❣✱ ✷✺✼✱ ✷✻✸ ❤●❡t❈❤❛r✱ ✷✺✼✱ ✷✻✺ ❤●❡t❈♦♥t❡♥ts✱ ✷✺✼✱ ✷✻✵✱ ✷✻✻ ❤●❡t▲✐♥❡✱ ✷✺✼✱ ✷✻✺ ❤●❡tP♦s♥✱ ✷✺✼✱ ✷✻✹
✐♥❧✐♥✐♥❣✱ ✶✾✺ ✐♥♣✉t✴♦✉t♣✉t✱ ✷✺✺ ✐♥♣✉t✴♦✉t♣✉t ❡①❛♠♣❧❡s✱ ✷✻✻
✐♥❘❛♥❣❡✱ ✷✶✼✱ ✷✶✾✱ ✷✷✵ ✐♥s❡rt✱ ✷✷✾✱ ✷✸✶✱ ✷✸✻ ✐♥s❡rt❇②✱ ✷✷✾✱ ✷✸✸✱ ✷✸✼ ✐♥st✱
✼✶✱ ✶✼✼
✐♥st❛♥❝❡ ❞❡❝❧❛r❛t✐♦♥✱ ✼✵✱ ✼✷✱
❤✐❞✐♥❣✱ ✾✽
❤■s❈❧♦s❡❞✱ ✷✺✼✱ ✷✻✺ ❤■s❊❖❋✱ ✷✺✼✱ ✷✻✷ ❤■s❖♣❡♥✱ ✷✺✼✱ ✷✻✺ ❤■s❘❡❛❞❛❜❧❡✱ ✷✺✼✱ ✷✻✺ ❤■s❙❡❡❦❛❜❧❡✱ ✷✺✼✱ ✷✻✺ ❤■s❲r✐t❛❜❧❡✱ ✷✺✼✱ ✷✻✺ ❤▲♦♦❦❆❤❡❛❞✱ ✷✺✼✱ ✷✻✸✱ ✷✻✻ ❤Pr✐♥t✱ ✷✺✼✱ ✷✻✻ ❤P✉t❈❤❛r✱ ✷✺✼✱ ✷✻✻ ❤P✉t❙tr✱ ✷✺✼✱ ✷✻✻ ❤P✉t❙tr▲♥✱ ✷✺✼ ❤❘❡❛❞②✱ ✷✺✼✱ ✷✻✺ ❤❙❡❡❦✱ ✷✺✼✱ ✷✻✹ ❤❙❡t❇✉❢❢❡r✐♥❣✱ ✷✺✼✱ ✷✻✸ ❤❙❡tP♦s♥✱ ✷✺✼✱ ✷✻✹ ❤❲❛✐t❋♦r■♥♣✉t✱ ✷✺✼✱ ✷✻✺
✺✹✱ ✼✶✱ ✶✼✸ ✺✹✱ ✼✶✱ ✶✼✸
✐♠❛❣P❛rt✱ ✐♠♣❞❡❝❧✱
✷✵✸✱ ✷✵✹
✾✻✱ ✶✼✷
✐♠♣❞❡❝❧s✱
✾✷✱ ✶✼✶
✶✻
✐rr❡❢✉t❛❜❧❡ ♣❛tt❡r♥✱ ✸✻✱ ✹✽✱ ✺✵✱ ✽✶
✐❞❡♥t✐❢✐❡r✱ ✶✷ ♣r❡ss✐♦♥
✼✵
✐♥t❡❣❡r▲♦❣❇❛s❡✱ ✷✶✶ ■♥t❡❣r❛❧ ✭❝❧❛ss✮✱ ✶✶✾✱ ✶✷✶✱ ✶✸✻ ✐♥t❡r❛❝t✱ ✶✷✻✱ ✶✺✻ ✐♥t❡rs❡❝t✱ ✷✷✾✱ ✷✸✵✱ ✷✸✺ ✐♥t❡rs❡❝t❇②✱ ✷✷✾✱ ✷✸✸✱ ✷✸✺ ✐♥t❡rs♣❡rs❡✱ ✷✷✾✱ ✷✸✶✱ ✷✸✺ ✐♥t❚♦❉✐❣✐t✱ ✷✹✸✱ ✷✹✻ ■❖✱ ✷✺✺ ■❖ ✭❞❛t❛t②♣❡✮✱ ✶✵✾✱ ✶✹✶ ■❖ ✭♠♦❞✉❧❡✮✱ ✷✺✺✱ ✷✻✽ ✐♦❡●❡t❊rr♦r❙tr✐♥❣✱ ✷✺✼✱ ✷✺✾ ✐♦❡●❡t❋✐❧❡◆❛♠❡✱ ✷✺✼✱ ✷✺✽ ✐♦❡●❡t❍❛♥❞❧❡✱ ✷✺✼✱ ✷✺✽ ■❖❊rr♦r ✭❞❛t❛t②♣❡✮✱ ✶✵✾✱ ✶✺✺✱ ✷✺✽ ✐♦❊rr♦r✱ ✶✷✾✱ ✶✺✺ ■❖▼♦❞❡ ✭❞❛t❛t②♣❡✮✱ ✷✺✻✱ ✷✻✶
✶✵✾✱ ✶✹✵
✐❢✲t❤❡♥✲❡❧s❡ ❡①♣r❡ss✐♦♥✱
✇✐t❤ ❛♥ ❡♠♣t② ✇❤❡r❡ ♣❛rt✱ ■♥t ✭❞❛t❛t②♣❡✮✱ ✶✶✾✱ ✶✷✷✱ ✶✹✷ ■♥t❡❣❡r ✭❞❛t❛t②♣❡✮✱ ✶✷✷✱ ✶✹✷ ✐♥t❡❣❡r ❧✐t❡r❛❧ ♣❛tt❡r♥✱ ✹✽
■✴❖ ❡rr♦rs✱ ✷✺✽
✐❞❡❝❧s✱
✐♠♣♦rt✐♥❣ ❛♥❞ ❡①♣♦rt✐♥❣✱ ✶✵✵
✐♥t❡❣❡r✱
■✴❖✱ ✷✺✺
✐❞❡❝❧✱
s❡❡ ❛❧s♦
r✐✈❡❞ ✐♥st❛♥❝❡
❍✐♥❞❧❡②✲▼✐❧♥❡r t②♣❡ s②st❡♠✱ ✺✱ ✺✻✱ ✽✷
✐❞✱
✾✻✱ ✶✼✷
✐♥❞❡①✱ ✷✶✼✱ ✷✶✾✱ ✷✷✵ ✐♥❞✐❝❡s✱ ✷✷✶✱ ✷✷✷✱ ✷✷✺ ✐♥✐t✱ ✶✹✻ ✐♥✐ts✱ ✷✷✾✱ ✷✸✶✱ ✷✸✻
❍❛s❦❡❧❧ ❦❡r♥❡❧✱ ✹
ñì✳
❝♦♥❞✐t✐♦♥❛❧ ❡①✲
✐s❆❧♣❤❛✱ ✷✹✸✱ ✷✹✺ ✐s❆❧♣❤❛◆✉♠✱ ✷✹✸✱ ✷✹✺ ✐s❆❧r❡❛❞②❊①✐sts❊rr♦r✱ ✷✺✼✱ ✷✺✽ ✐s❆❧r❡❛❞②■♥❯s❡❊rr♦r✱ ✷✺✼✱ ✷✺✽✱ ✷✻✶ ✐s❆s❝✐✐✱ ✷✹✸✱ ✷✹✺ ✐s❈♦♥tr♦❧✱ ✷✹✸✱ ✷✹✺
❞❡✲
■◆❉❊❳
✸✵✸
✐s❉✐❣✐t✱ ✷✹✸✱ ✷✹✺ ✐s❉♦❡s◆♦t❊①✐st❊rr♦r✱ ✷✺✼✱ ✷✺✽✱ ✷✻✶ ✐s❊❖❋✱ ✷✺✼✱ ✷✻✷ ✐s❊❖❋❊rr♦r✱ ✷✺✼✱ ✷✺✽ ✐s❋✉❧❧❊rr♦r✱ ✷✺✼✱ ✷✺✽ ✐s❍❡①❉✐❣✐t✱ ✷✹✸✱ ✷✹✺ ✐s■❧❧❡❣❛❧❖♣❡r❛t✐♦♥✱ ✷✺✼✱ ✷✺✽ ✐s❏✉st✱ ✷✹✶✱ ✷✹✷ ✐s▲❛t✐♥✶✱ ✷✹✸✱ ✷✹✺ ✐s▲♦✇❡r✱ ✷✹✸✱ ✷✹✺ ✐s◆♦t❤✐♥❣✱ ✷✹✶✱ ✷✹✷ ✐s❖❝t❉✐❣✐t✱ ✷✹✸✱ ✷✹✺ ✐sP❡r♠✐ss✐♦♥❊rr♦r✱ ✷✺✼✱ ✷✺✽✱ ✷✻✶ ✐sPr❡❢✐①❖❢✱ ✷✷✾✱ ✷✸✻ ✐sPr✐♥t✱ ✷✹✸✱ ✷✹✺ ✐s❙♣❛❝❡✱ ✷✹✸✱ ✷✹✺ ✐s❙✉❢❢✐①❖❢✱ ✷✷✾✱ ✷✸✻ ✐s❯♣♣❡r✱ ✷✹✸✱ ✷✹✺ ✐s❯s❡r❊rr♦r✱ ✷✺✼✱ ✷✺✽ ✐t❡r❛t❡✱ ✶✹✼ ■① ✭❝❧❛ss✮✱ ✷✶✼✱ ✷✶✾✱ ✷✷✵
✷✶✻
❧❡①✐❝❛❧ str✉❝t✉r❡✱ ✼
❧❡①▲✐t❈❤❛r✱ ✷✹✸✱ lexp i ✱ ✷✷✱ ✶✼✽
✷✹✼
❧✐❜r❛r✐❡s✱ ✶✵✹
❧✐❢t▼✱ ✷✺✵✱ ✷✺✹ ❧✐❢t▼✷✱ ✷✺✵✱ ✷✺✹ ❧✐❢t▼✸✱ ✷✺✵✱ ✷✺✹ ❧✐❢t▼✹✱ ✷✺✵✱ ✷✺✹ ❧✐❢t▼✺✱ ✷✺✵✱ ✷✺✹ ❧✐♥❡❛r ♣❛tt❡r♥✱ ✷✽✱ ✹✻✱ ✽✶ ❧✐♥❡❛r✐t②✱ ✷✽✱ ✹✻✱ ✽✶
❧✐♥❡s✱ ✶✹✽ ▲✐st ✭♠♦❞✉❧❡✮✱
✷✷✹✱ ✷✷✼✱ ✷✸✹
❧✐st✱ ✸✷✱ ✺✾✱ ✶✵✽ ❧✐st ❝♦♠♣r❡❤❡♥s✐♦♥✱ ✸✺✱ ✶✵✽ ❧✐st t②♣❡✱ ✺✾
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✷✶✽
❧✐st❆rr❛②✱ ✷✷✶✱ ✷✷✷✱ ✷✷✺ ❧✐st❚♦▼❛②❜❡✱ ✷✹✶✱ ✷✹✷ ❧✐t❡r❛❧✱ ✾✱ ✶✺✾
✐♥st❛♥❝❡ ❢♦r
❧✐t❡r❛❧ ♣❛tt❡r♥✱ ✹✽
✐♥st❛♥❝❡ ❢♦r
■①
❧❡①✱ ✶✶✺✱ ✶✺✷ ❧❡①❉✐❣✐ts✱ ✷✵✼✱ ❧❡①❡♠❡✱ ✾✱ ✶✺✾
✐♥st❛♥❝❡ ❢♦r
❈❤❛r✱ ✷✷✵ ■♥t❡❣❡r✱ ✷✷✵ ■♥t✱ ✷✷✵
✭♠♦❞✉❧❡✮✱ ✷✶✼✱ ✷✷✵✱ ✷✷✶✱ ✷✷✹✱ ✷✺✺✱ ✷✼✺✱
✐①♠❛♣✱ ❥♦✐♥✱ ❏✉st✱
✷✼✽ ✷✷✶✱ ✷✷✹✱ ✷✷✺
✭♠♦❞✉❧❡✮✱ ✷✼✽✱ ✷✽✸✱ ✷✽✹
❧♦❝❛❧❡✱ ✷✽✸
❧♦❣✱
✶✷✶✱ ✶✸✻
❧♦❣❇❛s❡✱
✷✹✾✱ ✷✺✸
✶✷✶✱ ✶✸✻
❧♦♦❦❛❤❡❛❞✱ ✷✻✻
✶✶✵
❦✐♥❞ ✐♥❢❡r❡♥❝❡✱ ✺✾✱ ✻✹✱ ✻✻✱ ✼✷✱ ✽✽
❧♦♦❦✉♣✱ ✶✹✾ lpat i ✱ ✹✺✱ ✶✽✷ ▲❚✱ ✶✶✵
♠❛❣♥✐t✉❞❡✱ ✶✷✷
❧❛❜❡❧✱ ✹✵
♠❛❣♥✐t✉❞❡✱ ✷✵✸✱ ✷✵✹ ▼❛✐♥ ✭♠♦❞✉❧❡✮✱ ✾✶ ♠❛✐♥✱ ✾✶
❧❛♠❜❞❛ ❛❜str❛❝t✐♦♥✱ ✷✽ ✾✱ ✶✺✾ ✶✹✻
❧❛②♦✉t✱ ✶✽✱ ✶✻✹✱
❧❝♠✱ ✶✷✶✱ ✶✷✷✱ ▲❡❢t✱ ✶✶✵ ❧❡♥❣t❤✱ ✶✹✻
▲♦❝❛❧❡
❧♦❣❛r✐t❤♠✱ ✶✷✶
❦✐♥❞✱ ✺✼✱ ✺✾✱ ✻✹✱ ✻✻✱ ✼✷✱ ✽✽
❧❛r❣❡✱ ❧❛st✱
❧✐t❡r❛t❡ ❝♦♠♠❡♥ts✱ ✶✻✾
s❡❡ ❛❧s♦
♦❢❢✲s✐❞❡ r✉❧❡
✶✸✾
❧❡t ❡①♣r❡ss✐♦♥✱ ✸✻ ✐♥ ❞♦ ❡①♣r❡ss✐♦♥s✱ ✸✾ ✐♥ ❧✐st ❝♦♠♣r❡❤❡♥s✐♦♥s✱ ✸✺
♠❛❦✐♥❣ ❞✐r❡❝t♦r✐❡s✱ ✷✼✵
♠❛♣✱ ✶✹✺ ♠❛♣❆❝❝✉♠▲✱ ✷✷✾✱ ✷✸✶✱ ✷✸✻ ♠❛♣❆❝❝✉♠❘✱ ✷✷✾✱ ✷✸✶✱ ✷✸✻ ♠❛♣❆♥❞❯♥③✐♣▼✱ ✷✹✾✱ ✷✺✸ ♠❛♣▼✱ ✶✶✽✱ ✶✸✾ ♠❛♣▼❛②❜❡✱ ✷✹✶✱ ✷✹✷
■◆❉❊❳
✸✵✹
♠❛♣▼❴✱ ✶✶✽✱ ✶✸✾ ♠❛t❝❤✱ ✷✹✻ ♠❛①✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ♠❛①❇♦✉♥❞✱ ✶✶✽✱ ✶✸✺✱
♥❛♠❡s♣❛❝❡s✱ ✺✱ ✶✹ ♥❝♦♠♠❡♥t✱
♥❡❣❛t❡✱
✾✱ ✶✺✾
✷✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✺
♥❡❣❛t✐♦♥✱ ✷✹✱ ✷✾✱ ✸✶
✶✽✾
♠❛①✐♠❛❧ ♠✉♥❝❤ r✉❧❡✱ ✶✶✱ ✶✽✱ ✶✺✽
♠❛①✐♠✉♠✱ ✶✹✾ ♠❛①✐♠✉♠❇②✱ ✷✷✾✱ ✷✸✸✱ ✷✸✼ ▼❛②❜❡ ✭❞❛t❛t②♣❡✮✱ ✶✶✵✱ ✶✹✶ ▼❛②❜❡ ✭♠♦❞✉❧❡✮✱ ✷✸✹✱ ✷✹✶✱ ✷✹✷ ♠❛②❜❡✱ ✶✶✵✱ ✶✹✶ ♠❛②❜❡❚♦▲✐st✱ ✷✹✶✱ ✷✹✷
♥❡✇❝♦♥str✱ ♥❡✇❧✐♥❡✱
✻✼✱ ✶✼✻
✾✱ ✶✺✾
♠♦❞✉❧❡✱ ✾✶
♥❡✇❙t❞●❡♥✱ ✷✽✽✱ ✷✾✷ ♥❡✇t②♣❡ ❞❡❝❧❛r❛t✐♦♥✱ ✹✼✱ ✹✾✱ ✺✵✱ ✻✼ ♥❡①t✱ ✷✽✼✱ ✷✽✽ ♥♦♥♥✉❧❧✱ ✷✶✻ ♥♦t✱ ✶✵✼✱ ✶✹✵ ♥♦t❊❧❡♠✱ ✼✾✱ ✶✹✺✱ ✶✹✾ ◆♦t❤✐♥❣✱ ✶✶✵ ♥✉❜✱ ✷✷✽✱ ✷✸✵✱ ✷✸✹ ♥✉❜❇②✱ ✷✷✽✱ ✷✸✸✱ ✷✸✺ ♥✉❧❧✱ ✶✹✻ ◆✉♠ ✭❝❧❛ss✮✱ ✷✽✱ ✼✺✱ ✶✶✾✱ ✶✷✶✱ ✶✸✺ ✐♥st❛♥❝❡ ❢♦r ❈♦♠♣❧❡①✱ ✷✵✺ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✶ s✉♣❡r❝❧❛ss ♦❢ ❋r❛❝t✐♦♥❛❧✱ ✶✸✻ s✉♣❡r❝❧❛ss ♦❢ ❘❡❛❧✱ ✶✸✺
♠♦❞✉❧❡✱
♥✉♠❜❡r✱ ✶✶✽
♠❡t❤♦❞✱
ñì✳
❝❧❛ss ♠❡t❤♦❞
♠✐♥✱ ✶✶✸✱ ✶✸✹✱ ✶✽✽ ♠✐♥❇♦✉♥❞✱ ✶✶✽✱ ✶✸✺✱ ✶✽✾ ♠✐♥✐♠✉♠✱ ✶✹✾ ♠✐♥✐♠✉♠❇②✱ ✷✷✾✱ ✷✸✸✱ ✷✸✼ ♠❦P♦❧❛r✱ ✷✵✸✱ ✷✵✹ ♠❦❙t❞●❡♥✱ ✷✽✼✱ ✷✽✾ ♠♦❞✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✻ ♠♦❞✐❞✱
▼♦♥❛❞
✶✹✱ ✾✷✱ ✶✻✷✱ ✶✼✶ ✾✷✱ ✶✼✶
❧✐t❡r❛❧ s②♥t❛①✱ ✶✺
✭❝❧❛ss✮✱ ✹✵✱ ✶✶✼✱ ✶✸✾
❬❪✱ ✶✹✸ ✐♥st❛♥❝❡ ❢♦r ■❖✱ ✶✹✶ ✐♥st❛♥❝❡ ❢♦r ▼❛②❜❡✱ ✶✹✶ s✉♣❡r❝❧❛ss ♦❢ ▼♦♥❛❞P❧✉s✱ ▼♦♥❛❞ ✭♠♦❞✉❧❡✮✱ ✷✹✾✱ ✷✺✸
tr❛♥s❧❛t✐♦♥ ♦❢ ❧✐t❡r❛❧s✱ ✷✽
✐♥st❛♥❝❡ ❢♦r
♥✉♠❡r❛t♦r✱ ✶✾✾✱ ✷✵✶ ◆✉♠❡r✐❝ ✭♠♦❞✉❧❡✮✱ ✶✺✶✱ ✷✺✸
♠♦♥❛❞✱ ✸✾✱ ✶✶✼✱ ✶✷✺
▼♦♥❛❞P❧✉s
✭❝❧❛ss✮✱ ✷✹✾✱ ✷✺✸
✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r
❬❪✱ ✷✺✸ ▼❛②❜❡✱ ✷✺✸
♠♦♥♦♠♦r♣❤✐❝ t②♣❡ ✈❛r✐❛❜❧❡✱ ✺✵✱ ✽✺ ♠♦♥♦♠♦r♣❤✐s♠ r❡str✐❝t✐♦♥✱ ✽✻
▼♦♥t❤
✭❞❛t❛t②♣❡✮✱ ✷✼✺✱ ✷✼✽
♠♦✈✐♥❣ ❞✐r❡❝t♦r✐❡s✱ ✷✼✶ ♠♦✈✐♥❣ ❢✐❧❡s✱ ✷✼✶
♥✉♠❡r✐❝❊♥✉♠❋r♦♠✱ ✶✹✸ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥✱ ✶✹✸ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚❤❡♥❚♦✱ ✶✹✸ ♥✉♠❡r✐❝❊♥✉♠❋r♦♠❚♦✱ ✶✹✸ ♦❝t❛❧✱
✶✺✱ ✶✻✷
♦❝t✐t✱
✾✱ ✶✺✾
♦❞❞✱
✶✷✵✱ ✶✷✶✱ ✶✸✽
♦❢❢✲s✐❞❡ r✉❧❡✱ ✶✾✱ ♦♣✱
s❡❡ ❛❧s♦
♦♣❡♥❝♦♠✱
n ✰k
♦♣❡r❛t♦r✱ ✶✷✱ ✶✸✱ ✷✾
♦♣❡♥❋✐❧❡✱
✾✱ ✶✺✾ ✷✺✻✱ ✷✻✶
♦♣❡♥✐♥❣ ❛ ❢✐❧❡✱ ✷✻✶ ♦♣❡r❛t✐♥❣ s②st❡♠ ❝♦♠♠❛♥❞s✱ ✷✼✹
♣❛tt❡r♥✱ ✹✽✱ ✽✷
♦♣❡r❛t♦r ❛♣♣❧✐❝❛t✐♦♥✱ ✷✾
♥❛♠❡ s♣❡❝✐❛❧✱
ñì✳
ñì✳
❧❛②♦✉t
✷✺✱ ✼✽✱ ✶✽✹
♠♣❧✉s✱ ✷✹✾✱ ✷✺✸ ♠s✉♠✱ ✷✹✾✱ ✷✺✸ ♠③❡r♦✱ ✷✹✾✱ ✷✺✸
q✉❛❧✐❢✐❡❞✱
✷✵✼✱ ✷✶✵✱ ✷✹✺
♥✉♠❡r✐❝ t②♣❡✱ ✶✷✵
q✉❛❧✐❢✐❡❞ ♥❛♠❡
s♣❡❝✐❛❧ ♥❛♠❡
♦♣s✱
♦r✱
✺✹✱ ✼✽✱ ✶✼✸
✶✹✾
■◆❉❊❳ ❖r❞ ✭❝❧❛ss✮✱ ✶✶✸✱ ✶✶✾✱ ✶✸✹ ❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✽✽ ✐♥st❛♥❝❡ ❢♦r ❆rr❛②✱ ✷✷✺ ✐♥st❛♥❝❡ ❢♦r ❈❤❛r✱ ✶✹✶ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✶ s✉♣❡r❝❧❛ss ♦❢ ❘❡❛❧✱ ✶✸✺ ♦r❞✱ ✷✹✸✱ ✷✹✻ ❖r❞❡r✐♥❣ ✭❞❛t❛t②♣❡✮✱ ✶✶✵✱ ✶✹✷ ♦t❤❡r✇✐s❡✱ ✶✵✼✱ ✶✹✵ ♦✈❡r❧♦❛❞❡❞ ❢✉♥❝t✐♦♥s✱ ✺✻ ♦✈❡r❧♦❛❞❡❞ ♣❛tt❡r♥✱ ñì✳ ♣❛tt❡r♥✲♠❛t❝❤✐♥❣ ♦✈❡r❧♦❛❞✐♥❣✱ ✻✽ ❞❡❢❛✉❧ts✱ ✼✹ ♣❛rt✐t✐♦♥✱ ✷✷✾✱ ✷✸✶✱ ✷✸✺ pat i ✱ ✹✺✱ ✶✽✷ ♣❛t✱ ✹✺✱ ✶✽✷ ♣❛t❤✱ ✷✼✵ ♣❛tt❡r♥✱ ✸✽✱ ✹✹ ❅✱ ñì✳ ❛s✲♣❛tt❡r♥ ❴✱ ñì✳ ✇✐❧❞❝❛r❞ ♣❛tt❡r♥ ❝♦♥str✉❝t❡❞✱ ñì✳ ❝♦♥str✉❝t❡❞ ♣❛tt❡r♥ ❢❧♦❛t✐♥❣✱ ñì✳ ❢❧♦❛t✐♥❣ ❧✐t❡r❛❧ ♣❛tt❡r♥ ✐♥t❡❣❡r✱ ñì✳ ✐♥t❡❣❡r ❧✐t❡r❛❧ ♣❛tt❡r♥ ✐rr❡❢✉t❛❜❧❡✱ ñì✳ ✐rr❡❢✉t❛❜❧❡ ♣❛tt❡r♥ ❧✐♥❡❛r✱ ñì✳ ❧✐♥❡❛r ♣❛tt❡r♥ n ✰k ✱ ñì✳ n ✰k ♣❛tt❡r♥ r❡❢✉t❛❜❧❡✱ ñì✳ r❡❢✉t❛❜❧❡ ♣❛tt❡r♥ ♣❛tt❡r♥ ❜✐♥❞✐♥❣✱ ✼✾✱ ✽✶ ♣❛tt❡r♥✲♠❛t❝❤✐♥❣✱ ✹✹ ♦✈❡r❧♦❛❞❡❞ ❝♦♥st❛♥t✱ ✺✵ P❡r♠✐ss✐♦♥s ✭❞❛t❛t②♣❡✮✱ ✷✻✾ ♣❤❛s❡✱ ✷✵✸✕✷✵✺ ♣❤②s✐❝❛❧ ❢✐❧❡✱ ✷✺✾ ♣✐✱ ✶✷✶✱ ✶✸✻ ♣♦❧❛r✱ ✷✵✸✱ ✷✵✹ ♣♦❧❧✐♥❣ ❛ ❤❛♥❞❧❡ ❢♦r ✐♥♣✉t✱ ✷✻✺ ♣♦❧②♠♦r♣❤✐❝ r❡❝✉rs✐♦♥✱ ✼✼ ♣♦❧②♠♦r♣❤✐s♠✱ ✺ ♣r❛❣♠❛s✱ ✶✾✺ ♣r❡❝❡❞❡♥❝❡✱ ✻✸✱ s❡❡ ❛❧s♦ ❢✐①✐t② ♣r❡❞✱ ✶✸✺ Pr❡❧✉❞❡ ✐♠♣❧✐❝✐t ✐♠♣♦rt ♦❢✱ ✶✵✹ Pr❡❧✉❞❡ ✭♠♦❞✉❧❡✮✱ ✶✵✹✱ ✶✸✸
✸✵✺
Pr❡❧✉❞❡❇✉✐❧t✐♥ ✭♠♦❞✉❧❡✮✱ ✶✸✸✱ ✶✺✺ Pr❡❧✉❞❡■❖ ✭♠♦❞✉❧❡✮✱ ✶✸✸✱ ✶✺✺ Pr❡❧✉❞❡▲✐st ✭♠♦❞✉❧❡✮✱ ✶✸✸✱ ✶✹✺ Pr❡❧✉❞❡❚❡①t ✭♠♦❞✉❧❡✮✱ ✶✸✸✱ ✶✺✶ ♣r✐♥❝✐♣❛❧ t②♣❡✱ ✻✶✱ ✼✼ ♣r✐♥t✱ ✶✷✻✱ ✶✺✺ ♣r♦❞✉❝t✱ ✶✹✾ ♣r♦❣r❛♠✱ ✾✱ ✶✺✾ ♣r♦❣r❛♠ ❛r❣✉♠❡♥ts✱ ✷✼✸ ♣r♦❣r❛♠ ♥❛♠❡✱ ✷✼✹ ♣r♦❣r❛♠ str✉❝t✉r❡✱ ✸ ♣r♦♣❡r❋r❛❝t✐♦♥✱ ✶✷✷✱ ✶✷✸✱ ✶✸✼ ♣✉t❈❤❛r✱ ✶✷✻✱ ✶✺✺ ♣✉t❙tr✱ ✶✷✻✱ ✶✺✺ ♣✉t❙tr▲♥✱ ✶✷✻✱ ✶✺✺ ✱ ✷✻✱ ✶✽✹ q❝♦♥✐❞✱ ✶✺✱ ✶✻✷ q❝♦♥♦♣✱ ✷✻✱ ✶✽✹ q❝♦♥s②♠✱ ✶✺✱ ✶✻✷ q♦♣✱ ✷✻✱ ✷✾✱ ✶✽✹ qt②❝❧s✱ ✶✺✱ ✶✻✷ qt②❝♦♥✱ ✶✺✱ ✶✻✷ q✉❛❧✱ ✸✺✱ ✶✽✶ q✉❛❧✐❢✐❡❞ ♥❛♠❡✱ ✶✹✱ ✾✽✱ ✶✵✶ q✉❛❧✐❢✐❡r✱ ✸✺ q✉♦t✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✻ q✉♦t❘❡♠✱ ✶✷✶✱ ✶✸✻ q✈❛r✱ ✷✻✱ ✶✽✹ q✈❛r✐❞✱ ✶✺✱ ✶✻✷ q✈❛r♦♣✱ ✷✻✱ ✶✽✹ q✈❛rs②♠✱ ✶✺✱ ✶✻✷ q❝♦♥
❘❛♥❞♦♠ ✭❝❧❛ss✮✱ ✷✾✶ ❘❛♥❞♦♠ ✭♠♦❞✉❧❡✮✱ ✷✽✼ r❛♥❞♦♠✱ ✷✽✼✱ ✷✾✶ r❛♥❞♦♠ ❛❝❝❡ss ❢✐❧❡s✱ ✷✻✹ ❘❛♥❞♦♠●❡♥✱ ✷✽✽ r❛♥❞♦♠■❖✱ ✷✽✼✱ ✷✾✶ r❛♥❞♦♠❘✱ ✷✽✼✱ ✷✾✶ r❛♥❞♦♠❘■❖✱ ✷✽✼✱ ✷✾✶ r❛♥❞♦♠❘s✱ ✷✽✼✱ ✷✾✶ r❛♥❞♦♠s✱ ✷✽✼✱ ✷✾✶ r❛♥❣❡✱ ✷✶✼✱ ✷✶✾✱ ✷✷✵ r❛♥❣❡❙✐③❡✱ ✷✶✼✱ ✷✶✾✱ ✷✷✵ ❘❛t✐♦ ✭❞❛t❛t②♣❡✮✱ ✶✾✾
■◆❉❊❳
✸✵✻
❘❛t✐♦ ✭♠♦❞✉❧❡✮✱ ✶✸✸✱ ✶✾✾✱ ✷✵✶✱ ✷✶✵ ❘❛t✐♦♥❛❧ ✭t②♣❡ s②♥♦♥②♠✮✱ ✶✾✾✱ ✷✵✶
r❡❝✐♣✱
r❛t✐♦♥❛❧ ♥✉♠❜❡rs✱ ✶✾✾
r❡❢✉t❛❜❧❡ ♣❛tt❡r♥✱ ✹✽
❘❡❛❞
✭❝❧❛ss✮✱ ✶✶✹✱ ✶✺✶
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✾✵ ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r ✐♥st❛♥❝❡ ❢♦r
❬❛❪✱ ✶✺✹ ❆rr❛②✱ ✷✷✻ ❈❤❛r✱ ✶✺✹ ❉♦✉❜❧❡✱ ✶✺✸ ❋❧♦❛t✱ ✶✺✸ ■♥t❡❣❡r✱ ✶✺✸ ■♥t✱ ✶✺✸ ❘❛t✐♦✱ ✷✵✷
r❡❛❞✱ ✶✶✹✱ ✶✶✺✱ ✶✺✷ r❡❛❞❛❜❧❡✱ ✷✻✾ r❡❛❞❉❡❝✱ ✷✵✼✱ ✷✶✷ r❡❛❞❊s❝✱ ✷✹✻ r❡❛❞❋✐❧❡✱ ✶✷✼✱ ✶✺✻✱ ✷✻✶ r❡❛❞❋❧♦❛t✱ ✷✵✼✱ ✷✶✻ r❡❛❞❍❡①✱ ✷✵✼✱ ✷✶✷ r❡❛❞✐♥❣ ❛ ❞✐r❡❝t♦r②✱ ✷✼✶ r❡❛❞✐♥❣ ❢r♦♠ ❛ ❢✐❧❡✱ ✷✻✺
r❡❛❞■♥t✱ ✷✵✼✱ ✷✶✷ r❡❛❞■❖✱ ✶✷✻✱ ✶✺✻ r❡❛❞▲✐st✱ ✶✶✹✱ ✶✺✶✱ ✶✾✵ r❡❛❞▲✐t❈❤❛r✱ ✷✹✸✱ ✷✹✻ r❡❛❞▲♥✱ ✶✷✻✱ ✶✺✻ ❘❡❛❞▼♦❞❡✱ ✷✻✶ r❡❛❞❖❝t✱ ✷✵✼✱ ✷✶✷ r❡❛❞P❛r❡♥✱ ✶✺✷ ❘❡❛❞❙ ✭t②♣❡ s②♥♦♥②♠✮✱ ✶✶✹✱ ✶✺✶ r❡❛❞s✱ ✶✶✹✱ ✶✶✺✱ ✶✺✷ r❡❛❞❙✐❣♥❡❞✱ ✷✵✼✱ ✷✶✷ r❡❛❞sPr❡❝✱ ✶✶✹✱ ✶✺✶✱ ✶✾✵ ❘❡❛❞❲r✐t❡▼♦❞❡✱ ✷✻✶ ❘❡❛❧ ✭❝❧❛ss✮✱ ✶✶✾✱ ✶✷✶✱ ✶✸✺ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✶ s✉♣❡r❝❧❛ss ♦❢ ■♥t❡❣r❛❧✱ ✶✸✻ s✉♣❡r❝❧❛ss ♦❢ ❘❡❛❧❋r❛❝✱ ✶✸✼ ❘❡❛❧❋❧♦❛t ✭❝❧❛ss✮✱ ✶✷✷✱ ✶✷✹✱ ✶✸✽ ❘❡❛❧❋r❛❝ ✭❝❧❛ss✮✱ ✶✷✷✱ ✶✸✼ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✶ s✉♣❡r❝❧❛ss ♦❢ ❘❡❛❧❋❧♦❛t✱ ✶✸✽ r❡❛❧P❛rt✱ ✷✵✸✱ ✷✵✹ r❡❛❧❚♦❋r❛❝✱ ✶✷✷✱ ✶✷✹✱ ✶✸✾
✶✷✶✱ ✶✸✻
r❡❝✉rs✐✈❡ ❞❛t❛t②♣❡✱ ✻✻
❘❡❧❛t✐✈❡❙❡❡❦✱ ✷✻✹ r❡♠✱ ✼✾✱ ✶✷✵✱ ✶✷✶✱ ✶✸✹✱ ✶✸✻ r❡♠♦✈❡❉✐r❡❝t♦r②✱ ✷✻✾✱ ✷✼✵ r❡♠♦✈❡❋✐❧❡✱ ✷✻✾✱ ✷✼✵ r❡♠♦✈✐♥❣ ❞✐r❡❝t♦r✐❡s✱ ✷✼✵ r❡♠♦✈✐♥❣ ❢✐❧❡s✱ ✷✼✵
r❡♥❛♠❡❉✐r❡❝t♦r②✱ ✷✻✾✱ r❡♥❛♠❡❋✐❧❡✱ ✷✻✾✱ ✷✼✵
✷✼✵
r❡♥❛♠✐♥❣ ❞✐r❡❝t♦r✐❡s✱ ✷✼✶ r❡♥❛♠✐♥❣ ❢✐❧❡s✱ ✷✼✶
r❡♣❡❛t✱ ✶✹✼ r❡♣❧✐❝❛t❡✱ ✶✹✼ r❡s❡r✈❡❞✐❞✱
✶✷✱ ✶✻✷
r❡s❡r✈❡❞♦♣✱
✶✸✱ ✶✻✷
r❡t✉r♥✱ ✶✶✼✱ ✶✸✾ r❡✈❡rs❡✱ ✶✹✾ rexp i ✱ ✷✷✱ ✶✼✽ r❤s✱
✼✾✱ ✶✼✽
❘✐❣❤t✱ ✶✶✵ r♦✉♥❞✱ ✶✷✷✱ ✶✷✸✱ r♦✉♥❞❚♦✱ ✷✶✹ rpat i ✱ ✹✺✱ ✶✽✷
✶✸✼
s❝❛❧❡❋❧♦❛t✱ ✶✷✷✱ s❝❛❧❡❘❛t✱ ✷✶✶ s❝❛♥❧✱ ✶✹✻ s❝❛♥❧✶✱ ✶✹✻ s❝❛♥r✱ ✶✹✼ s❝❛♥r✶✱ ✶✹✼ s❝♦♥t❡①t✱
✶✸✽
✶✼✺
s❡❛r❝❤❛❜❧❡✱
✷✻✾
s❡❝t✐♦♥✱ ✶✹✱ ✸✵✱
s❡❡ ❛❧s♦
♦♣❡r❛t♦r ❛♣♣❧✐❝❛✲
t✐♦♥
❙❡❡❦❋r♦♠❊♥❞✱
✷✻✹
s❡❡❦✐♥❣ ❛ ❢✐❧❡✱ ✷✻✹
❙❡❡❦▼♦❞❡
✭❞❛t❛t②♣❡✮✱ ✷✺✻✱ ✷✻✹
s❡♠❛♥t✐❝s ❢♦r♠❛❧✱
ñì✳
❢♦r♠❛❧ s❡♠❛♥t✐❝s
s❡♠✐✲❝❧♦s❡❞ ❤❛♥❞❧❡s✱ ✷✻✵ s❡♣❛r❛t❡ ❝♦♠♣✐❧❛t✐♦♥✱ ✶✵✺
s❡q✱ ✶✶✵✱ ✶✸✹✱ ✶✹✵ s❡q✉❡♥❝❡✱ ✶✶✽✱ ✶✸✾
■◆❉❊❳
✸✵✼
s❡q✉❡♥❝❡❴✱ ✶✶✽✱ ✶✸✾ s❡t❈✉rr❡♥t❉✐r❡❝t♦r②✱ s❡tP❡r♠✐ss✐♦♥s✱ ✷✼✵ s❡t❙t❞●❡♥✱ ✷✽✽✱ ✷✾✷
s✐♠♣❧❡t②♣❡✱
✷✻✾✱ ✷✼✵
s✐♥❤✱
❞❡r✐✈❡❞ ✐♥st❛♥❝❡✱ ✼✸✱ ✶✾✵
❬❛❪✱ ✶✺✹ ✐♥st❛♥❝❡ ❢♦r ❆rr❛②✱ ✷✷✻ ✐♥st❛♥❝❡ ❢♦r ❈❤❛r✱ ✶✺✹ ✐♥st❛♥❝❡ ❢♦r ❉♦✉❜❧❡✱ ✶✺✸ ✐♥st❛♥❝❡ ❢♦r ❋❧♦❛t✱ ✶✺✸ ✐♥st❛♥❝❡ ❢♦r ❍❛♥❞❧❡P♦s♥✱ ✷✺✺ ✐♥st❛♥❝❡ ❢♦r ■♥t❡❣❡r✱ ✶✺✸ ✐♥st❛♥❝❡ ❢♦r ■♥t✱ ✶✺✸ ✐♥st❛♥❝❡ ❢♦r ❘❛t✐♦✱ ✷✵✷ s✉♣❡r❝❧❛ss ♦❢ ◆✉♠✱ ✶✸✺ s❤♦✇✱ ✶✶✹✱ ✶✶✺✱ ✶✺✶ s❤♦✇✷✱ ✷✽✶ s❤♦✇✷✬✱ ✷✽✶ s❤♦✇✸✱ ✷✽✶ s❤♦✇❈❤❛r✱ ✶✺✷ s❤♦✇❊❋❧♦❛t✱ ✷✵✼✱ ✷✶✷ s❤♦✇❋❋❧♦❛t✱ ✷✵✼✱ ✷✶✷ s❤♦✇❋❧♦❛t✱ ✷✵✼✱ ✷✶✷ s❤♦✇●❋❧♦❛t✱ ✷✵✼✱ ✷✶✷ s❤♦✇❍❡①✱ ✷✵✼✱ ✷✶✶ s❤♦✇■♥t✱ ✷✵✼✱ ✷✶✶ s❤♦✇■♥t❆t❇❛s❡✱ ✷✵✼✱ ✷✶✷ s❤♦✇▲✐st✱ ✶✶✹✱ ✶✺✶✱ ✶✾✵ s❤♦✇▲✐t❈❤❛r✱ ✷✹✸✱ ✷✹✼ s❤♦✇❖❝t✱ ✷✵✼✱ ✷✶✶ s❤♦✇P❛r❡♥✱ ✶✺✷ ❙❤♦✇❙ ✭t②♣❡ s②♥♦♥②♠✮✱ ✶✶✹✱ ✶✺✶ s❤♦✇s✱ ✶✶✹✱ ✶✶✺✱ ✶✺✷ s❤♦✇❙✐❣♥❡❞✱ ✷✵✼✱ ✷✶✶ s❤♦✇sPr❡❝✱ ✶✶✹✱ ✶✺✶✱ ✶✾✵ s❤♦✇❙tr✐♥❣✱ ✶✺✷ ✐♥st❛♥❝❡ ❢♦r
s✐❣♥✱ ✶✷✷ s✐❣♥❞❡❝❧✱
ñì✳
t②♣❡ s✐❣♥❛t✉r❡
✼✻
s✐❣♥✐❢✐❝❛♥❞✱ ✶✷✷✱ ✶✷✹✱ s✐❣♥✉♠✱ ✶✷✶✱ ✶✷✷✱ ✶✸✺
✶✸✽
s✐♠♣❧❡ ♣❛tt❡r♥ ❜✐♥❞✐♥❣✱ ✽✶✱ ✽✻✱ ✽✼ s✐♠♣❧❡❝❧❛ss✱
✻✵✱ ✶✼✺
✶✷✶✱ ✶✸✻
s✐③❡ ♦❢ ❢✐❧❡✱ ✷✻✷ s♠❛❧❧✱
✭❝❧❛ss✮✱ ✶✶✹✱ ✶✺✶
s✐❣♥❛t✉r❡✱
✶✷✶✱ ✶✸✻
s✐♥❡✱ ✶✷✸
s❡tt✐♥❣ t❤❡ ❞✐r❡❝t♦r②✱ ✷✼✶
❙❤♦✇
s✐♥✱
✻✸✱ ✻✻✱ ✻✼✱ ✶✼✻
✾✱ ✶✺✾
s♥❞✱ ✶✵✾✱ ✶✹✹ s♦rt✱ ✷✷✾✱ ✷✸✶✱ ✷✸✻ s♦rt❇②✱ ✷✷✾✱ ✷✸✸✱ ✷✸✻ s♣❛❝❡✱
s♣❛♥✱
✾✱ ✶✺✾ ✶✹✽
s♣❡❝✐❛❧✱
✾✱ ✶✺✾
s♣❧✐t✱ ✷✽✼✱ ✷✽✽ s♣❧✐t❆t✱ ✶✹✽ sqrt✱ ✶✷✶✱ ✶✸✻ st❛♥❞❛r❞ ❤❛♥❞❧❡s✱ ✷✻✵ st❛♥❞❛r❞ ♣r❡❧✉❞❡✱ ✶✵✹✱
st❞❡rr✱ ✷✺✻✱ ✷✻✵ ❙t❞●❡♥ ✭❞❛t❛t②♣❡✮✱ st❞✐♥✱ ✷✺✻✱ ✷✻✵ st❞♦✉t✱ ✷✺✻✱ ✷✻✵ st♠t✱
s❡❡ ❛❧s♦
Pr❡❧✉❞❡
✷✽✼✱ ✷✽✾
✸✾✱ ✶✽✶
st♠ts✱
✸✾✱ ✶✽✶
str✐❝t♥❡ss ❢❧❛❣✱ ✻✺ str✐❝t♥❡ss ❢❧❛❣s✱ ✶✶✵
❙tr✐♥❣
✭t②♣❡ s②♥♦♥②♠✮✱ ✶✵✽✱ ✶✹✶
str✐♥❣✱ ✶✵✼ ❧✐t❡r❛❧ s②♥t❛①✱ ✶✼ tr❛♥s♣❛r❡♥t✱ str✐♥❣✱
ñì✳
tr❛♥s♣❛r❡♥t str✐♥❣
✶✼✱ ✶✻✷
s✉❜tr❛❝t✱ s✉❝❝✱ ✶✸✺ s✉♠✱ ✶✹✾
✶✸✽
s✉♣❡r❝❧❛ss✱ ✻✾✱ ✼✵ s②♠❜♦❧✱
✾✱ ✶✺✾✱ ✶✻✷
s②♥♦♥②♠✱
ñì✳
t②♣❡ s②♥♦♥②♠
s②♥t❛①✱ ✶✺✼
❙②st❡♠ ✭♠♦❞✉❧❡✮✱ s②st❡♠✱ ✷✼✸ t❛❜✱
✷✼✸
✾✱ ✶✺✾
t❛✐❧✱ ✶✹✺ t❛✐❧s✱ ✷✷✾✱ ✷✸✶✱ t❛❦❡✱ ✶✹✼ t❛❦❡❲❤✐❧❡✱ ✶✹✽
✷✸✻
■◆❉❊❳
✸✵✽
t❛♥✱
t②♣❡✱ ✺✱ ✺✼✱ ✻✶
✶✷✶✱ ✶✸✻
t❛♥❣❡♥t✱ ✶✷✸
t❛♥❤✱ ✶✷✶✱ ✶✸✻ t❞❉❛②✱ ✷✼✻✱ ✷✼✽ t❞❍♦✉r✱ ✷✼✻✱ ✷✼✽ t❞▼✐♥✱ ✷✼✻✱ ✷✼✽ t❞▼♦♥t❤✱ ✷✼✻✱ ✷✼✽ t❞P✐❝♦s❡❝✱ ✷✼✻✱ ✷✼✽ t❞❨❡❛r✱ ✷✼✻✱ ✷✼✽ t❡r♠✐♥❛t✐♥❣ ❛ ♣r♦❣r❛♠✱ ✷✼✹ t❤❡ ❢✐❧❡ s②st❡♠✱ ✷✻✾
❚✐♠❡
✭♠♦❞✉❧❡✮✱ ✷✻✾✱ ✷✼✺✱ ✷✼✽
❛♠❜✐❣✉♦✉s✱ ❢✉♥❝t✐♦♥✱ ❧✐st✱
ñì✳
ñì✳
❧✐st t②♣❡
♥✉♠❡r✐❝✱
t✉♣❧❡✱
tr✐✈✐❛❧ t②♣❡
t✉♣❧❡ t②♣❡
✺✼✱ ✶✼✺
t②♣❡ ❝❧❛ss✱ ✺✱ ✺✻✱
ñì✳
t✐♠❡✱ ✷✼✺
t②♣❡ ❝♦♥str✉❝t♦r✱ ✻✹
t✐♠❡ ♦❢ ❞❛②✱ ✷✼✺
t②♣❡ ❡♥✈✐r♦♥♠❡♥t✱ ✻✶
t✐♠❡✶✷❋♠t✱ ✷✽✸✱ ✷✽✹ ❚✐♠❡❉✐❢❢ ✭❞❛t❛t②♣❡✮✱ ✷✼✻✱ ✷✼✽ t✐♠❡❋♠t✱ ✷✽✸✱ ✷✽✹ ❚✐♠❡▲♦❝❛❧❡ ✭❞❛t❛t②♣❡✮✱ ✷✽✸✱ ✷✽✹ t♦✶✷✱ ✷✽✵ t♦❈❛❧❡♥❞❛r❚✐♠❡✱ ✷✼✻✱ ✷✼✾ t♦❈❧♦❝❦❚✐♠❡✱ ✷✼✻✱ ✷✼✾ t♦❊♥✉♠✱ ✶✶✺✱ ✶✸✺ t♦■♥t❡❣❡r✱ ✶✸✻ t♦▲♦✇❡r✱ ✷✹✸✱ ✷✹✻ t♦♣❞❡❝❧ ✭❝❧❛ss✮✱ ✻✽ t♦♣❞❡❝❧ ✭❞❛t❛✮✱ ✻✸ t♦♣❞❡❝❧ ✭❞❡❢❛✉❧t✮✱ ✼✹ t♦♣❞❡❝❧ ✭✐♥st❛♥❝❡✮✱ ✼✶ t♦♣❞❡❝❧ ✭♥❡✇t②♣❡✮✱ ✻✼ t♦♣❞❡❝❧ ✭t②♣❡✮✱ ✻✻ t♦♣❞❡❝❧✱
✺✹✱ ✶✼✸
t♦♣❞❡❝❧s✱
✺✹✱ ✾✷✱ ✶✼✸
t♦❘❛t✐♦♥❛❧✱ ✶✷✶✱ ✶✷✸✱ ✶✸✺ t♦❯♣♣❡r✱ ✷✹✸✱ ✷✹✻ t♦❯❚❈❚✐♠❡✱ ✷✼✻✱ ✷✼✾ tr❛♥s♣♦s❡✱ ✷✷✾✱ ✷✸✶✱ ✷✸✺ tr✐❣♦♥♦♠❡tr✐❝ ❢✉♥❝t✐♦♥✱ ✶✷✸ tr✐✈✐❛❧ t②♣❡✱ ✸✹✱ ✺✾✱ ✶✵✾
❚r✉❡✱ ✶✵✼ tr✉♥❝❛t❡✱ ✶✷✷✱ tr②✱ ✷✺✼✱ ✷✻✽
✶✷✸✱ ✶✸✼
t✉♣❧❡✱ ✸✸✱ ✺✾✱ ✶✵✽ t✉♣❧❡ t②♣❡✱ ✺✾ t②❝❧s✱
✶✹✱ ✻✵✱ ✶✻✷
t②❝♦♥✱
✶✹✱ ✶✻✷
♠♦♥♦♠♦r♣❤✐❝ t②♣❡
♣r✐♥❝✐♣❛❧ t②♣❡
ñì✳
ñì✳
ñì✳
ñì✳
♥✉♠❡r✐❝ t②♣❡
ñì✳
♣r✐♥❝✐♣❛❧✱
t②♣❡✱
❝♦♥str✉❝t❡❞ t②♣❡
❢✉♥❝t✐♦♥ t②♣❡
ñì✳
♠♦♥♦♠♦r♣❤✐❝✱
tr✐✈✐❛❧✱
❛♠❜✐❣✉♦✉s t②♣❡
ñì✳
❝♦♥str✉❝t❡❞✱
t②♣❡ ❡①♣r❡ss✐♦♥✱ ✺✽ t②♣❡ r❡♥❛♠✐♥❣✱
ñì✳
❝❧❛ss
♥❡✇t②♣❡
❞❡❝❧❛r❛t✐♦♥
t②♣❡ s✐❣♥❛t✉r❡✱ ✻✷✱ ✼✷✱ ✼✻ ❢♦r ❛♥ ❡①♣r❡ss✐♦♥✱
ñì✳
❡①♣r❡ss✐♦♥ t②♣❡✲
s✐❣♥❛t✉r❡ t②♣❡ s②♥♦♥②♠✱ ✻✻✱ ✼✶✱ ✾✺✱
s❡❡ ❛❧s♦
t②♣❡ r❡❝✉rs✐✈❡✱ ✻✻ t②✈❛r✱
✶✹✱ ✻✵✱ ✶✻✷
✉♥❝✉rr②✱ ✶✵✾✱ ✶✹✹ ✉♥❞❡❢✐♥❡❞✱ ✷✺✱ ✶✹✹ ✉♥❢♦❧❞r✱ ✷✷✾✱ ✷✸✻ ❯♥✐❝♦❞❡ ❝❤❛r❛❝t❡r s❡t✱ ✽✱ ✶✽
❯♥✐❝♦❞❡Pr✐♠s ✉♥✐❉✐❣✐t✱
✭♠♦❞✉❧❡✮✱ ✶✸✸✱ ✷✹✺
✾✱ ✶✺✾
✉♥✐▲❛r❣❡✱
✾✱ ✶✺✾
✉♥✐❙♠❛❧❧✱
✾✱ ✶✺✾
✉♥✐♦♥✱ ✷✷✽✱ ✷✸✵✱ ✷✸✺ ✉♥✐♦♥❇②✱ ✷✷✽✱ ✷✸✸✱ ✷✸✺ ✉♥✐❙②♠❜♦❧✱
✾✱ ✶✺✾
✉♥✐t ❞❛t❛t②♣❡✱
ñì✳
tr✐✈✐❛❧ t②♣❡
✉♥✐t ❡①♣r❡ss✐♦♥✱ ✸✸ ✉♥✐❲❤✐t❡✱
✾✱ ✶✺✾
✉♥❧❡ss✱ ✷✹✾✱ ✷✺✸ ✉♥❧✐♥❡s✱ ✶✹✾ ✉♥t✐❧✱ ✶✵✾✱ ✶✹✹ ✉♥✇♦r❞s✱ ✶✹✾ ✉♥③✐♣✱ ✶✺✵ ✉♥③✐♣✸✱ ✶✺✵ ✉♥③✐♣✹✱ ✷✷✾✱ ✷✸✸✱
✷✸✽
❞❛t❛✲
■◆❉❊❳
✸✵✾
✉♥③✐♣✺✱ ✷✷✾✱ ✷✸✾ ✉♥③✐♣✻✱ ✷✷✾✱ ✷✸✾ ✉♥③✐♣✼✱ ✷✷✾✱ ✷✸✾ ✉s❡r❊rr♦r✱ ✶✷✾✱ ✶✺✺ ✈❛❧❞❡❢s✱
✼✶
✈❛❧✉❡✱ ✺
✈❛r✱ ✷✺✱ ✷✻✱ ✶✽✹ ✈❛r✐❞✱ ✶✷✱ ✶✹✱ ✶✻✷ ✈❛r♦♣✱ ✷✺✱ ✷✻✱ ✶✽✹ ✈❛rs✱ ✺✹✱ ✼✻✱ ✶✼✸ ✈❛rs②♠✱ ✶✸✱ ✶✻✷ ✈❡rt❛❜✱ ✾✱ ✶✺✾
✇❤❡♥✱ ✷✹✾✱ ✷✺✸ ✇❤✐t❡❝❤❛r✱ ✾✱ ✶✺✾ ✇❤✐t❡s♣❛❝❡✱ ✾✱ ✶✺✾ ✇❤✐t❡st✉❢❢✱ ✾✱ ✶✺✾
✇✐❧❞❝❛r❞ ♣❛tt❡r♥ ✭❴✮✱ ✹✻
✇♦r❞s✱ ✶✹✽ ✇r✐t❛❜❧❡✱ ✷✻✾ ✇r✐t❡❋✐❧❡✱ ✶✷✼✱ ❲r✐t❡▼♦❞❡✱ ✷✻✶
✶✺✻✱ ✷✻✶
③✐♣✱ ✶✵✾✱ ✶✺✵ ③✐♣✸✱ ✶✺✵ ③✐♣✹✱ ✷✷✾✱ ✷✸✸✱ ✷✸✽ ③✐♣✺✱ ✷✷✾✱ ✷✸✽ ③✐♣✻✱ ✷✷✾✱ ✷✸✽ ③✐♣✼✱ ✷✷✾✱ ✷✸✽ ③✐♣❲✐t❤✱ ✶✺✵ ③✐♣❲✐t❤✸✱ ✶✺✵ ③✐♣❲✐t❤✹✱ ✷✷✾✱ ✷✸✸✱ ✷✸✽ ③✐♣❲✐t❤✺✱ ✷✷✾✱ ✷✸✽ ③✐♣❲✐t❤✻✱ ✷✷✾✱ ✷✸✽ ③✐♣❲✐t❤✼✱ ✷✷✾✱ ✷✸✽ ③✐♣❲✐t❤▼✱ ✷✹✾✱ ✷✺✹ ③✐♣❲✐t❤▼❴✱ ✷✹✾✱ ✷✺✹