33 lines
692 B
Haskell
33 lines
692 B
Haskell
import Data.Char (chr)
|
|
import Data.List (transpose)
|
|
import Data.List.Split (chunksOf)
|
|
import Text.Printf (printf)
|
|
|
|
----------------------- ASCII TABLE ----------------------
|
|
|
|
asciiTable :: String
|
|
asciiTable =
|
|
unlines $
|
|
(printf "%-12s" =<<)
|
|
<$> transpose
|
|
(chunksOf 16 $ asciiEntry <$> [32 .. 127])
|
|
|
|
asciiEntry :: Int -> String
|
|
asciiEntry n
|
|
| null k = k
|
|
| otherwise = concat [printf "%3d" n, " : ", k]
|
|
where
|
|
k = asciiName n
|
|
|
|
asciiName :: Int -> String
|
|
asciiName n
|
|
| 32 > n = []
|
|
| 127 < n = []
|
|
| 32 == n = "Spc"
|
|
| 127 == n = "Del"
|
|
| otherwise = [chr n]
|
|
|
|
|
|
--------------------------- TEST -------------------------
|
|
main :: IO ()
|
|
main = putStrLn asciiTable
|