Haskell has a lightweight thread feature similar to Go.
async $ f x y z
starts a new lightweight thread
f x y z
async :: IO a -> Async a is not special syntax, but a function. The function
async is provided by the async package
Haskell has several tools for communicating between threads. Basic tools are provided from the standard base package. Like in Go, we can use a channel. (See the next page.)