Охуенная монада List
#!/usr/bin/env runhaskell
import Control.Monad (guard)
main :: IO ()
main = sequence_ $ do
name <- ["vasya", "petya", "world"]
entities <- if name == "vasya" then ["messages", "posts"] else ["messages"]
count <- [1..5] :: [Integer]
guard ((entities == "messages") || (count < 3))
return $ do
putStrLn $ "Hello, " ++ name
putStrLn $ show count ++ " " ++ entities ++ " for you"
Вместо тысячи each
Уровень влженности?
Кого это ебет. Сегодня по работе писал тройной цикл с гвардами (используя
next if ...
, как завещал
bbatsov), никакого сравнения
ни в красоте, ни, если уж на то пошло, в читаемости.
Впрочем
#!/usr/bin/env runhaskell
import Control.Monad (guard)
main :: IO ()
main = sequence_ $
["vasya", "petya", "world"] >>= \name ->
(if name == "vasya" then ["messages", "posts"] else ["messages"]) >>= \entities ->
([1..5] :: [Integer]) >>= \count ->
guard ((entities == "messages") || (count < 3)) >>
return (
putStrLn ("Hello, " ++ name) >>
putStrLn (show count ++ " " ++ entities ++ " for you")
)
Без do-нотации уже не то, выглядит как код, который пришлось писать на руби. Жаль, в руби do-нотацию не внедрить нормально :(