[Haskell-cafe] avoid to print empty string
MarLinn
monkleyon at gmail.com
Mon Jan 21 21:47:05 UTC 2019
> i have this in a Monad IO:
>
> forM_ fltrdNamesBDs $ \(name,bdSidonie,bdWDS) ->
> if (bdWDS /= bdSidonie)
> then
> putStrLn $ name ++ " " ++ (show (bdSidonie :: Maybe Float))
> ++ " " ++ show (bdWDS :: Maybe Float) ++ " " ++ show (bdWDS == bdSidonie)
> else
> putStr ""
>
> is there a way to remove the silly putStr "" that output an empty string, i
> tried with when.... but as when return Nothing in case of False it fails to
> compile
I don't see the problem with when? This (in the expanded version)
doesn't work?
forM_ fltrdNamesBDs $ \(name,bdSidonie,bdWDS) -> when (bdWDS /= bdSidonie) $ showStuff name bdSidonie bdWDS
As an extra remark, whenever I want to output a whole bunch of stuff in
a row like this, I like to refactor into a concat, just to make the code
more readable. If I can factor out the types, all the better:
where
showStuff :: String -> Maybe Float -> Maybe Float -> IO ()
showStuff name bdSidonie bdWDS = putStrLn $ concat [name," ",show bdSidonie," ",show bdWDS," False"]
Or even
showStuff :: String -> Maybe Float -> Maybe Float -> IO ()
showStuff name bdSidonie bdWDS = putStrLn $ Data.List.intercalate " " [name,show bdSidonie,show bdWDS,show False]
Cheers.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20190121/d16e3eee/attachment.html>
More information about the Haskell-Cafe
mailing list