We want to create more complex IO actions by combining smaller actions. We introduce a few functions to do so, such as the basic sequencing operator and the function liftA2 that sequences two actions and gives us flexibility in how we want to combine their results. We also revisit the problematic examples from 5–1 and see that we can now precisely define all the variants, and equational reasoning is still maintained.
Course site with self-test questions: [ Ссылка ]
![](https://s2.save4k.ru/pic/AflGgv8yaGA/maxresdefault.jpg)