To introduce optional arguments for function, I’m thinking about new syntax of vector like this:
[a b c? d? ...rest]
But we also need to think about how subtyping works with it.
[x]  <: [x?] ;; T
[x?] <: [x]  ;; F
[]   <: [x?] ;; T
[x?] <: []   ;; T
[x?] <: [x?] ;; T
