# Introduction

So far, we have only looked at pure programming in Haskell where there is no interaction with the outside world. That being said, we have actually been using an instance of an interactive program, GHCi, which constantly receives some input from us, interprets it, produces a result and then waits for further input. Our programs took their inputs explicitly through the code itself and produced some results. But most of the time, we want to create programs that can interact with the outside world, for example, with users or the computer file system. Those things require side effects by default and are therefore impure, so in this chapter, we will look at how we can make interactive programs in the pure language of Haskell using **input/output actions**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://haskell.hpmeducation.com/interactive-programming/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
