///|
/// Collection helper functions
fn[T] print_list(
  items : @list.List[T],
  printer : (T, StringBuilder) -> Unit,
  separator : String,
  logger : StringBuilder,
) -> Unit {
  let mut first = true
  for item in items {
    if not(first) {
      logger.write_string(separator)
    }
    first = false
    printer(item, logger)
  }
}