Язык и библиотеки Haskell 98. Исправленное описание

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

ßçûê è áèáëèîòåêè ❍❛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❤▼❴✱ ✷✹✾✱ ✷✺✹