# 3 Distinguishing actions, calculations, and data

**In this chapter**

- Learn the differences between actions, calculations, and data.
- Distinguish between actions, calculations, and data when thinking about a problem, coding, and reading existing code.
- Track actions as they spread throughout your code.
- Be able to spot actions in existing code.

We’ve already seen the categories of actions, calculations, and data at a glance. In this chapter, we’re going to learn how to identify these three categories in real life and in code. As we’ve talked about before, it’s the first step in doing functional programming. By identifying these categories, you’ll see how calculations are often overlooked and how infectious actions can be.

### Actions, calculations, and data

Functional programmers distinguish between actions, calculations, and data (ACD).

**Actions**

Depend on how many times or when it is run

**Also called** *functions with side-effects, side-effecting functions, impure functions*

**Examples**: Send an email, read from a database

**Calculations**

Computations from input to output

**Also called** *pure functions, mathematical functions*

**Examples**: Find the maximum number, check if an email address is valid

**Data**

Facts about events

**Examples**: The email address a user gave us, the dollar amount read from a bank’s API

We apply this distinction throughout the development process. For instance, you might find functional programmers using these concepts in the following situations:

**1. Thinking about a problem**