PS: Koukám - lexikální uzávěry a lambda funkce... no to jsou určitě užitečné věci, ale dá se obejít i bez nich.
lexikální uzávěry mohou nahradit mutabilitu. Nekonečnou sekvenci můžete implementovat objektem držícím stav, nebo vracením lambda funkcí.
Obojí se dá velmi snadno implementovat i v OO jazycích a používám to zcela běžně.
Často je výhodné dělat objekty immutable, lépe se s nimi pracuje.