protected static function __andCombinator(array $fs, $a)
    {
        return self::all(Arrays::map(function ($c) use ($a) {
            return $c($a);
        }, $fs));
    }
protected static function __andCombinator(array $fs, $a)
    {
        return self::all(Arrays::map(function ($c) use ($a) {
            return $c($a);
        }, $fs));
    }
protected static function __andCombinator ( array $ fs , $ a ) { return self :: all ( Arrays :: map ( function ( $ c ) use ( $ a ) { return $ c ( $ a ) ; } , $ fs ) ) ; }
Logical And Combinator

Given n functions {f1, f2, ..., fn}, combine them in such a way to produce a new
function g that returns true given {f1(x), f2(x), ... fn(x)} all return true.

@example
$funcF = function($x) { return $x < 5; };
$funcG = function($x) { return $x > 0; };
$combinator = Logic::andCombinator([$funcF, $funcG]);
$combinator(4); // True
$combinator(2); // True
$combinator(7); // False

@type [(a -> Bool)] -> a -> Bool

@param array $fs array of functions to combine
@param mixed $a value to test
@return \Closure test for or using provided functions
Logical And Combinator