Covering function for the SplitRec
view
Constructs the view in O(n lg n)
Covering function for the Split
view
Constructs the view in linear time
Covering function for the SnocVect
view
Constructs the view in linear time
View for splitting a vector in half, recursively
This allows us to define recursive functions which repeatedly split vectors
in half, with base cases for the empty and singleton lists.
View for splitting a vector in half, non-recursively
View for traversing a vector backwards