From eda4991e38eb5d9892c616ed24f9d1793513bd66 Mon Sep 17 00:00:00 2001 From: Joshua Clayton Date: Tue, 19 Jul 2016 22:25:56 -0400 Subject: [PATCH] Given issues with ParseError type, cast to String first MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When installing 0.6.0.0 via Homebrew, a compilation error is shown: src/Unused/Projection.hs:27:34: error: • Expecting two more arguments to ‘ParseError’ Expected a type, but ‘ParseError’ has kind ‘* -> * -> *’ • In the first argument of ‘Either’, namely ‘ParseError’ In the type signature: parseTransform :: Text -> Either ParseError ParsedTransform cabal: Leaving directory '.' cabal: Error: some packages failed to install: unused-0.6.0.0 failed during the building phase. The exception was: ExitFailure 1 Given we're rendering the output as a string with `show`, this moves `show` to where we parse and pass the `String` around instead. --- src/Unused/Projection.hs | 7 ++++--- src/Unused/ResultsClassifier/Types.hs | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Unused/Projection.hs b/src/Unused/Projection.hs index 272f9ef..910f0f5 100644 --- a/src/Unused/Projection.hs +++ b/src/Unused/Projection.hs @@ -2,6 +2,7 @@ module Unused.Projection where +import qualified Data.Bifunctor as BF import Data.Monoid ((<>)) import Data.Text (Text) import qualified Data.Text as T @@ -15,7 +16,7 @@ data ParsedTransform = ParsedTransform , ptPost :: Text } -translate :: Text -> Either ParseError (Text -> Text) +translate :: Text -> Either String (Text -> Text) translate template = applyTransform <$> parseTransform template applyTransform :: ParsedTransform -> Text -> Text @@ -24,8 +25,8 @@ applyTransform pt t = <> runTransformations t (ptTransforms pt) <> ptPost pt -parseTransform :: Text -> Either ParseError ParsedTransform -parseTransform = parse parsedTransformParser "" +parseTransform :: Text -> Either String ParsedTransform +parseTransform = BF.first show . parse parsedTransformParser "" parsedTransformParser :: Parser ParsedTransform parsedTransformParser = diff --git a/src/Unused/ResultsClassifier/Types.hs b/src/Unused/ResultsClassifier/Types.hs index 38a73c6..16866a0 100644 --- a/src/Unused/ResultsClassifier/Types.hs +++ b/src/Unused/ResultsClassifier/Types.hs @@ -66,7 +66,7 @@ instance FromJSON TermAlias where parseJSON (Y.Object o) = TermAlias <$> o .: "from" <*> o .: "to" - <*> (either (fail . show) return =<< (translate . T.pack <$> (o .: "to"))) + <*> (either fail return =<< (translate . T.pack <$> (o .: "to"))) parseJSON _ = M.mzero data MatchHandler a = MatchHandler