From a647b9e26f581e87ce144d208c3fccea78d7ba14 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sun, 13 Dec 2020 23:53:13 +0000 Subject: [PATCH] Display empty results and no results differently --- src/Propa/Prolog/Debug.hs | 13 +++++++++---- src/Propa/Prolog/Display.hs | 9 +++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Propa/Prolog/Debug.hs b/src/Propa/Prolog/Debug.hs index b9f1971..38866ee 100644 --- a/src/Propa/Prolog/Debug.hs +++ b/src/Propa/Prolog/Debug.hs @@ -12,7 +12,12 @@ import Propa.Prolog.Parse import Propa.Prolog.Unify parseAndRun :: T.Text -> T.Text -> IO () -parseAndRun dbText statsText = T.putStrLn $ either id id $ do - db <- parseDb "" dbText - stats <- parseStats "" statsText - pure $ T.intercalate "\n" $ map displayResult $ run db stats +parseAndRun dbText statsText = T.putStrLn $ case results of + Left e -> e + Right [] -> "No." + Right rs -> T.intercalate "\n" rs + where + results = do + db <- parseDb "" dbText + stats <- parseStats "" statsText + pure $ map displayResult $ run db stats diff --git a/src/Propa/Prolog/Display.hs b/src/Propa/Prolog/Display.hs index 79608b6..ff07066 100644 --- a/src/Propa/Prolog/Display.hs +++ b/src/Propa/Prolog/Display.hs @@ -61,8 +61,9 @@ displayDefs :: [Def T.Text] -> T.Text displayDefs = T.intercalate "\n" . map displayDef displayResult :: Map.Map T.Text (Term T.Text) -> T.Text -displayResult +displayResult m | Map.null m = "Yes." +displayResult m = T.intercalate "\n" - . map (\(k, v) -> k <> " = " <> displayTerm v) - . filter (\(k, v) -> v /= TVar k) - . Map.assocs + $ map (\(k, v) -> k <> " = " <> displayTerm v) + $ filter (\(k, v) -> v /= TVar k) + $ Map.assocs m