This is a summary of what the article says:<p>To represent the tape of a Turing Machine, you need a doubly linked list. In imperative languages, it's obvious how to implement doubly linked lists efficiently and simply, but in functional languages it's not. The author proposes using two stacks to represent a doubly linked list in a functional language: The first stack is for the part of the list to the left of the current node, and the second stack is for the part of the list to the right of the current node (including the current node). A generalisation of this idea for representing doubly-linked data structures in functional programming is called a Zipper [1].<p>[1] - <a href="https://en.wikipedia.org/wiki/Zipper_(data_structure)" rel="nofollow">https://en.wikipedia.org/wiki/Zipper_(data_structure)</a>