definition:
|
resolve :: Config -> Package -> LookupSet -> ResolutionResult
resolve cfg pkg ls = case resolvedPkgs of
Just pkgs -> ResolutionSuccess pkg (deleteBase pkgs)
Nothing -> ResolutionFailure labeledTree
where
labeledTree = labelConflicts cfg $ candidateTree pkg ls
noConflicts = prune ((/= Nothing) . clConflict) labeledTree
resolvedPkgs = maybeHead . map stPackages . filter stComplete . leaves
. mapTree clState $ noConflicts
deleteBase = filter (\p -> name p /= "base" ||
showVersion (version p) /= compilerBaseVersion cfg)
|
demand:
|
no demanded arguments
|
deterministic:
|
deterministic operation
|
documentation:
|
--- Resolves the dependencies of a package using packages from a lookup set.
--- The base package of the current compiler is removed from the result set.
|
failfree:
|
<FAILING>
|
indeterministic:
|
referentially transparent operation
|
infix:
|
no fixity defined
|
iotype:
|
{(_,_,_) |-> {ResolutionFailure,ResolutionSuccess}}
|
name:
|
resolve
|
precedence:
|
no precedence defined
|
result-values:
|
{ResolutionFailure,ResolutionSuccess}
|
signature:
|
CPM.Config.Config -> CPM.Package.Package -> CPM.LookupSet.LookupSet
-> ResolutionResult
|
solution-complete:
|
operation might suspend on free variables
|
terminating:
|
possibly non-terminating
|
totally-defined:
|
possibly non-reducible on same data term
|