Az Euphoria Programozási nyelv (v2.3)

Helyesség

Helyességbizonyítás

A nyelv nem támogatja a helyességbizonyítást.

Valami ellenõrzés azért mégis van. A típusdefiníció mint láttuk tulajdonképpen egy speciális függvénydeklaráció, ami egy tetszõleges értékhez egy logikai értéket rendel. Ez a logikai érték azt jelzi, hogy az ellenõrzött tetszõleges érték eleme-e a típusnak, így igazából egy típusinvariánst kell megfogalmaznunk.

Ha a típustól további típust származtatunk, akkor az új invariáns csak szigoríthatja a régit, mert a régi invariánst is ellenõrzi a rendszer még mielõtt az új invariáns kódja lefutná. A rendszer eleganciáját jelzi hogy ehhez nem vezettek be egy újabb szabályt, mert következik az "értékadáskor ellenõrzünk" szabályból. Az új invariáns egyetlen paramétere õstípus típusúnak van deklarálva és érékadás is történik, tehát lefut az õstípus ellenõrzése, mielõtt a gyermektípusé lefutna.

Írhatunk továbbá assert() jellegû függvényeket, amik paraméterük igazságértékétõl függõen futásidejû hibát okoznak, vagy nem csinálnak semmit.

Érdekes lenne a sympel csomagot kibõvíteni öröklõdõ elõ/utófeltételekkel, és osztályinvariánsokkal.