///|
priv struct BackPointer[T] {
value : T
prev : BackPointer[T]?
}
///|
fn[T] to_array(self : BackPointer[T]) -> Array[T] {
match self.prev {
None => [self.value]
Some(prev) => {
let prev = prev.to_array()
prev.push(self.value)
return prev
}
}
}