Clojush
Clojush copied to clipboard
Document how to construct a new Clojush problem
There are apparently as many different approaches in src/clojush/problems
as there are files.
We know, because we've wrestled with it, that to build a new problem you need to define a certain set of constants, functions and training and test cases.
I can find no documentation describing what those are.
Many of the most interesting problems are burdened with an ornate pile of spaghetti error function code, with no docstrings and no description of what global variables you're blithely invoking or why. Clearly many of the software synthesis functions have just been copied and pasted without being refactoring, over several rounds of "experimental" tinkering.
The only problem definition I could find that offered any chance at legibility was golomb.clj
, but even that has several variable names that are misleadingly abbreviated (for example, in
should not be a variable name in a Clojure program).
But no docstring at all.
Please fix this. Pick a complicated but not difficult problem and make sure whenever you add functionality (for example :train
and :test
case separation) that you write a version of that example problem's definition that implements the new functionality, and which explains it in legible words a person can read.
Suggestion: Make absolutely sure that every problem in demo
has every feature explained in detail, and none of the features available in Clojush (anywhere!) lack a working, documented example in at least one demo
problem, and that that no demo
problem has anything that isn't implemented in Clojush!