Ok so we are basically defining a named function signature that represents a side effect shape.
Then the implementation of these side effect is done elsewhere and assigned as the capability of a function, which is now deemed as impure by the compiler.
Then the implementation of these side effect is done elsewhere and assigned as the capability of a function, which is now deemed as impure by the compiler.
You're right, it looks a bit like an interface.