variables are used by a function can be completely determined from its
type signature (as opposed to the stream approach, where a function
looks the same from the outside, regardless of what state variables it
- uses (or whether it's stateful at all).
+ uses or whether it's stateful at all).
This approach is the one chosen for Cλash and will be examined more
closely below.