Ion query language
Given a Ion tree, produce a subset.
projecting: any <seq> can be indexed by (a list of) keys
Seq-wrappers like map, list are "transparent":
let x = {a, b, c}           // implicit keys equal to values
let y = [a, "b", 1]
let z = {0=zero, 1=one, zero=0, one=1}
// indexing
x.a     // => .a
x[.a]   // => .a
x[.a, .b]   // => {.a, .b}
x[0]    // => _, bottom, a value that cannot be stored at runtime.
y[.a]   // => _
y[0]    // => .a
// TODO: tuples, "the default value":
()      // no values inside
(a)     // implicity a pair `a = a`, but must evaluate to `a`, how?
filtering?
TODO: looks at Haskell optics