"Čistě funkcionální jazyky obecně nedovolují modifikace datových struktur"
Tohle má dvě roviny, teoreticky (sémanticky) modifikace nedovolují, ale konkrétní implementace to běžně dělají, když překladač umí zaručit referenční transparentnost.
jasně, interně se data mezi strukturami sdílí (jinak by třeba vektory a mapy v Clojure byly neúměrně pomalý) atd. ale z pohledu programátora jsou to immutable struktury