RosettaCodeData/Task/Binary-digits/Haskell/binary-digits-2.hs

24 lines
505 B
Haskell

import Data.Bifunctor (first)
import Data.List (unfoldr)
import Data.Tuple (swap)
---------------------- BINARY DIGITS ---------------------
binaryDigits :: Int -> String
binaryDigits = reverse . unfoldr go
where
go 0 = Nothing
go n = Just . first ("01" !!) . swap . quotRem n $ 2
--------------------------- TEST -------------------------
main :: IO ()
main =
mapM_
( putStrLn
. ( ((<>) . (<> " -> ") . show)
<*> binaryDigits
)
)
[5, 50, 9000]