CurryInfo: cpm-3.3.0 / CPM.Diff.API.compareApiModule

definition:
compareApiModule :: Package -> String -> [Package] -> Package -> String
                 -> [Package] -> String -> IO Differences
compareApiModule pkgA dirA depsA pkgB dirB depsB mod =
  if mod `elem` exportedModules pkgA
    then
     if mod `elem` exportedModules pkgB
       then
         readAbstractCurryFromPackagePath pkgA dirA depsA mod
              >>= \prog1 ->
         readAbstractCurryFromPackagePath pkgB dirB depsB mod
              >>= \prog2 ->
         let funcDiffs = diffFuncsFiltered funcIsPublic   prog1 prog2
             typeDiffs = diffTypesFiltered typeIsPublic   prog1 prog2
             opDiffs   = diffOpsFiltered   (\_ _ -> True) prog1 prog2
         in return $ (Nothing, funcDiffs, typeDiffs, opDiffs)
      else return $ (Just $ Addition mod, [], [], [])
    else return $ (Just $ Removal mod, [], [], [])
demand:
no demanded arguments
deterministic:
deterministic operation
documentation:
--- Compares a single module from two package versions.
---
--- @param pkgA - version A of the package
--- @param dirA - the directory containing version A of the package
--- @param depsA - the resolved dependencies of version A of the package
--- @param pkgB - version B of the package
--- @param dirB - the directory containing version B of the package
--- @param depsB - the resolved dependencies of version B of the package
--- @param mod - the name of the module
failfree:
<FAILING>
indeterministic:
referentially transparent operation
infix:
no fixity defined
iotype:
{(_,_,_,_,_,_,_) |-> _}
name:
compareApiModule
precedence:
no precedence defined
result-values:
_
signature:
CPM.Package.Package -> String -> [CPM.Package.Package] -> CPM.Package.Package
-> String -> [CPM.Package.Package] -> String
-> Prelude.IO (Prelude.Maybe (Difference String), [Difference AbstractCurry.Types.CFuncDecl], [Difference AbstractCurry.Types.CTypeDecl], [Difference AbstractCurry.Types.COpDecl])
solution-complete:
operation might suspend on free variables
terminating:
possibly non-terminating
totally-defined:
possibly non-reducible on same data term