Functions can be polymorphic in their effectfulness, so the coloring problem isn't. Functions only become incompatible where you've made them incompatible on purpose - the whole point of annotating functions' effectfulness is to statically know you're not accidentally invoking particular effects where you promised you wouldn't.
Both work with semirings, which are a structure with two monoids.
I found these papers fairly readable on a quick skim, but I have a background in closely related stuff. They might not be so readable if you're not used to the style of presentation.
Learning a new language is basically trivial relative to the effort of bootstrapping everything yourself to compensate for a lacking ecosystem, or the effort of banging your head against the fundamental unsuitability of a tool for a job.
Anyone who's learned one or two languages should be able to pick up the basics of any of the standard ones pretty much instantaneously.
mod.rs came first and that made creating modules verbose as hell. Not only that but imagine having many mod.rs files open, you wouldn’t know what module you are in by just looking at the filename.
Whenever you're asking for an explanation this deep in the ontology stack, you need to think about what kind of explanation would be satisfying to you, and whether you can reasonably expect intuitive answers in domains that lie far outside of your everyday experience. Human brains aren't built to grasp this stuff intuitively.
At a certain point, the reason we like some particular wacky physical model is always going to be "it has the best combination of explanatory power and simplicity"
A thing can be explained with its constituent parts or explained by a parallel analogy. If you don't understand the constituent parts or the analogy or there are neither of these. You won't understand it.