They’re just an abstraction to model and contain implicits, for instance like IO (filesystems) or program state. Regular functions should produce the same output for the same input, if they do not you have implicit effects. You can think of it kinda like a class, or a context, or a module which has some functions to help work with the implicit effect. Central then is also that each such class, context, or module can be composed with others of the same kind, maintaining a lineage of the implicit effect.
If I squint I can see what you mean, but it can apply to many different concepts (effects, capabilities, etc) and not just monads. Monads have a very specific and actually quite simple definition.
They’re just an abstraction to model and contain implicits, for instance like IO (filesystems) or program state. Regular functions should produce the same output for the same input, if they do not you have implicit effects. You can think of it kinda like a class, or a context, or a module which has some functions to help work with the implicit effect. Central then is also that each such class, context, or module can be composed with others of the same kind, maintaining a lineage of the implicit effect.
If I squint I can see what you mean, but it can apply to many different concepts (effects, capabilities, etc) and not just monads. Monads have a very specific and actually quite simple definition.
Like we’re dumb!
Not like we’re smart!
I shall maintain that is the dolt explanation