title: Complex data structures in Haskell - how do they work?
body: <p>As I figured out, variables in Haskell are immutable (thus, they are not really `variables'). </p>
  
  <p>In this case, if we have a complex and big data structure, like a red-black tree, how are we supposed to implement operations that actually change the data structure? </p>
  
  <p>Create a copy of the tree each time an element is inserted or deleted? </p>