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