> But my argument is this is not often done. I've seen tons of giant IO functions wrapped in do notation. Generally, no big attempt is made to segregate IO or side effects away from pure logic. Everyone just writes a monad and starts using do notation.
Yeah, "functional core/imperative shell" or "pushing IO to the edges" is a weird myth. Really the strength of Haskell is "functional core/IO code carefully threaded through functional core".
What's a good descriptive slogan for that? "Functional pipework/imperative reactants", invoking chemical engineering?
To cycle back to your point, I don't think the failure of this slogan actually points to any weakness in Haskell.
Yeah, "functional core/imperative shell" or "pushing IO to the edges" is a weird myth. Really the strength of Haskell is "functional core/IO code carefully threaded through functional core".
What's a good descriptive slogan for that? "Functional pipework/imperative reactants", invoking chemical engineering?
To cycle back to your point, I don't think the failure of this slogan actually points to any weakness in Haskell.