Why functional data structures are difficult to design and implement than imperative ones?

  • not support destructive updates (assignments)
  • not ephemeral: persistent: when updating, both the old and new versions of the data structure will be available for further processing