Define a shell language for playing with Casio.
Define a shell language for playing with Casio.

Start with `(define alt (shell '(lambda (...) ...)))`.
You'll see a list of alternatives and locations.
You can refer to an alternative by `$x` and to a location by `@x`.
Each alternative is also a location (the top of that alt).
`(tree loc)` and `(expr loc)` compute new alts;
  use `(only ...)` to replace the existing alts
  or `(also ...)` to add them, too.
`(analyze alt)` computes new locations
  for the local-error subexpressions in an alt.
`(keep . alts)` and `(drop . alts)` keep or drop alts
  (and locs that point to them).

jackfirth/herbie,jackfirth/herbie,jackfirth/herbie,jackfirth/herbie,jackfirth/herbie,jackfirth/herbie