import CSVParser import DataModel import ExtractRules import qualified Data.Set as Set import System.Environment(getArgs) import Control.Monad(when) main :: IO() main = do args <- getArgs when (3 /= length args) (error "Usage: phase2 ") let threshold = read $ last args tableFile <- readFile $ head args freqFile <- readFile $ args !! 1 case parseCSV tableFile of Left _ -> error "Could not parse table" Right tableFileContent -> case parseCSV freqFile of Left _ -> error "Could not parse frequent patterns" Right freqFileContent -> do putStrLn output when (length args > 2) $ writeFile (args !! 2) $ output where freqPats = map (ItemSet. Set.fromList .map Item) (map tail freqFileContent) table = map (ItemSet. Set.fromList .map Item) tableFileContent rules = extractRules threshold table freqPats output = init $ foldr (\x old -> old++x++"\n") "" $ map show rules