Lispでオブジェクト指向プログラミングをやるときのスタイルについて質問です。

CLOSでオブジェクト指向をやろうとすると、オブジェクトのスロットの値の変更が必要になったりしますが、
Lisper的には普通にsetfで代入してしまうのか、あるいは変更する度に新しいオブジェクトを作ってそれを渡したりするのでしょうか。

そもそも関数プログラミングとオブジェクト指向やクロージャって相容れないように思えます。