import Data.List (foldl', transpose)
import qualified Data.ByteString.Char8 as C
import qualified Data.Map as M
import System.Environment (getArgs)

xpose name = do
    sheet <- (transpose
           .      {-# SCC "split" #-} map (C.split ',')
           .      {-# SCC "lines" #-} C.lines)
           `fmap` {-# SCC "read" #-}  C.readFile name
    let m = foldl' go M.empty sheet
    print (M.size m)
  where go m (x:xs) = {-# SCC "go" #-} M.insert x xs m

main = getArgs >>= mapM_ xpose
