original_string: protected static function __orCombinator(array $fs, $a)
      {
          return self::any(Arrays::map(function ($c) use ($a) {
              return $c($a);
          }, $fs));
      }
code: protected static function __orCombinator(array $fs, $a)
      {
          return self::any(Arrays::map(function ($c) use ($a) {
              return $c($a);
          }, $fs));
      }
code_tokens: protected static function __orCombinator ( array $ fs , $ a ) { return self :: any ( Arrays :: map ( function ( $ c ) use ( $ a ) { return $ c ( $ a ) ; } , $ fs ) ) ; }
docstring: Logical Or Combinator
  
  Given n functions {f1, f2, ..., fn}, combine them in such a way to produce a new
  function g that returns true given at least one of {f1(x), f2(x), ... fn(x)} return true.
  
  @example
  $funcF = function($x) { return $x >= 5; };
  $funcG = function($x) { return $x == 0; };
  $combinator = Logic::orCombinator([$funcF, $funcG]);
  $combinator(9); // True
  $combinator(0); // True
  $combinator(2); // 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
docstring_tokens: Logical Or Combinator