Просто разные подходы. Надо понимать что типы и монады дают дополнительную сложность в коде, которая может стать источником ошибок. С IO монадами тоже не все так просто - они усложняют код, имеют оч сложные типы, плохо композируются друг с другом. Там не зря каждый год новая монадная библиотека - проблемы далеко не все решены.