而又保持语言的纯函数式性质，比如和单子。要求表达式是纯函数的，也就是表达式的值对于相同的输入也必须是相同的，它的求值不能有副作用。在函数式编程中，很少使用副作用。缺少副作用导致程序易于形式验证。函数式语言比如Standard ML、Scheme和Scala不限制副作用，但是编程者会习惯性的避免使用它们。函数式语言Haskell使用单子行动来表达副作用，比如输入/输出和其他有状态的计算。
并行计算.纯函数式编程简化了并行计算，因为求值的两个部份如果都是纯函数式的就会永不交互。