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

Untitled