Non-decimal radices/Output: Difference between revisions

m
→‎{{header|Haskell}}: (Minor tidying)
No edit summary
m (→‎{{header|Haskell}}: (Minor tidying))
Line 603:
 
Or, generalising and tabulating a little:
<lang haskell>import Data.MonoidList ((<>)unfoldr, transpose, intercalate)
import Data.Array (Array, listArray, (!))
import Data.ListMonoid (unfoldr, transpose, intercalate(<>))
 
 
-- ARBITRARY RADICES ----------------------------------------------------------
bases :: [Int]
bases = abs <$> [2, 7, 8, 10, 12, 16, 32]
Line 627 ⟶ 628:
in Just (digits ! r, q)
 
-- TEST AND TABULATION---------------------------------------------------------
table :: String -> [[String]] -> [String]
table delim rows =
intercalate delim <$>
transpose
((fmap =<< flip justifyRight ' ' . maximum . fmap length) <$> transpose rows)
((\col ->
 
let width = maximum (length <$> col)
justifyRight n:: cInt s-> =Char drop (length s) (replicate n-> cString <-> s)String
justifyRight n c s = drop (length s) (replicate n c <> s)
in justifyRight width ' ' <$> col) <$>
transpose rows)
 
main :: IO ()
Line 642:
mapM_
putStrLn
(table " " (([(fmap show, fmap <$>), (const "----" <$>)] <*> [bases]) <> tableRows))</lang>
{{Out}}
<pre> 2 7 8 10 12 16 32
9,655

edits