public function max(float $max, string $error = 'not at most %d') : Real
    {
        return $this->pipe(
            self::predicate(
                function (float $value) use ($max) : bool {
                    return $value <= $max;
                },
                sprintf($error, $max)
            )
        );
    }