final public static function zipWith()
    {
        $xss = func_get_args();
        $f = array_pop($xss);
        $zipped = static::unzip($xss);
        return static::map($zipped, function($xs, $i, $xss) use ($f) {
            return call_user_func_array($f, $xs);
        });
    }
final public static function zipWith()
    {
        $xss = func_get_args();
        $f = array_pop($xss);
        $zipped = static::unzip($xss);
        return static::map($zipped, function($xs, $i, $xss) use ($f) {
            return call_user_func_array($f, $xs);
        });
    }
final public static function zipWith ( ) { $ xss = func_get_args ( ) ; $ f = array_pop ( $ xss ) ; $ zipped = static :: unzip ( $ xss ) ; return static :: map ( $ zipped , function ( $ xs , $ i , $ xss ) use ( $ f ) { return call_user_func_array ( $ f , $ xs ) ; } ) ; }
Porting from the Prelude of Haskell.

@chainable
@varargs
@category  Arrays
@param     array     *$xss
@param     callable  $f
@return    array|Iterator
Porting from the Prelude of Haskell .