Haskell has a copying garbage collector for that reason. You can't use the wrong tool for the job and then complain it doesn't work well.