Suojaus ( suojalauseke , vartijalauseke ) on looginen lauseke , jonka tarkoituksena on rajoittaa laskentaprosesseja ja valita laskentavaihtoehto. Yleensä käytetään toiminnallisissa ohjelmointikielissä (esim . Haskell , Erlang ) [1] .
Kaikki myöhemmät suojalausekkeet ovat toiminnallisella kielellä Haskell , joka käyttää tätä tekniikkaa hyvin usein. Kaikki tällaiset lausekkeet on korostettu lihavoituina koodeissa .
Funktio divisors palauttaa luettelon annetun luvun jakajistan . Määritelmän toisella rivillä on vartija, joka rajoittaa jakajaluettelon elementin valinnan xvain sellaiseen arvoon, joka jakaa alkuperäisen parametrin nilman jäännöstä.
jakajat n = [x | x <- [1..(n - 1)], n "mod" x == 0 ]Funktio signpalauttaa annetun luvun etumerkin x. Vartijalausekkeet kirjoitetaan symbolien ( |) jälkeen. Niiden avulla voit valita yhden tai toisen vaihtoehdon laskettaessa luvun etumerkkiä. Tätä tallennustapaa käytetään usein mallinsovitusmekanismin sijasta, kun funktiossa ei ole mahdollista kuvata selkeästi kuviota (esimerkiksi jos funktio on yleinen sovellusfunktio jonkin tyyppisten arvojen käsittelyyn, joka on instanssi jostain luokasta).
merkki x | x < 0 = -1 | x == 0 = 0 | x > 0 = 1Vartiointi mahdollistaa virheellisen vastaavuuslausekkeen sattuessa siirtymisen seuraavaan. Jos edellinen esimerkki on muotoiltu mallinsovitusoperaattoriksi, niin x = 0ensimmäinen vastaavuus ( x < 0) aiheuttaa virheen, jonka käsittelijä lopettaa jatkoyritykset täsmäämiseen. Lisäksi siinä tapauksessa, että kaikki lausekkeet eivät ole tosia, on kätevää saada sellaiset tilanteet kiinni asettamalla välitön totuusarvo True. Luettavuuden vuoksi Prelude-standardikirjasto tarjoaa muuten vakion, joka näyttää vieläkin enemmän kytkimeltä algoritmisissa kielissä.