Здравствуйте, я новичок в Haskell и думаю, что моя проблема проста, но важна для меня.
Это работает:
module Main where
main :: IO ()
main = do
inp <- getLine
let output i | odd i = "Alice" | even i = "Bob" | otherwise = "Weird"
putStrLn (output (read inp))
Это не работает
module Main where
main :: IO ()
main = do
inp <- getLine
let output i
| odd i = "Alice"
| even i = "Bob"
| otherwise = "Weird"
putStrLn (output (read inp))
Что я знаю: внутри вы пишете «let» или «let» перед каждой объявленной функцией, а вы не пишете «in». Также, когда я писал вывод как нелокальную функцию, она работала.
Что я не так понял?
edit: вы бы порекомендовали написать так?
module Main where
main :: IO ()
main = do
inp <- getLine
let
output i
| odd i = "Alice"
| even i = "Bob"
putStrLn (output (read inp))