Merge pull request #256 from vvakame/impl-ts
[jackhill/mal.git] / cpp / step7_quote.cpp
index c1af454..005c920 100644 (file)
@@ -12,7 +12,7 @@ String PRINT(malValuePtr ast);
 static void installFunctions(malEnvPtr env);
 
 static void makeArgv(malEnvPtr env, int argc, char* argv[]);
-static void safeRep(const String& input, malEnvPtr env);
+static String safeRep(const String& input, malEnvPtr env);
 static malValuePtr quasiquote(malValuePtr obj);
 
 static ReadLine s_readLine("~/.mal-history");
@@ -32,24 +32,24 @@ int main(int argc, char* argv[])
         return 0;
     }
     while (s_readLine.get(prompt, input)) {
-        safeRep(input, replEnv);
+        String out = safeRep(input, replEnv);
+        if (out.length() > 0)
+            std::cout << out << "\n";
     }
     return 0;
 }
 
-static void safeRep(const String& input, malEnvPtr env)
+static String safeRep(const String& input, malEnvPtr env)
 {
-    String out;
     try {
-        out = rep(input, env);
+        return rep(input, env);
     }
     catch (malEmptyInputException&) {
-        return;
+        return String();
     }
     catch (String& s) {
-        out = s;
+        return s;
     };
-    std::cout << out << "\n";
 }
 
 static void makeArgv(malEnvPtr env, int argc, char* argv[])