Я создал функцию, в которой могу использовать (насколько насколько я знаю) случайные выражения или охранники.
foo a b c = case a of 1 -> [...]
2 -> [...]
3 -> [...]
[...]
otherwise -> error "..."
или
foo a b c | a == 1 = [...]
| a == 2 = [...]
| a == 3 = [...]
| [...]
| otherwise = error "..."
Итак, вопрос: какой из этих двух (корпус или охранник) кодируется «лучше»? Оба в основном одинаковы?