before we can add advanced examples, we need type inference: just because I declare a variable as `[]` doesn't mean I'll never write a value to it.