!636 !standard functions !1000346 // "case" as a variable name !class _javax 19 main { static Class solver; psvm { solver = hotwire("#704"); // embed solver! set(solver, "testJava", false); new Learner lNumFiles; File dir = makeTempDirectory(); for (int i = 0; i < 5; i++) { create(dir, "file" + (i+1)); String in = ls(dir.getPath()); Integer out = i+1; lNumFiles.learn(in, out); } lNumFiles.done(); String home = System.getProperty("user.home"); System.out.println("Files in home directory (" + home + "): " + lNumFiles.processIn(ls(home))); } static File makeTempDirectory() { return _javax.TempDirMaker_make(); } static class Learner { new StringBuilder buf; int count; Object case; void learn(String in, Object out) { buf.append("in: " + quote(in) + "\n"); buf.append("out: " + quote(String.valueOf(out)) + "\n"); if (++count == 2) buf.append("--\n"); } void done() { case = call(solver, "parse", buf.toString()); call(solver, "calculate", case); } Object processIn(String in) { return call(case, "processIn", in); } } static void create(File dir, String name) ctex { saveTextFile(new File(dir, name).getPath(), ""); } static String run(String cmd) ctex { return _javax.backtick(cmd); } static String ls(String dir) { return run("ls " + dir); } }