Referentiell transparens
Egenskap där ett uttryck kan ersättas med sitt värde utan att ändra programmets beteende. add(2,3) kan alltid bytas mot 5. Foundation för funktionell programmering + compiler-optimering.
Kräver: pure functions (ingen side-effect, deterministiskt output per input). Bryts av: global-state-mutation, IO, random, current-time. Vinst: enklare reasoning (substitutionsmodell), trivial caching (memoization safe), compiler kan reordera + inline aggressivt, trivial parallellisering (ingen shared-state). Haskell tvingar referentiell transparens via IO-monad-isolation. Modern: React-components ska vara referentiellt transparenta (samma props → samma render) för memo/concurrent-rendering. Motsats: imperativ kod med mutation är ej referentiellt transparent.