Skip to content

Commit 5517987

Browse files
committed
Merge pull request commercialhaskell#572 from k-bx/504-fuzzy-versions
Better fuzzy-matching algorithm (n -> logn)
2 parents dd15da7 + df13a2c commit 5517987

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

src/Stack/Fetch.hs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,16 @@ fuzzyLookupCandidates :: PackageIdentifier -> PackageCaches
332332
fuzzyLookupCandidates (PackageIdentifier name ver) caches =
333333
if null sameMajor then Nothing else Just (map fst sameMajor)
334334
where
335-
sameIdentCaches = filter (\(PackageIdentifier n _, _) -> name == n)
336-
(Map.toList caches)
337335
sameMajor = filter (\(PackageIdentifier _ v, _) ->
338336
getMajorVersion ver == getMajorVersion v)
339337
sameIdentCaches
338+
sameIdentCaches = maybe biggerFiltered
339+
(\z -> (zeroIdent, z) : biggerFiltered)
340+
zeroVer
341+
biggerFiltered = takeWhile (\(PackageIdentifier n _, _) -> name == n)
342+
(Map.toList bigger)
343+
zeroIdent = PackageIdentifier name (fromMajorVersion (MajorVersion 0 0))
344+
(_, zeroVer, bigger) = Map.splitLookup zeroIdent caches
340345

341346
-- | Figure out where to fetch from.
342347
getToFetch :: (MonadThrow m, MonadIO m, MonadReader env m, HasConfig env)

0 commit comments

Comments
 (0)