https://ravindradevrani.medium.com/understanding-the-pure-and-impure-functions-with-c-examples-efcba0bb1736