All: move some fns to core. Major cleanup.
[jackhill/mal.git] / java / src / main / java / mal / step7_quote.java
index c46b4f0..2f5a638 100644 (file)
@@ -1,10 +1,7 @@
 package mal;
 
 import java.io.IOException;
-import java.io.FileNotFoundException;
 
-import java.util.Scanner;
-import java.io.File;
 import java.util.List;
 import java.util.Map;
 import java.util.HashMap;
@@ -167,46 +164,23 @@ public class step7_quote {
     public static MalVal RE(Env env, String str) throws MalThrowable {
         return EVAL(READ(str), env);
     }
-    public static Env _ref(Env env, String name, MalVal mv) {
-        return env.set(name, mv);
-    }
-    public static String slurp(String fname) throws MalThrowable {
-        try {
-            return new Scanner(new File(fname))
-                .useDelimiter("\\Z").next();
-        } catch (FileNotFoundException e) {
-            throw new MalError(e.getMessage());
-        }
-    }
 
     public static void main(String[] args) throws MalThrowable {
         String prompt = "user> ";
 
         final Env repl_env = new Env(null);
+
+        // core.java: defined using Java
         for (String key : core.ns.keySet()) {
-            _ref(repl_env, key, core.ns.get(key));
+            repl_env.set(key, core.ns.get(key));
         }
-        _ref(repl_env, "read-string", new MalFunction() {
-            public MalVal apply(MalList args) throws MalThrowable {
-                try {
-                    return reader.read_str(((MalString)args.nth(0)).getValue());
-                } catch (MalContinue c) {
-                    return types.Nil;
-                }
-            }
-        });
-        _ref(repl_env, "eval", new MalFunction() {
+        repl_env.set("eval", new MalFunction() {
             public MalVal apply(MalList args) throws MalThrowable {
                 return EVAL(args.nth(0), repl_env);
             }
         });
-        _ref(repl_env, "slurp", new MalFunction() {
-            public MalVal apply(MalList args) throws MalThrowable {
-                String fname = ((MalString)args.nth(0)).getValue();
-                return new MalString(slurp(fname));
-            }
-        });
 
+        // core.mal: defined using the language itself
         RE(repl_env, "(def! not (fn* (a) (if a false true)))");
         RE(repl_env, "(def! load-file (fn* (f) (eval (read-string (str \"(do \" (slurp f) \")\")))))");