|
<?php |
|
|
|
$inc = function ($x) { |
|
return $x + 1; |
|
}; |
|
|
|
$odd = function ($x) { |
|
return $x & 1; |
|
}; |
|
|
|
$even = function ($x) { |
|
return !($x & 1); |
|
}; |
|
|
|
$plus2 = function ($x) { |
|
return $x + 2; |
|
}; |
|
|
|
$times4 = function ($x) { |
|
return $x * 4; |
|
}; |
|
|
|
assert(map($inc, [1, 2, 3, 4, 5, 6, 7, 8, 9]) === [2, 3, 4, 5, 6, 7, 8, 9, 10]); |
|
|
|
assert(filter($odd, [1, 2, 3, 4, 5, 6, 7, 8]) === [1, 3, 5, 7]); |
|
|
|
assert(filter($even, [1, 2, 3, 4, 5, 6, 7, 8]) === [2, 4, 6, 8]); |
|
|
|
assert(flatten([[[1, [1.1]], 2, 3], [4, 5]]) === [1, 1.1, 2, 3, 4, 5]); |
|
|
|
assert(flatten([1, [2,3], [4,[5,[6]]]]) === [1, 2, 3, 4, 5, 6]); |
|
|
|
assert(map(compose($plus2, $times4), [1, 2, 5, 8]) === [12, 16, 28, 40]); |
|
|
|
assert(pipe(function ($arr) { |
|
$arr[] = 'b'; |
|
return $arr; |
|
}, function ($arr) { |
|
$arr[] = 'c'; |
|
return $arr; |
|
})(['a']) === ['a', 'b', 'c']); |
|
|
|
assert(pipe(function ($ls) { |
|
return filter(function ($x) { |
|
return $x & 1; |
|
}, $ls); |
|
}, function ($ls) { |
|
return map(function ($x) { |
|
return $x * 10; |
|
}, $ls); |
|
}, 'sum')([1, 2, 3, 4, 5]) === 90); |
|
|
|
assert(pipe('deg2rad', 'cos')(360) === 1.0); // avoid cos(deg2rad(360)); |