How can I efficiently implement a list data structure where I can have 2 views to the head and end of the list, that always point to a head a tail of a list without expensive ca
Is Data.Dequeue what you are looking for?
(It doesn't have reverse but you can add it pretty easily and send a patch to the author.)
reverse