@@ -44,13 +44,12 @@ type PackageSet = Map String Version
4444type PackageMultiSet = Map String (Set Version)
4545
4646resolveConstraint :: Constraint -> Hackage -> Version
47−resolveConstraint c = fromMaybe (error ("constraint " ++ display c ++ " cannot be resolved in Hackage")) .
48− resolveConstraint' c
47+resolveConstraint c = fromMaybe (error msg) . resolveConstraint' c
48+ where msg = "constraint " ++ display c ++ " cannot be resolved in Hackage"
4949
5050resolveConstraint' :: Constraint -> Hackage -> Maybe Version
51−resolveConstraint' (Dependency (PackageName name) vrange) hackage | Set.null vs = Nothing
52− | otherwise = Just (Set.findMax vs)
53− where vs = Set.filter (`withinRange` vrange) (Map.keysSet (hackage Map.! name))
51+resolveConstraint' (Dependency (PackageName name) vrange) hackage =
52+ Set.findMax . Set.filter (`withinRange` vrange) . Map.keysSet <$> Map.lookup name hackage
5453
5554data Options = Options
5655 { hackageRepository :: FilePath
@@ -191,6 +190,4 @@ readPreferredVersions p = mapMaybe parsePreferredVersionsLine . lines <$> readFi
191190parsePreferredVersionsLine :: String -> Maybe Constraint
192191parsePreferredVersionsLine [] = Nothing
193192parsePreferredVersionsLine ('-':'-':_) = Nothing
194−parsePreferredVersionsLine l = case simpleParse l of
195− Just c -> Just c
196− Nothing -> error ("invalid preferred-versions line: " ++ show l)
193+parsePreferredVersionsLine l = simpleParse l `mplus` error ("invalid preferred-versions line: " ++ show l)