明性风格的代码的好处是能得到智能编译器，易于静态代码分析，和自动进行更好的。强制参照透明性的语言的主要缺点是，使得表达天然适合指令式编程的步骤序列的运算，更加蠢笨和更不简洁。这些语言通常结合某种机制，使得这些任务更加容易而又保持语言的纯函数式性质，比如和单子。要求表达式是纯函数的，也就是表达式的值对于相同的输入也必须是相同的，它的求值不能有副作用。在函数式编程中，很少使用副作用。缺少副作用导致程序易于形式验证。函数式语言比如Standard ML、Scheme和Scala不限制副作用，但是编程者会习惯性