Robert J. Simmons
Robert J. Simmons
This is already what tab-switching does, but I think we're getting weird crashes and making-phone-warm problems on phones when people switch back to edit and the program is still running...
Frequently you want the number of lookups, and this could be done much more efficiently than `[...dusa.solution.lookup('foo', 3)].length` if we provided it in the api.
Because DusaCompileError doesn't have a standard string message like usual errors, it's basically impossible to see _what the compiler error was_ in major browsers.
If we have the predicate `a _ _ is _`, the argument for not allowing ``` p :- q (a X Y). ``` is that it's not clear whether this...
I'd like to allow the pattern ``` const iter = new Dusa(PROG).assert({ name: 'max', value: 100 }).solve(); ``` which would be enabled if `assert` just returned `this`, much like what...
This works and it shouldn't, logging `[ [ [ 1n, 2n, 3n ] ] ]` ``` import { Dusa } from "https://unpkg.com/[email protected]/lib/client.js"; const dusa = new Dusa("#builtin INT_PLUS plus"); dusa.assert({...
INT_PLUS can only be run backwards with a single unknown, because `plus X Y is 12` has an infinite number of answers (X = 12 and Y = 0, X...
dusa docs from dusa rocks opens in the same tab (requires change to sketchzone)
In current dusa and rewrite branch dusa, this passes typechecking and then raises a runtime exception: ``` #builtin NAT_SUCC succ #builtin NAT_SUCC s b (s (s (s succ))). ``` Ideally...
A common logic programming idiom is to allow a pattern to be matched one of multiple ways. This rule: ``` q X Y :- a X, (b Y; c Y),...