# Expressions

We said applying functions to arguments is the basic method of computation in Haskell – the building blocks of Haskell programs. In that sense, expressions in Haskell would be what those building blocks are made of. Expressions can represent some primitive values, e.g. numbers, characters, or booleans (`True`/ `False`), and in that case, they are **irreducible** expressions, meaning they cannot be further simplified. On the other hand, there are **reducible** expressions, which can be evaluated to their final irreducible form.

Let's use GHCi to explore some Haskell expressions (`ghci>` denotes code that is evaluated in GHCi):

```haskell
ghci> 2 + 2 -- reducible expression
4
ghci> 10 -- irreducible expression
10
```

Notice that any reducible expression is actually a function applied to some arguments (in this case the addition operator `(+)`. So any function in Haskell is at its core – an expression.


---

# 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/introduction/expressions.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.
