29 lines
1.0 KiB
Haskell
29 lines
1.0 KiB
Haskell
import CSVParser
|
|
import FrequentPatterns
|
|
import DataModel
|
|
import qualified Data.Set as Set
|
|
import System.Environment(getArgs)
|
|
import Control.Monad(when)
|
|
|
|
main :: IO()
|
|
main = do
|
|
args <- getArgs
|
|
when (2 > length args)
|
|
(error "Usage: phase1 table.csv threshold [outfile.csv]")
|
|
let filename = head args
|
|
let threshold = read $ args !! 1
|
|
file <- readFile filename
|
|
case parseCSV file of
|
|
Left _ -> error "Could not parse out.csv"
|
|
Right val -> do
|
|
let table = map (ItemSet. Set.fromList .map Item) val
|
|
let freqPats = concat (frequentPatterns threshold table)
|
|
let output = formatToCSV table freqPats
|
|
putStrLn output
|
|
when (length args > 2) $
|
|
writeFile (args !! 2) output
|
|
|
|
formatToCSV :: [ItemSet] -> [ItemSet] -> String
|
|
formatToCSV table = foldr (\x old -> old ++ formatRow x ++ "\n") "" where
|
|
formatRow (ItemSet set) = init $ Set.foldr (\x old -> old ++ show x ++ ",") (show (count table (ItemSet set)) ++",") set
|