一方、 手続き型の世界では、複数の文を次々と実行することで、変数の状態を変化させプログラムの 実行を進めるというプログラミングをおこないます。 C 言語などの void 型の関数などがあり、 しばしばプログラマは呼び出した関数の値を重要視しません。 これは、おこしたい副作用(状態変化)を目的としてプログラムを書いているからです。 このように、関数型と手続き型ではプログラミングの考え方が大きく異なります。
この節の中で、しばしば評価順序についてふれてきました。 関数型においては、実は評価順序は「入力」と「結果」の関係には影響を与えません。 これは、関数型においてはプログラムが関数としての性質を持っているからです。 評価順序が影響を与えるのは、実行効率(無駄な計算をしないようにするため)や プログラムが無限 loop に陥ったりしないかどうか、と言う点だけです。
一方、手続き型言語においては、評価順序は決定的な意味をもちます。 これは、手続き型が「状態の変化」に基づいたプログラミングをしているためです。 つまり、どの様な順番で変化を起こしていくかによって、 最終的な結論が大きく異なってしまうためです(例)。
このような両者の違いから、関数型言語では以下のような利点が考えられます。