title: How to implement B+ tree in Haskell?
body: <p>A B+ tree has the leaf nodes linked together. Viewing the pointer structure of a B+ tree as  directed graph its not cyclic. But ignoring the directions of pointers and viewing it as undirected the leaf nodes linked together creates cycles in the graph.</p>
  
  <p>In Haskell how could a leaf be constructed as the child of a parent internal node and simultaneously the next link from the adjacent leaf node. How could one do this with Haskell's algebraic datatypes? It seems that Haskell ADT in general make cyclic like structures difficult to express.</p>