///|
/// Parses one or more values separated by `separator`.
pub fn[T, A, S] Parser::sep_by1(
  self : Parser[T, A],
  separator : Parser[T, S],
) -> Parser[T, Array[A]] {
  self.flat_map(first => {
    separator
    .then_right(self)
    .many()
    .map(rest => {
      let values = [first]
      for value in rest {
        values.push(value)
      }
      values
    })
  })
}