public static function conjunct(array $array, $conjunction = self::DEFAULT_CONJUNCTION, callable $callback = null)
    {
        self::swapCallable($conjunction, $callback, self::DEFAULT_CONJUNCTION, false);
        if (null !== $callback) {
            $array = array_map($callback, $array);
        }
        if (count($array) > 1) {
            $final     = array_pop($array);
            $sentence  = join(self::DEFAULT_SEPARATOR, $array);
            $separator = trim(self::DEFAULT_SEPARATOR);
            $sentence  = "{$sentence}{$separator} {$conjunction} {$final}";
        } else {
            $sentence = array_pop($array);
        }
        
        return $sentence;
    }