Purely functional data structures (for fun)