data Problem = DuplicateFile FilePath
| ExtraFile FilePath
+ | ExtraWay String
| PermissionsChanged FilePath FilePath String String
| FileSizeChanged FilePath FilePath Integer Integer
+isSizeChange :: FileProblem -> Bool
+isSizeChange (Change (FileSizeChanged {})) = True
+isSizeChange _ = False
+
pprFileProblem :: FileProblem -> String
pprFileProblem (First p) = "First " ++ pprProblem p
pprFileProblem (Second p) = "Second " ++ pprProblem p
pprProblem :: Problem -> String
pprProblem (DuplicateFile fp) = "Duplicate file: " ++ show fp
pprProblem (ExtraFile fp) = "Extra file: " ++ show fp
+pprProblem (ExtraWay w) = "Extra way: " ++ show w
pprProblem (PermissionsChanged fp1 fp2 p1 p2)
= "Permissions changed:\n"
++ " " ++ show fp1