To neni moc podstatne, v kazdem paradigmatu potrebujete nejakou kombinaci funkci a dat. Spis jde o to, jak se pracuje se "zdroji" dat.
Nejlip tenhle rozdil vynika v Haskellu, ale objevuje se do jiste miry ve vsech FP jazycich. V OOP se zdroje dat skryvaji do malych jednotek, objektu. To co se predava mezi castmi programu jsou prave odkazy na zdroje. V pure FP (jako ma Haskell) to tak neni, tam si zdroje drzi centrum, ktere misto toho dostava instrukce ve forme treba monadickych typu.
Obecne se z toho pak stava rozdil ve zpusobu, jakym se pracuje s menitelnym stavem (coz je v podstate forma zdroje dat). V OOP se ten stav zvlada tim, ze se schova pod nejake API operaci nad nim. Tim je mozne ten stav nekam jinam predat, zmenit vlastnika, aniz by se narusila jeho konzistence. V FP se stejny problem zvlada tim, ze se ten stav nikam nepredava, ale misto toho se nad nim operuje primo prostrednictvim dodanych pozadavku, jak ho zmenit.