Можно ли установить охрану лямбда-функций?
Например:
\k
| k < 0 -> "negative"
| k == 0 -> "zero"
| otherwise -> "positive"
Нет. Ближайший прямой перевод - это что-то вроде
\k -> case () of
_ | k < 0 -> "negative"
| k == 0 -> "zero"
| otherwise -> "positive"
Мне нравится делать лямбды короткими и приятными, чтобы не нарушать визуальный поток читателя. Для функции, определение которой синтаксически достаточно громоздко, чтобы требовать внимания, почему бы не поместить ее в предложение where
?
showSign k = mysign ++ " (" ++ show k ++ ")"
where
mysign
| k < 0 = "negative"
| k == 0 = "zero"
| otherwise = "positive"