Functional Programming: Pure Functions