Functional Programming (FP) languages are about “purity”. A pure function is referentially transparent and has no side effects. However, any enterprise application software must perform side effects like read from database or upload to an Amazon S3 bucket. It appears that the only way to make a code that performs side-effects referentially transparent is to not run it! In this talk, we look at the principle of “first-class effects”. They are effects that don’t break referential transparency and allow users to model side effects in a functional style.