- Rewrite the Sudoku solver.
- Fix a renaming bug.
- Implement `eval` correctly.
The Sudoku solver is a hack. It is a rewrite of a solver I once wrote in OCaml. It has poor performance since inequalities aren't eliminated leading to way too much work and it also doesn't make use of Egel very well. It could all be done way more principled.
The renaming bug is due to that I tried to avoid renaming completely in the interpreter for performance reasons but, as it turns out, can't.
The two previous tasks are not too difficult. `eval`, however, will need the introduction of fine-grained locking on internal data structures and the implementation of a pure term evaluator.
The two previous tasks are not too difficult. `eval`, however, will need the introduction of fine-grained locking on internal data structures and the implementation of a pure term evaluator.
Problems are that `eval` may at any point change the state of the interpreter, be called recursively, and be called from different threads.
I.e, `eval "eval \"[X->X\"" 1` are examples I am looking at. Guess I better start off with the first two tasks, though.