I'm walking through a computational geometry book, implementing each data structure in F# and the example that I was working on is a range tree. The book depicts the bottom rung of the tree as essentially a doubly linked list. Mid-way through my insert function I realized that I could not think of a way to implement a doubly linked list without using mutable values in my nodes. Is this correct? I think I'm right, and some quick searching of haskell and ocaml code seems to confirm this, I just wanted to make sure.