1. 学ぶ
  2. /
  3. コース
  4. /
  5. purrr で学ぶ中級関数型プログラミング

Connected

演習

純粋関数を見分ける

純粋関数は次の2つの性質を満たします。

  • 出力が入力のみに依存する:同じ値を入力すれば、出力は常に同じになります。
  • 副作用がない:つまり、関数の外側に影響を与えません。

R の多くの関数は純粋ではありませんが、日々の利用には不可欠です。分析では、ファイルをダウンロードしたり、プロットを作成したり、結果を保存したりする必要があります。

プログラミングでは、関数は可能な限り純粋にするか、逆に必要な副作用に特化して不純にする(たとえば、ファイルをダウンロードする関数はそのダウンロードだけを行う)ことを目指すとよいです。そのためにはまず、純粋な関数と不純な関数を見分けられる必要があります。

この演習では、純粋または不純な関数を実行し、その出力がどうなるかを確認します。

指示1 / 4

undefined XP
  • 1

    Sys.time() を実行し、次に Sys.sleep(1)、さらにもう一度 Sys.time() を実行して、同じ関数を2回呼び出しても結果が異なる場合があることを確認してください。

  • 2

    nrow(iris) を実行し、次に Sys.sleep(1)、さらにもう一度 nrow(iris) を実行して、時間に関係なく2回の呼び出しで同じ結果が返ることを確認してください。

  • 3

    環境内のオブジェクトを一覧表示する ls() を実行します。次に、数値 12 を含む this という新しいオブジェクトを作成し、もう一度 ls() を実行してください。

  • 4

    iris データセットの基本的なプロットを作成する plot(iris) を実行します。コンソールには何も表示されず、副作用だけが生じることを確認してください。