[Haskell-cafe] How to write elegant Haskell programms? (long posting)

Eric Mertens emertens at gmail.com
Mon Jan 29 18:30:41 EST 2007


-- here was my original before I allowed someone (no names) to mangle
mine for me ;)

import Control.Monad (liftM, forM_)
import Directory (getModificationTime, renameFile)
import Text.Printf (printf)
import System.FilePath ((</>),(<.>))
import System.Locale (defaultTimeLocale)
import System.Path.Glob (glob)
import System.Time (toUTCTime, formatCalendarTime, getClockTime, ClockTime)

basenames = ["mail.log", "thttpd.log" ]
logdir    = "/var/log"

main =
  forM_ basenames $ \ basename -> do
    oldnames <- glob (logdir </> basename <.> "*.gz")
    forM_ oldnames $ \ oldname -> do
      now <- timestamp oldname
      let newname = logdir </> "archive" </> basename <.> now <.> "gz"
      printf "mv %s %s" oldname newname
      renameFile oldname newname

timestamp path = do
  t <- getModificationTime path
  return $ formatCalendarTime defaultTimeLocale "%Y%m%d" $ toUTCTime t


More information about the Haskell-Cafe mailing list