procCabal :: [(String,String)] -> LibDesc
procCabal xs = f xs mempty mempty where
    f [] dlm dsm = LibDesc (combineAliases dlm) dsm
    f ((map toLower -> x,y):rs) dlm dsm | x `Set.member` list_fields = f rs (Map.insert x (spit y) dlm) dsm
                                        | otherwise = f rs dlm (Map.insert x y dsm)
    spit = words . map (\c -> if c == ',' then ' ' else c)
procCabal :: [(String,String)] -> LibDesc
procCabal xs = f xs mempty mempty where
    f [] dlm dsm = LibDesc (combineAliases dlm) dsm
    f ((map toLower -> x,y):rs) dlm dsm | x `Set.member` list_fields = f rs (Map.insert x (spit y) dlm) dsm
                                        | otherwise = f rs dlm (Map.insert x y dsm)
    spit = words . map (\c -> if c == ',' then ' ' else c)
procCabal xs = f xs mempty mempty where
    f [] dlm dsm = LibDesc (combineAliases dlm) dsm
    f ((map toLower -> x,y):rs) dlm dsm | x `Set.member` list_fields = f rs (Map.insert x (spit y) dlm) dsm
                                        | otherwise = f rs dlm (Map.insert x y dsm)
    spit = words . map (\c -> if c == ',' then ' ' else c)