cln: hlint: Remove Either and Bifunctor related warnings.

This commit is contained in:
Stephen Morgan 2021-08-16 16:09:55 +10:00 committed by Simon Michael
parent 69502c44fe
commit 46b0745412
5 changed files with 11 additions and 9 deletions

View File

@ -43,9 +43,6 @@
- ignore: {name: "Fuse concatMap/map"} - ignore: {name: "Fuse concatMap/map"}
- ignore: {name: "Redundant where"} - ignore: {name: "Redundant where"}
- ignore: {name: "Use concatMap"} - ignore: {name: "Use concatMap"}
- ignore: {name: "Use second"}
- ignore: {name: "Use fromRight"}
- ignore: {name: "Use fromLeft"}
- ignore: {name: "Redundant bang pattern"} - ignore: {name: "Redundant bang pattern"}
- ignore: {name: "Use zipWith"} - ignore: {name: "Use zipWith"}
- ignore: {name: "Replace case with maybe"} - ignore: {name: "Replace case with maybe"}

View File

@ -59,6 +59,7 @@ where
import Control.Applicative (Const(..), (<|>)) import Control.Applicative (Const(..), (<|>))
import Control.Monad ((<=<), join) import Control.Monad ((<=<), join)
import Data.Either (fromRight)
import Data.Either.Extra (eitherToMaybe) import Data.Either.Extra (eitherToMaybe)
import Data.Functor.Identity (Identity(..)) import Data.Functor.Identity (Identity(..))
import Data.List.Extra (nubSort) import Data.List.Extra (nubSort)
@ -699,7 +700,7 @@ instance Reportable (Const r) e where
report _ (Const x) = Const x report _ (Const x) = Const x
instance Reportable Identity e where 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 instance Reportable Maybe e where
report _ = join . fmap eitherToMaybe report _ = join . fmap eitherToMaybe

View File

@ -8,6 +8,7 @@ where
import Brick.Widgets.Edit import Brick.Widgets.Edit
import Data.Foldable (asum) import Data.Foldable (asum)
import Data.Either (fromRight)
import Data.List ((\\), foldl', sort) import Data.List ((\\), foldl', sort)
import Data.Semigroup (Max(..)) import Data.Semigroup (Max(..))
import qualified Data.Text as T 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}}} = setFilter s ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
ui{aopts=uopts{cliopts_=copts{reportspec_=update rspec}}} ui{aopts=uopts{cliopts_=copts{reportspec_=update rspec}}}
where 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 querystring = words'' prefixes $ T.pack s
-- | Reset some filters & toggles. -- | Reset some filters & toggles.

View File

@ -35,6 +35,7 @@ import Brick.Widgets.Dialog
import Brick.Widgets.Edit import Brick.Widgets.Edit
import Brick.Widgets.List (List, listSelectedL, listNameL, listItemHeightL) import Brick.Widgets.List (List, listSelectedL, listNameL, listItemHeightL)
import Control.Monad.IO.Class import Control.Monad.IO.Class
import Data.Bifunctor (second)
import Data.List import Data.List
import qualified Data.Text as T import qualified Data.Text as T
import Data.Time (Day, addDays) 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) borderPeriodStr preposition p = str (" "++preposition++" ") <+> withAttr ("border" <> "query") (str . T.unpack $ showPeriod p)
borderKeysStr :: [(String,String)] -> Widget Name 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' :: [(String,Widget Name)] -> Widget Name
borderKeysStr' keydescs = borderKeysStr' keydescs =

View File

@ -17,6 +17,8 @@ import Control.Monad
import System.Exit import System.Exit
import Data.Time.Calendar import Data.Time.Calendar
import Text.Printf import Text.Printf
import Data.Bifunctor (second)
import Data.Either (fromLeft, fromRight)
import Data.Function (on) import Data.Function (on)
import Data.List import Data.List
import Numeric.RootFinding 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))) $ map (\date_cash -> let (dates, cash) = unzip date_cash in (head dates, Right (maSum cash)))
$ groupBy ((==) `on` fst) $ groupBy ((==) `on` fst)
$ sortOn fst $ sortOn fst
$ map (\(d,a) -> (d, maNegate a)) $ map (second maNegate)
$ cashFlow $ cashFlow
let units = let units =
@ -205,8 +207,8 @@ timeWeightedReturn showCashFlow prettyTables investmentsQuery trans mixedAmountV
when showCashFlow $ do when showCashFlow $ do
printf "\nTWR cash flow for %s - %s\n" (showDate spanBegin) (showDate (addDays (-1) spanEnd)) printf "\nTWR cash flow for %s - %s\n" (showDate spanBegin) (showDate (addDays (-1) spanEnd))
let (dates', amounts) = unzip changes let (dates', amounts) = unzip changes
cashflows' = map (either (const nullmixedamt) id) amounts cashflows' = map (fromRight nullmixedamt) amounts
pnls = map (either id (const nullmixedamt)) amounts pnls = map (fromLeft nullmixedamt) amounts
(valuesOnDate,unitsBoughtOrSold', unitPrices', unitBalances') = unzip4 units (valuesOnDate,unitsBoughtOrSold', unitPrices', unitBalances') = unzip4 units
add x lst = if valueBefore/=0 then x:lst else lst add x lst = if valueBefore/=0 then x:lst else lst
dates = add spanBegin dates' dates = add spanBegin dates'