Ответ 1
Да, используя предложение where
:
solveLogic a b
| a >= x = 1
| a == b = 333
| otherwise = 5
where
x = 1
Иногда я пишу код, подобный этому
solveLogic :: Int -> Int -> Int
solveLogic a b =
let
x = 1
brainiac
| a >= x = 1
| a == b = 333
| otherwise = 5
in
brainiac
И каждый раз, когда я хочу писать это без ненужной функции "brainiac", вот так:
solveLogic :: Int -> Int -> Int
solveLogic a b =
let
x = 1
in
| a >= x = 1
| a == b = 333
| otherwise = 5
Какой код намного больше "Haskellish". Есть ли способ сделать это?
Да, используя предложение where
:
solveLogic a b
| a >= x = 1
| a == b = 333
| otherwise = 5
where
x = 1
Когда я хочу охранников как выражение, я использую этот несколько уродливый хак
case () of
_ | a >= x -> 1
| a == b -> 333
| otherwise -> 5