A védelem ( őrkifejezés , őrkifejezés ) egy logikai kifejezés , amelynek célja a számítási folyamatok korlátozása és a számítási opció kiválasztása. Általában funkcionális programozási nyelvekben használják (pl . Haskell , Erlang ) [1] .
Minden ezt követő őrkifejezés a Haskell funkcionális nyelven van , amely nagyon gyakran használja ezt a technológiát. Minden ilyen kifejezés félkövérrel van kiemelve a kódokban .
A függvény az adott szám osztóinakdivisors listáját adja vissza . A definíció második sora egy őrt mutat, amely az osztók listájának egy elemének kiválasztását csak olyan értékre korlátozza, amely az eredeti paramétert maradék nélkül osztja. nxn
osztók n = [x | x <- [1..(n - 1)], n `mod` x == 0 ]A függvény signa megadott szám előjelét adja vissza x. Az őr kifejezéseket a szimbólumok ( ) mögé írjuk |. Lehetővé teszik egy vagy másik alternatíva kiválasztását egy szám előjelének kiszámításakor. Ezt a tárolási módot gyakran használják a mintaillesztési mechanizmus helyett, amikor a függvényben nincs mód a minta kifejezett leírására (például ha a függvény egy általános alkalmazásfüggvény valamilyen típusú , például példány értékeinek feldolgozására valamelyik osztályból).
jel x | x < 0 = -1 | x == 0 = 0 | x > 0 = 1Az őrzés lehetővé teszi, hogy érvénytelen egyező kifejezés esetén továbblépjünk a következőre. Ha az előző példa mintaillesztési operátorként van formázva, akkor az x = 0első egyezés ( x < 0) hibát okoz, amelynek kezelője leállítja a további egyeztetési kísérleteket. Ezenkívül abban az esetben, ha nem minden kifejezés igaz, célszerű az ilyen helyzeteket az azonnali igazságérték beállításával megragadni True. Az olvashatóság érdekében a Prelude standard könyvtára biztosítja az egyébként állandót, ami még inkább kapcsolónak tűnik az algoritmikus nyelvekben.