Защитники Хаскелла можно рассматривать как математическую функцию, определенную кусочно над входом.
foo x | x < 0 = bar
| x < 5 = baz
| x < 20 = quux
| otherwise = quaffle
будет записываться математиком как:Функция Haskell неявно несет отрицание всех охранников, которые ей предшествуют, потому что их пробуют один за другим.
Haskell решает написать охранника слева от знака равенства, чтобы было легче следоватьконтролировать поток.Если вы решили прочитать |как «такой, что», тогда он становится довольно интуитивным.