#!/usr/bin/runhaskell
import System.Directory
import Data.List

dirA :: FilePath
dirA = "/tmp/foo"

dirB :: FilePath
dirB = "/tmp/bar"

main :: IO ()
main = do
    dirAContents <- getDirectoryContents dirA
    dirBContents <- getDirectoryContents dirB
    -- dirAContents minus the elements of dirBContents
    let missingFiles = dirAContents \\ dirBContents
    putStrLn ("Files to be deleted:")
    mapM_ putStrLn missingFiles
    mapM_ (removeFile . ((dirA ++ "/") ++)) missingFiles

{- Sample run:

% ls /tmp/foo; ls /tmp/bar; /tmp/remove-nonexistant-files.hs; ls /tmp/foo
a  b  c  d  e
a  c  e
Files to be deleted:
b
d
a  c  e

-}
-- vim: tw=80
