A pure function is much like a view function, in that it promises not to modify the state, but it goes one step further in promising to not even read the state.
Here's a list of the things you can't do if you mark your function as pure:
- Reading state variables
- Accessing an account balance
- Accessing any member of block, tx, or message
- Calling any function not marked pure
- Using inline assembly that contains certain op codes
In the next section, we're going to see how this all ties together to create the business logic of our application.