A Theta programozási nyelv

Rutinok

Chapter 1

A rutinok (procedúrák és iterációk) immutabe típusúak. Nekik csak "equal", "similar", "copy" és "unparse" metódusaik vannak. Az "equal" és "similar" metódusoknak gyönge definíciójuk van. A struktúrák és gyűjtemények, amelyek tartalmaznak rutin típust, rendelkezhetnek ezekkel a metódusokkal. Például. a "record" típus:

record[i: int, p: proc(int) returns(int)]

rendelkezni fog "equal" és "similar" metódusokkal, mert mindkét mezőtípusa rendelkezik ezekkel a metódusokkal.

A "rt" rutin típus metódusai:

  equal (p: rt) returns (bool)
similar (p: rt) returns (bool)
% Ha a hívás igaz értékkel tér vissza, akkor garantált, hogy self és p megkülönböztethetetlenek:
% Ugyanazokkal a visszatérési értékekkel rendelkeznek, ha megegyező (equal) argumentumokkal hívtuk őket, és
% ugyanazokkal a mellékhatásokkal is rendelkeznek.
% Ha az equal vagy similar hívása hamis értékkel tér vissza, akkor semmi sincs szavatolva:
% self és p vagy megkülönböztethetők vagy nem.
 
copy ( ) returns (rt)
% önmagát adja vissza.
 
unparse ( ) returns (string)
% Egy sztringet ad vissza, amely megmutatja hogy ez a rutin procedúra vagy iterátor.
% A rutin megvalósítása kötetlen, így beletehetünk a sztringbe több információt a rutinról
% (például a rutin szignatúráját).
 

Kiegészítő típusok és rutinok

A beépített típusok és rutinok kiegészítései megtalálhatók, valószínűnek tartjuk, hogy a legtöbb Theta implementációt ellátják más használható típusok és rutinok szabványos halmazával. (a "szabványost" abban az értelemben használjuk, hogy a legtöbb implementációban megtalálható; A Theta implementációknak nem kell rendelkezniük ezen más típusok bármelyikével is)

A standard típusok és rutinok implementálására használhatjuk a beépített típusokat és rutinokat. Ezeknek nincs speciális helyzetük a nyelvben. Azonban, a Theta megvalósítása lehetővé teszi, hogy inkább közvetlenül hozzunk létre típusokat és rutinokat mint a beépítettekre építsük. Ezért ezek a típusok és rutinok, ha rendelkezésre állnak, akkor még hatékonyabbak mint a neki megfelelő felhasználó által definiált típusok és rutinok.

A standard típusok és rutinok teljes halmazát nem határoztuk meg. A tájékoztató kézikönyv egy jövőbeli verziójában megtalálható lesz a teljes lista. Előreláthatólag lesz benne néhány elemző rutin (sztring konverziója a beépített típusokra). Két típus ami benne lesz a "set" (halmaz) és a "bag" (zsák, multiset).