23 関数型

関数型プログラミングでは、

「関数呼び出し」「分岐」「戻り値」のみで考える

ループの代わりに再帰を用いる

手続き的プログラミング

サンプル1

function sum($array) {

$sum = 0;

foreach($array as $num) {

if(条件文) {

$sum += $num;

}

}

return $sum;

}

サンプル2

function sum($array) {

$sum = 0;

foreach($array as $num) {

$sum += $num;

}

return $sum;

}

サンプル3

var numbers = [1,2,3,4,5];

var doubled = [];

for(var i = 0; i < numbers.length; i++) {

doubled.push( numbers[i] * 2 );

}

サンプル4

var numbers = [1,2,3,4,5];

var total = 0;

for(var i = 0; i < numbers.length; i++) {

total += numbers[i];

}

関数型プログラミング

サンプル1

function sum($array) {

$condition = function($num) {

return (条件文);

};

$result = array_filter($array, $condition);

$sum = array_sum($result);

return $sum;

}

サンプル2

function sum($array) {

if(count($array) === 0) {

return 0;

}else if(count($array) === 1) {

return $array[0];

}else {

return $array[0] + sum(array_slice($array, 1));

}

}

サンプル3

var numbers = [1,2,3,4,5];

var doubled = numbers.map( function(n) {

return n * 2;

});

サンプル4

var numbers = [1,2,3,4,5];

var total = numbers.reduce( function(sum, n) {

return sum + n;

});