関数の合成と実行順序 関数の評価と副作用 関数 : 式[計算順序を意味する] の一部を為し、値を持つ (数学的な対象) f(x)+g(x) => f(x), g(x) の結果(返り値)を求めて、その和を計算する式 「関数の値を求める」事を「関数評価」と呼ぶ 副作用 : 値の計算とは独立に、関数内で実行される操作内容 例 : 入出力 (副作用の実行順を知るには、出力をしてみればよい:デバグプリント) 関数評価の順番が、副作用の実行順序になる f(x)+g(x) => f(x) の副作用がおきてから g(x) の副作用が起きる 関数合成 f(g()) とすると、g が実行され、その返り値を利用して f が実行される f(g()) <=> g;f (副作用の順番に注意) f(x)=x^2, g(x)=x+1 の時、 正: f(g(3)) => f(3+1) [g の実行] => f(4) => 4^2 [f の実行] => 16 誤: f(g(3)) => g(3)^2 [f の実行] => (3+1)^2 [g の実行] => 4^2 => 16 関数の引数の評価は後ろから行う func ( 式1, 式2 ) とすると、「式2」、「式1」の順に処理される 関数の引数に副作用(入出力を行う)がある場合は注意