From 05eb64fe8577ef3e0dc271fc8be5d93e3e57ff2b Mon Sep 17 00:00:00 2001 From: Phil de Joux Date: Sun, 12 Apr 2026 16:56:15 -0400 Subject: [PATCH] Follow hlint suggestion: redundant <$> - Satisfy fourmolu - Update hlint counts with hlint --default --- .hlint.yaml | 11 +++++------ Cabal-syntax/src/Distribution/Types/CondTree.hs | 3 +-- .../Types/GenericPackageDescription/Lens.hs | 3 +-- .../src/Distribution/Types/LegacyExeDependency.hs | 2 +- Cabal-syntax/src/Distribution/Types/Version.hs | 2 +- .../src/Distribution/Types/VersionRange/Internal.hs | 2 +- Cabal/src/Distribution/Compat/ResponseFile.hs | 2 +- Cabal/src/Distribution/Simple/GHC.hs | 7 +------ cabal-install/src/Distribution/Client/CmdListBin.hs | 8 ++------ cabal-install/src/Distribution/Client/CmdRun.hs | 4 +--- cabal-install/src/Distribution/Client/Init/Utils.hs | 2 +- cabal-install/src/Distribution/Client/Main.hs | 2 +- .../src/Distribution/Client/ProjectConfig.hs | 3 +-- cabal-install/src/Distribution/Client/SetupWrapper.hs | 3 +-- cabal-install/src/Distribution/Client/Utils/Parsec.hs | 3 +-- .../Distribution/Client/ArbitraryInstances.hs | 3 +-- .../tests/UnitTests/Distribution/Client/VCS.hs | 2 +- .../Distribution/Solver/Modular/QuickCheck.hs | 2 +- 18 files changed, 23 insertions(+), 41 deletions(-) diff --git a/.hlint.yaml b/.hlint.yaml index 56d7825385e..698fc8ba6b1 100644 --- a/.hlint.yaml +++ b/.hlint.yaml @@ -5,18 +5,17 @@ - ignore: {name: "Hoist not"} # 16 hints - ignore: {name: "Move filter"} # 4 hints - ignore: {name: "Redundant $!"} # 1 hint -- ignore: {name: "Redundant <$>"} # 18 hints -- ignore: {name: "Redundant bracket"} # 279 hints -- ignore: {name: "Redundant guard"} # 2 hints +- ignore: {name: "Redundant bracket"} # 273 hints +- ignore: {name: "Redundant guard"} # 1 hint - ignore: {name: "Redundant if"} # 6 hints -- ignore: {name: "Redundant lambda"} # 19 hints +- ignore: {name: "Redundant lambda"} # 16 hints - ignore: {name: "Redundant multi-way if"} # 1 hint - ignore: {name: "Redundant return"} # 9 hints - ignore: {name: "Use $>"} # 5 hints - ignore: {name: "Use ++"} # 4 hints - ignore: {name: "Use :"} # 29 hints - ignore: {name: "Use <$"} # 2 hints -- ignore: {name: "Use <$>"} # 78 hints +- ignore: {name: "Use <$>"} # 82 hints - ignore: {name: "Use <&>"} # 16 hints - ignore: {name: "Use <=<"} # 4 hints - ignore: {name: "Use =<<"} # 7 hints @@ -28,7 +27,7 @@ - ignore: {name: "Use fold"} # 1 hint - ignore: {name: "Use fst"} # 2 hints - ignore: {name: "Use lambda-case"} # 58 hints -- ignore: {name: "Use map once"} # 7 hints +- ignore: {name: "Use map once"} # 6 hints - ignore: {name: "Use map with tuple-section"} # 3 hints - ignore: {name: "Use newtype instead of data"} # 31 hints - ignore: {name: "Use null"} # 2 hints diff --git a/Cabal-syntax/src/Distribution/Types/CondTree.hs b/Cabal-syntax/src/Distribution/Types/CondTree.hs index 49dad5912b2..f18444d672c 100644 --- a/Cabal-syntax/src/Distribution/Types/CondTree.hs +++ b/Cabal-syntax/src/Distribution/Types/CondTree.hs @@ -125,8 +125,7 @@ traverseCondTreeV f (CondNode a ifs) = -- | @@Traversal@@ for the data traverseCondBranchA :: L.Traversal (CondBranch v a) (CondBranch v b) a b traverseCondBranchA f (CondBranch cnd t me) = - CondBranch - <$> pure cnd + pure (CondBranch cnd) <*> traverseCondTreeA f t <*> traverse (traverseCondTreeA f) me diff --git a/Cabal-syntax/src/Distribution/Types/GenericPackageDescription/Lens.hs b/Cabal-syntax/src/Distribution/Types/GenericPackageDescription/Lens.hs index f194ddda9c9..951c7cf826b 100644 --- a/Cabal-syntax/src/Distribution/Types/GenericPackageDescription/Lens.hs +++ b/Cabal-syntax/src/Distribution/Types/GenericPackageDescription/Lens.hs @@ -81,8 +81,7 @@ allCondTrees -> GenericPackageDescription -> f GenericPackageDescription allCondTrees f (GenericPackageDescription p v a1 x1 x2 x3 x4 x5 x6) = - GenericPackageDescription - <$> pure p + pure (GenericPackageDescription p) <*> pure v <*> pure a1 <*> traverse f x1 diff --git a/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs b/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs index f5c08ac2747..4db2d46a947 100644 --- a/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs +++ b/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs @@ -43,7 +43,7 @@ instance Parsec LegacyExeDependency where verRange <- parsecMaybeQuoted parsec <|> pure anyVersion pure $ LegacyExeDependency name verRange where - nameP = intercalate "-" <$> toList <$> P.sepByNonEmpty component (P.char '-') + nameP = intercalate "-" . toList <$> P.sepByNonEmpty component (P.char '-') component = do cs <- P.munch1 (\c -> isAlphaNum c || c == '+' || c == '_') if all isDigit cs then fail "invalid component" else return cs diff --git a/Cabal-syntax/src/Distribution/Types/Version.hs b/Cabal-syntax/src/Distribution/Types/Version.hs index c821062ee3d..8b5ea95fcea 100644 --- a/Cabal-syntax/src/Distribution/Types/Version.hs +++ b/Cabal-syntax/src/Distribution/Types/Version.hs @@ -99,7 +99,7 @@ instance Pretty Version where ) instance Parsec Version where - parsec = mkVersion <$> toList <$> P.sepByNonEmpty versionDigitParser (P.char '.') <* tags + parsec = (mkVersion . toList <$> P.sepByNonEmpty versionDigitParser (P.char '.')) <* tags where tags = do ts <- many $ P.char '-' *> some (P.satisfy isAlphaNum) diff --git a/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs b/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs index a62b82fc04b..cd3082fc7ce 100644 --- a/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs +++ b/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs @@ -513,7 +513,7 @@ versionRangeParser digitParser csv = expr -- a plain version without tags or wildcards verPlain :: CabalParsing m => m Version - verPlain = mkVersion <$> toList <$> P.sepByNonEmpty digitParser (P.char '.') + verPlain = mkVersion . toList <$> P.sepByNonEmpty digitParser (P.char '.') -- either wildcard or normal version verOrWild :: CabalParsing m => m (Bool, Version) diff --git a/Cabal/src/Distribution/Compat/ResponseFile.hs b/Cabal/src/Distribution/Compat/ResponseFile.hs index b1124d47cfe..31f172e0715 100644 --- a/Cabal/src/Distribution/Compat/ResponseFile.hs +++ b/Cabal/src/Distribution/Compat/ResponseFile.hs @@ -31,4 +31,4 @@ expandResponse = go recursionLimit "." expand _n _dir x = return [x] readRecursively :: Int -> FilePath -> IO [String] - readRecursively n f = go (n - 1) (takeDirectory f) =<< unescapeArgs <$> readFile f + readRecursively n f = go (n - 1) (takeDirectory f) . unescapeArgs =<< readFile f diff --git a/Cabal/src/Distribution/Simple/GHC.hs b/Cabal/src/Distribution/Simple/GHC.hs index b61204770ef..59181bd99ac 100644 --- a/Cabal/src/Distribution/Simple/GHC.hs +++ b/Cabal/src/Distribution/Simple/GHC.hs @@ -237,12 +237,7 @@ configureCompiler verbosity hcPath conf0 = do -- In this example, @AbiTag@ is "inplace". compilerAbiTag :: AbiTag compilerAbiTag = - maybe - NoAbiTag - AbiTag - ( dropWhile (== '-') . stripCommonPrefix (prettyShow compilerId) - <$> projectUnitId - ) + maybe NoAbiTag (AbiTag . dropWhile (== '-') . stripCommonPrefix (prettyShow compilerId)) projectUnitId wiredInUnitIds = do ghcInternalUnitId <- Map.lookup "ghc-internal Unit Id" ghcInfoMap diff --git a/cabal-install/src/Distribution/Client/CmdListBin.hs b/cabal-install/src/Distribution/Client/CmdListBin.hs index b86a205b1ff..5e13515c960 100644 --- a/cabal-install/src/Distribution/Client/CmdListBin.hs +++ b/cabal-install/src/Distribution/Client/CmdListBin.hs @@ -377,12 +377,8 @@ renderListBinProblem (TargetProblemMatchesMultiple targetSelector targets) = ++ renderTargetSelector targetSelector ++ " which includes " ++ renderListCommaAnd - ( ("the " ++) - <$> showComponentName - <$> availableTargetComponentName - <$> foldMap - (`filterTargetsKind` targets) - [ExeKind, TestKind, BenchKind] + ( (("the " ++) <$> showComponentName) . availableTargetComponentName + <$> foldMap (`filterTargetsKind` targets) [ExeKind, TestKind, BenchKind] ) ++ "." renderListBinProblem (TargetProblemMultipleTargets selectorMap) = diff --git a/cabal-install/src/Distribution/Client/CmdRun.hs b/cabal-install/src/Distribution/Client/CmdRun.hs index a5389c68d1b..a83db427250 100644 --- a/cabal-install/src/Distribution/Client/CmdRun.hs +++ b/cabal-install/src/Distribution/Client/CmdRun.hs @@ -556,9 +556,7 @@ renderRunProblem (TargetProblemMatchesMultiple targetSelector targets) = <$> zip ["executables", "test-suites", "benchmarks"] ( filter (not . null) . map sortNub $ - map (componentNameRaw . availableTargetComponentName) - <$> (`filterTargetsKind` targets) - <$> [ExeKind, TestKind, BenchKind] + (map (componentNameRaw . availableTargetComponentName) . (`filterTargetsKind` targets) <$> [ExeKind, TestKind, BenchKind]) ) ) renderRunProblem (TargetProblemMultipleTargets selectorMap) = diff --git a/cabal-install/src/Distribution/Client/Init/Utils.hs b/cabal-install/src/Distribution/Client/Init/Utils.hs index bdb9b325666..0ac2221a2f0 100644 --- a/cabal-install/src/Distribution/Client/Init/Utils.hs +++ b/cabal-install/src/Distribution/Client/Init/Utils.hs @@ -176,7 +176,7 @@ retrieveModuleImports m = do -- | Given a module, retrieve all of its language pragmas retrieveModuleExtensions :: Interactive m => FilePath -> m [Extension] retrieveModuleExtensions m = do - catMaybes <$> map (simpleParsec . trim) . grabModuleExtensions <$> readFile m + mapMaybe (simpleParsec . trim) . grabModuleExtensions <$> readFile m where stop c = (c /= '\n') && (c /= ' ') && (c /= ',') && (c /= '#') diff --git a/cabal-install/src/Distribution/Client/Main.hs b/cabal-install/src/Distribution/Client/Main.hs index 09b8c01fa0e..1e5282ee6cc 100644 --- a/cabal-install/src/Distribution/Client/Main.hs +++ b/cabal-install/src/Distribution/Client/Main.hs @@ -322,7 +322,7 @@ main args = do -- for more information. let (args0, args1) = break (== "--") args - mainWorker =<< (++ args1) <$> expandResponse args0 + mainWorker . (++ args1) =<< expandResponse args0 -- | Check whether assertions are enabled and print a warning in that case. warnIfAssertionsAreEnabled :: IO () diff --git a/cabal-install/src/Distribution/Client/ProjectConfig.hs b/cabal-install/src/Distribution/Client/ProjectConfig.hs index 18edb22d971..c81b9c16535 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig.hs @@ -612,8 +612,7 @@ findProjectRoot verbosity mprojectDir mprojectFile = do getProjectRootUsability file >>= \case ProjectRootUsabilityPresentAndUsable -> - uncurry projectRoot - =<< first dropTrailingPathSeparator . splitFileName <$> canonicalizePath file + uncurry projectRoot . first dropTrailingPathSeparator . splitFileName =<< canonicalizePath file ProjectRootUsabilityNotPresent -> left (BadProjectRootExplicitFileNotFound file) ProjectRootUsabilityPresentAndUnusable -> diff --git a/cabal-install/src/Distribution/Client/SetupWrapper.hs b/cabal-install/src/Distribution/Client/SetupWrapper.hs index acb8f031c3a..97e88d54aac 100644 --- a/cabal-install/src/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/src/Distribution/Client/SetupWrapper.hs @@ -404,8 +404,7 @@ getSetup verbosity options mpkg = do where mbWorkDir = useWorkingDir options getPkg = - (relativeSymbolicPath <$> tryFindPackageDesc verbosity mbWorkDir) - >>= readGenericPackageDescription verbosity mbWorkDir + (tryFindPackageDesc verbosity mbWorkDir >>= readGenericPackageDescription verbosity mbWorkDir . relativeSymbolicPath) >>= return . packageDescription -- | Decide if we're going to be able to do a direct internal call to the diff --git a/cabal-install/src/Distribution/Client/Utils/Parsec.hs b/cabal-install/src/Distribution/Client/Utils/Parsec.hs index d7fcbf4778d..1c36017c4f9 100644 --- a/cabal-install/src/Distribution/Client/Utils/Parsec.hs +++ b/cabal-install/src/Distribution/Client/Utils/Parsec.hs @@ -81,8 +81,7 @@ instance (Newtype a b, Sep sep, Pretty b) => Pretty (NubList' sep b a) where remoteRepoGrammar :: RepoName -> ParsecFieldGrammar RemoteRepo RemoteRepo remoteRepoGrammar name = - RemoteRepo - <$> pure name + pure (RemoteRepo name) <*> uniqueFieldAla "url" URI_NT remoteRepoURILens <*> optionalField "secure" remoteRepoSecureLens <*> monoidalFieldAla "root-keys" (alaList' FSep Token) remoteRepoRootKeysLens diff --git a/cabal-install/tests/UnitTests/Distribution/Client/ArbitraryInstances.hs b/cabal-install/tests/UnitTests/Distribution/Client/ArbitraryInstances.hs index 3bbd8c43142..68a2266b27b 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/ArbitraryInstances.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/ArbitraryInstances.hs @@ -111,8 +111,7 @@ instance Arbitrary URI where instance Arbitrary URIAuth where arbitrary = - URIAuth - <$> pure "" -- no password as this does not roundtrip + pure (URIAuth "") -- no password as this does not roundtrip <*> arbitraryURIToken <*> arbitraryURIPort diff --git a/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs b/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs index 345da6cda24..49c5eda93bf 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/VCS.hs @@ -453,7 +453,7 @@ instance Arbitrary RepoDirSet where arbitrary = sized $ \n -> oneof $ - [RepoDirSet <$> pure 1] + [pure (RepoDirSet 1)] ++ [RepoDirSet <$> choose (2, 5) | n >= 3] shrink (RepoDirSet n) = [RepoDirSet i | i <- shrink n, i > 0] diff --git a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs index eecab420f8c..ab056c820c9 100644 --- a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs +++ b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs @@ -558,7 +558,7 @@ instance Arbitrary Component where -- internal libraries. arbitraryUQN :: Gen UnqualComponentName arbitraryUQN = - mkUnqualComponentName <$> (\c -> "component-" ++ [c]) <$> elements "ABC" + mkUnqualComponentName . (\c -> "component-" ++ [c]) <$> elements "ABC" instance Arbitrary ExampleInstalled where arbitrary = error "arbitrary not implemented: ExampleInstalled"