Haskell is the world's finest imperative programming language." The above quote comes from Simon P Jones, the creator of Haskell. To newcomers to Functional programming, this may seem weird and mystifying. After all, Haskell is usually known for its advanced Functional programming features such as purity and strong static typing. While it's likely that Simon said this at least partly in jest, the fact is that those same features also make imperative programming in Haskell much more flexible and powerful than in most other languages!
In this talk, we present a view of Haskell and strongly typed functional programming from the "other side" of the prism. We discuss how you can build and compose powerful imperative abstractions with Haskell using the same FP toolset. We discuss how to write common imperative algorithms in Haskell while exploiting advanced features like first-class computations, laziness, and strong static typing. We will also touch upon interfacing with external imperative systems (such as databases, and network communication). At the end of the talk, participants should have enough groundwork to explore Haskell as a *practical* language, and have a greater appreciation of the powerful features offered by Functional Programming.