public static function filter(callable $function, $traversable)
    {
        Arguments::define(Boa::func(), Boa::traversable())
            ->check($function, $traversable);

        $aggregation = [];

        foreach ($traversable as $key => $value) {
            if ($function($value, $key)) {
                $aggregation[$key] = $value;
            }
        }

        return $aggregation;
    }