A Mercury programozási nyelv

Változók hatásköre

Háromféle változót különböztetünk meg Mercury-ban: szokásos változót, típus változót és inst változót.

Type deklarációkban belőforduló változókat típus változóknak nevezzük. Inst vagy Mode deklarációban előforduló változókat inst változóknak nevezzük. Azokat a változókat, amik adat-termekben fordulnak elő, és nem inst vagy típus változók, szokásos változóknak nevezzük.

(Típus változók az adat-termekben levő explicit típus kvantifikáció jobb-oldali [Type] operandusaként fordulhatnak elő. Inst változók az adat-termekben levő explicit mód kvantálás jobb-oldali [Mode] operandusaként fordulhatnak elő. Ezektől eltekintve az adat-termekben előforduló más változók szokásos változók.)

A három különböző változóosztály különböző névtereket foglalnak el: még akkor sincs semmilyen szemantikai kapcsolat két különböző osztályba tartozó változó (pl. egy típus változó és egy szokásos változó) között, ha azonos a nevük. (Mégis, programozási stílus szempontjából általánosan rossz dolog lenne ugyanolyan nevű, de különböző osztályba tartozó változókat használni ugyanazon a klózon belül.)

A szokásos változók hatásköre az a klóz vagy deklaráció, amelyben előfordulnak, egészen addig, míg kvantáltakká válnak, akár explicit (lásd Célok), akár implicit (lásd Implicit kvantálás) módon.

A típusváltozók hatásköre egy predikátum vagy függvény típus deklarációjában kiterjed a predikátum vagy a függvény klózaiban előforduló explicit típus kvantálásokra (lásd Explicit típus minősítések), és a predikátumra vagy függvényre vonatkozó pragma type_spec (lásd Type specialization) deklarációkra, így az explicit típus minősítések és a pragma type_spec deklarációk hivatkozhatnak azokra a típusváltozókra. Azoknak a típusváltozóknak a hatásköre, melyek olyan explicit típus minősítésben szerepelnek, amik nem fodulnak elő a predikátum vagy a függvény típusdeklarációjában, az a klóz, melyben a típusváltozó előfordul.

Az inst változók hatásköre az a klóz vagy deklaráció, melyben előfordulnak.