cryptol/docs/chop.hs
2022-06-13 15:56:15 -07:00

28 lines
734 B
Haskell
Executable File

#!/usr/bin/env runhaskell
-- |
-- Module : Main
-- Copyright : (c) 2013-2016 Galois, Inc.
-- License : BSD3
-- Maintainer : cryptol@galois.com
-- Stability : provisional
-- Portability : portable
{- A utility for spliting a long column of stuff into multiple columns. -}
import Data.List(transpose,sort)
rs = 4 -- number of rows per column
spacing = 4 -- blanks between columns
main = interact (unlines . map concat . transpose . map toCol . chop rs . sort . lines)
colWidth xs = spacing + maximum (0 : map length xs)
padTo x xs = xs ++ replicate (x - length xs) ' '
toCol xs = map (padTo (colWidth xs)) xs
chop n [] = []
chop n xs = let (as,bs) = splitAt n xs
in as : chop n bs