Purity
Eta is pure by default which means that calling a function with the same arguments will yield the same results every time. This means that you can treat your function definitions as equations and perform substitutions, just like you'd do in math. This makes it easier to understand your code and prevents a lot of bugs that are typical of imperative programming languages. Morever, it encourages a form of programming where you decouple your side effects from your business logic, making it easier to mock tests.