純粋関数とは、入力値は引数だけの関数のことです。基本的にある引数に対して常に同じ戻り値を返します。
C言語でいえば関数内部でグローバル変数を一切使っていないものを指します。
なお、関数内部でファイルやデータベースや乱数などを利用している場合は、それらも一種の入力であるため、それらを利用した時点で純粋性は失われて一定の戻り値にならない場合があります。
関数型言語の信者たちは「C言語のグローバル変数は散々禁止してきたのにオブジェクト指向のメンバ変数はいいのか」などとオブジェクト指向言語の信者たちを批判している。