「純粋関数」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「'''純粋関数'''とは、入力値は引数だけの関数のことです。基本的にある引数に対して常に同じ戻り値を返します。 C…」)
 
 
1行目: 1行目:
 
'''純粋関数'''とは、入力値は[[引数]]だけの[[関数]]のことです。基本的にある引数に対して常に同じ[[戻り値]]を返します。
 
'''純粋関数'''とは、入力値は[[引数]]だけの[[関数]]のことです。基本的にある引数に対して常に同じ[[戻り値]]を返します。
  
[[C言語]]でいえば[[関数]]内部で[[グローバル変数]]を一切使っていないものを指します。
+
[[C言語]]でいえば[[関数]]内部で[[グローバル変数]]を一切使っていないものを指します。[[C言語]]の入門書に書いてある「グローバル変数は極力使うな」というやつを実践したものです。
  
 
なお、関数内部で[[ファイル]]や[[データベース]]や[[乱数]]などを利用している場合は、それらも一種の入力であるため、それらを利用した時点で純粋性は失われて一定の[[戻り値]]にならない場合があります。
 
なお、関数内部で[[ファイル]]や[[データベース]]や[[乱数]]などを利用している場合は、それらも一種の入力であるため、それらを利用した時点で純粋性は失われて一定の[[戻り値]]にならない場合があります。

2024年3月12日 (火) 04:54時点における最新版

純粋関数とは、入力値は引数だけの関数のことです。基本的にある引数に対して常に同じ戻り値を返します。

C言語でいえば関数内部でグローバル変数を一切使っていないものを指します。C言語の入門書に書いてある「グローバル変数は極力使うな」というやつを実践したものです。

なお、関数内部でファイルデータベース乱数などを利用している場合は、それらも一種の入力であるため、それらを利用した時点で純粋性は失われて一定の戻り値にならない場合があります。

関数型言語の信者たちは「C言語グローバル変数は散々禁止してきたのにオブジェクト指向メンバ変数はいいのか」などとオブジェクト指向言語の信者たちを批判している。