public static function join()
{
$args = func_get_args();
/**
* Returns a string made by inserting the separator between each element and concatenating all the elements into a
* single string.
*
* @category List
*
* @param $separator
* @param $list
*
* @return mixed
* @throws Exception
*/
$_join = function ($separator, $list) {
Exception::assertString($separator);
Exception::assertList($list);
return self::reduce(function ($acc, $item) use($separator) {
return empty($acc) ? $item : $acc . $separator . $item;
}, '', $list);
};
return call_user_func_array(self::curry2($_join), $args);
}