While learning Haskell I am wondering when an IO action will be performed. In several places I found descriptions like this:

"What’s special about I/O actions is that if they fall into the main function, they are performed."

But in the following example, 'greet' never returns and therefore nothing should be printed.

```
import Control.Monad

main = greet

greet = forever $ putStrLn "Hello World!"

```

Or maybe I should ask: what does it mean to "fall into the main function"?