Warning: session_start(): open(/var/lib/php/sessions/sess_vtvp3uh7f1q5vjtemddii506dm, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
!include once #1017126 // transpileRaw
sclass DevelopFromExamples > DynTextArea {
S whatToTry;
transient ReliableSingleThread rst = new(r think);
transient volatile PlanInMotion currentPlan;
JComponent visualize() {
final JLabel lblStatus = jlabel();
awtEvery(lblStatus, 500, r { main.setText(lblStatus, planStatus()) });
ret withCenteredButtons(centerAndSouthWithMargins(
jhsplit(super.visualize(), dm_printLogComponent()),
vstackWithSpacing(
jsection("Stuff to try", onEnter(dm_fieldTextField('whatToTry), rst)),
lblStatus
)), "Fresh", rThread fresh, "Think", rst);
}
S planStatus() {
PlanInMotion plan = currentPlan;
if (plan == null) ret " ";
ret "Steps done: " + l(plan.doneSteps) + ". Steps planned: " + l(plan.plannedSteps);
}
void fresh {
forgetTranspiledStandardFunctions(words(whatToTry));
loadFunctions_clearCache();
rst.trigger();
}
void think {
new PlanInMotion plan;
currentPlan = plan;
temp tempAfterwards(r { currentPlan = null; });
clearPrintLog();
loadFunctions_preferDiskCache();
S text = rtrimAll(getText());
Pair examplesFile = ai_makeExamplesFile(text);
if (examplesFile.b) print("Wrote: " + f2s(examplesFile.a));
final new L> examples;
bool eqic = false;
L lines = tlftj(text);
if (eq(first(lines), "splitAtEmptyLines"))
lines = splitAtEmptyLines(text);
for (S line : lines) pcall {
if (eqic(line, "eqic")) eqic = true;
L l = splitAtDoubleArrow_bothDirections(line);
if (l(l) == 2) addPair(examples,
tok_multiLineQuotesToStandardQuotes(first(l)),
safeCanonicalizeStructure(tok_multiLineQuotesToStandardQuotes(second(l))));
}
final File logFile = replaceExtension(examplesFile.a, ".log");
final LineBuffer lineBuffer = new(voidfunc(S line) { appendToFile(logFile, line + "\n") });
temp tempInterceptPrint(func(S s) -> Bool { lineBuffer.append(s); true; });
print(localDateWithMilliseconds());
print("Thinking about " + n2(examples, "example"));
final new LinkedHashSet thingsThatWork;
final F2 equalsFunction = eqic
? func(O a, O b) -> Bool { eqic((S) a, (S) b) }
: func(O a, O b) -> Bool { eq(a, b) };
// Make plan
for (fS s : words(whatToTry)) if (isStandardFunction(s)) plan.add(r {
F1 f = func(S in) -> S { struct(callAndMake_orDirect(s, unstruct(in))) };
T3 counterExample = worksOnAllExamples_returnCounterExample(f, examples, equalsFunction);
if (counterExample == null)
print("WORKS: " + addAndReturn(thingsThatWork, s));
else {
print("Nope: " + s);
bool exc = counterExample.c instanceof Throwable;
print((exc ? "Exception on: "
: "Wrong result on: ") + sfu(counterExample.a));
print( "Expected: " + sfu(counterExample.b));
if (exc)
printStackTrace((Throwable) counterExample.c);
else
print( " Result: " + sfu(counterExample.c));
}
});
for (Runnable r : plan.master())
callF(r);
print("\nDone. " + (empty(thingsThatWork) ? "Nothing works." : "Things that work: " + joinWithComma(thingsThatWork)));
print();
}
}