that's a good question actually.
We can define and assign side effects.
But is it sufficient to control the list of side effectful operations of a function?
Can the compiler check that a function is pure besides its assigned side effects?
What about state modified via closures?
Or is it only for system side-effects like filesystem operations?