A Shakespeare programozási nyelv

Egy még összetettebb példa

A nyelv eddigi leírása alapján akár azt is mondhatnánk, hogy messze bármi megoldható vele, ami más programnyelvekkel megoldható, noha sokkal terjengősebb, a tárolási kapacitásról ez már messze nem mondható. Csak néhány száz Shakespeare által megalkotott és a parser által is felismert szereplő van a nyelvben, és mindegyikük csupán egy korlátozott nagyságú egész számot képes tárolni. Így az SPL nyelven írt programok kizárólag erősen korlátozott memóriamennyiséget igénylő feladatok megoldására képesek.

Ezt a korlátozottságot felismerve a szerzők vermet is implementáltak, amely az SPL-programokban használhatók. Hamarosan szó esik róluk, azonban nézzük meg előbb, hogyan kell őket használni Shakespeare-módra. A 3. példaprogram beolvas néhány karaktert, majd kiírja őket fordított sorrendben.

Vermek

A Shakespeare programozási nyelv karakterei (szereplői) nem gyengeelméjűek, nem csak egy számot tudnak fejben tartani. Ugyanúgy, mint a hétköznapi emberek, több számot is tudnak memorizálni. A modern tudományos pszichológiai kutatásokeredményeit figyelembe véve ez a visszaemlékezés verem segítségével valósult meg.

Minden szereplő meg tud jegyezni egész számokat és később ki is tudja venni őket. A memorizálás valahogy így történik:

Lady Macbeth:
 Remember me.

Ez természetesen azt eredményezi, hogy akárkihez is beszél Lady Macbeth, ő Lady Macbethet bevési az emlékezetébe, mint verembe. A kivétel a memóriaveremből sokkal egyszerűbb:

Lady Macbeth:
 Recall your imminent death!

Itt az egyetlen lényeges kulcsszó a "recall" (felidéz); minden, ami utána van, csak művészi szösszenet. Ez a kódrészlet azt eredményezi, hogy akárkihez is beszél Lady Macbeth, ő kiveszi a memória-verméből a legutoljára megjegyzett számot és felveszi annak értékét.

Üres veremből kivenni bármit is azt jelenti, hogy a történetíró mesélőkészségén még van mit csiszolni, amit persze a programot futtató környezet is csalódásként él meg.