# Bryan O'Sullivan et al. - Real World Haskell Chapter 7. IO (Highlights)

## Highlights
- There are three pre-defined `Handle`s in `System.IO`. These `Handle`s are always available for your use. They are `stdin`, which corresponds to standard input; `stdout` for standard output; and `stderr` for standard error. ([View Highlight](https://read.readwise.io/read/01kgdqwcf6arjq7wba93hhmtrf)) ^983976865
- I/O actions are defined within the IO monad. ([View Highlight](https://read.readwise.io/read/01kgds91vkgm257dx1sbk6p1p3)) ^983984727
- You could think of it this way: every statement, except `let`, in a `do` block must yield an I/O action which will be executed. ([View Highlight](https://read.readwise.io/read/01kgdsc3var64wsmthqrnpf88r)) ^983984915
- `do` blocks are actually shortcut notations for joining together actions. There are two operators that you can use instead of `do` blocks: `>>` and `>>=`. ([View Highlight](https://read.readwise.io/read/01kgdsfnwrcy3w3echksmp4ypq)) ^983985049