From 46b07454123abd488c6b9bf8a5a5b58a9d542f53 Mon Sep 17 00:00:00 2001 From: Stephen Morgan Date: Mon, 16 Aug 2021 16:09:55 +1000 Subject: [PATCH] cln: hlint: Remove Either and Bifunctor related warnings. --- .hlint.yaml | 3 --- hledger-lib/Hledger/Reports/ReportOptions.hs | 3 ++- hledger-ui/Hledger/UI/UIState.hs | 3 ++- hledger-ui/Hledger/UI/UIUtils.hs | 3 ++- hledger/Hledger/Cli/Commands/Roi.hs | 8 +++++--- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.hlint.yaml b/.hlint.yaml index bce2e1ed2..175969347 100644 --- a/.hlint.yaml +++ b/.hlint.yaml @@ -43,9 +43,6 @@ - ignore: {name: "Fuse concatMap/map"} - ignore: {name: "Redundant where"} - ignore: {name: "Use concatMap"} -- ignore: {name: "Use second"} -- ignore: {name: "Use fromRight"} -- ignore: {name: "Use fromLeft"} - ignore: {name: "Redundant bang pattern"} - ignore: {name: "Use zipWith"} - ignore: {name: "Replace case with maybe"} diff --git a/hledger-lib/Hledger/Reports/ReportOptions.hs b/hledger-lib/Hledger/Reports/ReportOptions.hs index 24c5325c1..7a39e61f1 100644 --- a/hledger-lib/Hledger/Reports/ReportOptions.hs +++ b/hledger-lib/Hledger/Reports/ReportOptions.hs @@ -59,6 +59,7 @@ where import Control.Applicative (Const(..), (<|>)) import Control.Monad ((<=<), join) +import Data.Either (fromRight) import Data.Either.Extra (eitherToMaybe) import Data.Functor.Identity (Identity(..)) import Data.List.Extra (nubSort) @@ -699,7 +700,7 @@ instance Reportable (Const r) e where report _ (Const x) = Const x instance Reportable Identity e where - report a (Identity i) = Identity $ either (const a) id i + report a (Identity i) = Identity $ fromRight a i instance Reportable Maybe e where report _ = join . fmap eitherToMaybe diff --git a/hledger-ui/Hledger/UI/UIState.hs b/hledger-ui/Hledger/UI/UIState.hs index 1c4470fda..f37929ceb 100644 --- a/hledger-ui/Hledger/UI/UIState.hs +++ b/hledger-ui/Hledger/UI/UIState.hs @@ -8,6 +8,7 @@ where import Brick.Widgets.Edit import Data.Foldable (asum) +import Data.Either (fromRight) import Data.List ((\\), foldl', sort) import Data.Semigroup (Max(..)) import qualified Data.Text as T @@ -246,7 +247,7 @@ setFilter :: String -> UIState -> UIState setFilter s ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} = ui{aopts=uopts{cliopts_=copts{reportspec_=update rspec}}} where - update = either (const rspec) id . updateReportSpecWith (\ropts -> ropts{querystring_=querystring}) -- XXX silently ignores an error + update = fromRight rspec . updateReportSpecWith (\ropts -> ropts{querystring_=querystring}) -- XXX silently ignores an error querystring = words'' prefixes $ T.pack s -- | Reset some filters & toggles. diff --git a/hledger-ui/Hledger/UI/UIUtils.hs b/hledger-ui/Hledger/UI/UIUtils.hs index 404ccf5de..23567090e 100644 --- a/hledger-ui/Hledger/UI/UIUtils.hs +++ b/hledger-ui/Hledger/UI/UIUtils.hs @@ -35,6 +35,7 @@ import Brick.Widgets.Dialog import Brick.Widgets.Edit import Brick.Widgets.List (List, listSelectedL, listNameL, listItemHeightL) import Control.Monad.IO.Class +import Data.Bifunctor (second) import Data.List import qualified Data.Text as T import Data.Time (Day, addDays) @@ -192,7 +193,7 @@ borderPeriodStr _ PeriodAll = str "" borderPeriodStr preposition p = str (" "++preposition++" ") <+> withAttr ("border" <> "query") (str . T.unpack $ showPeriod p) borderKeysStr :: [(String,String)] -> Widget Name -borderKeysStr = borderKeysStr' . map (\(a,b) -> (a, str b)) +borderKeysStr = borderKeysStr' . map (second str) borderKeysStr' :: [(String,Widget Name)] -> Widget Name borderKeysStr' keydescs = diff --git a/hledger/Hledger/Cli/Commands/Roi.hs b/hledger/Hledger/Cli/Commands/Roi.hs index 7c80b2e08..9436988f7 100644 --- a/hledger/Hledger/Cli/Commands/Roi.hs +++ b/hledger/Hledger/Cli/Commands/Roi.hs @@ -17,6 +17,8 @@ import Control.Monad import System.Exit import Data.Time.Calendar import Text.Printf +import Data.Bifunctor (second) +import Data.Either (fromLeft, fromRight) import Data.Function (on) import Data.List import Numeric.RootFinding @@ -172,7 +174,7 @@ timeWeightedReturn showCashFlow prettyTables investmentsQuery trans mixedAmountV $ map (\date_cash -> let (dates, cash) = unzip date_cash in (head dates, Right (maSum cash))) $ groupBy ((==) `on` fst) $ sortOn fst - $ map (\(d,a) -> (d, maNegate a)) + $ map (second maNegate) $ cashFlow let units = @@ -205,8 +207,8 @@ timeWeightedReturn showCashFlow prettyTables investmentsQuery trans mixedAmountV when showCashFlow $ do printf "\nTWR cash flow for %s - %s\n" (showDate spanBegin) (showDate (addDays (-1) spanEnd)) let (dates', amounts) = unzip changes - cashflows' = map (either (const nullmixedamt) id) amounts - pnls = map (either id (const nullmixedamt)) amounts + cashflows' = map (fromRight nullmixedamt) amounts + pnls = map (fromLeft nullmixedamt) amounts (valuesOnDate,unitsBoughtOrSold', unitPrices', unitBalances') = unzip4 units add x lst = if valueBefore/=0 then x:lst else lst dates = add spanBegin dates'