Network_pool.F_sequenceA sequence type based on finger trees.
They are a purely functional data structure that provides amortized O(1) cons, snoc, uncons, and unsnoc; O(log (min (d1, d2))) splitting and indexing, where d1 and d2 are the distances from the first and and last elements respectively, and O(log(min(n1, n2))) appends where n1 and n2 are the sizes of argument trees.
We want this because we need efficient deque operations for multiple transactions queued from the same sender, and we need to be able to drop any transactions after one we replace efficiently.
See "Finger Trees, a simple general-purpose data structure" by Ralf Hinze and Ross Paterson for more details.
http://www.staff.city.ac.uk/~ross/papers/FingerTree.pdf
Helpful diagrams here: http://www.staff.city.ac.uk/~ross/papers/FingerTree/more-trees.html
val sexp_of_t : 
  ( 'e -> Ppx_sexp_conv_lib.Sexp.t ) ->
  'e t ->
  Ppx_sexp_conv_lib.Sexp.tval is_empty : 'e t -> boolval length : 'e t -> intval head_exn : 'e t -> 'eval last_exn : 'e t -> 'eval foldl : ( 'a -> 'e -> 'a ) -> 'a -> 'e t -> 'aval foldr : ( 'e -> 'a -> 'a ) -> 'a -> 'e t -> 'aval findi : 'a t -> f:( 'a -> bool ) -> int optionval iter : 'e t -> f:( 'e -> unit ) -> unitval to_seq : 'e t -> 'e Core.Sequence.tval to_list : 'e t -> 'e listval empty : 'e tval singleton : 'e -> 'e tSplit a sequence at a given index. The first component of the pair will be a sequence containing all elements with index < i, the second will contain all elements with index >= i
val find : 'e t -> f:( 'e -> bool ) -> 'e option