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