While this principle exists in different forms in many areas, my version is mainly derived from the core concepts in functional programming. Like in mathematical functions, functional programming is designed around functions that are idempotent and produce no side effects, making them flexible modules that are easier to work with conceptually.