public function let($field, $constraint)
    {
        Arguments::define(
            Boa::string(),
            Boa::either(
                Boa::instance(AbstractConstraint::class),
                Boa::arrOf(Boa::instance(AbstractConstraint::class))
            )
        )->check($field, $constraint);

        if (!$this->constraints->member($field)) {
            $this->constraints = $this->constraints->insert(
                $field,
                ArrayList::zero()
            );
        }

        if (!is_array($constraint)) {
            $constraint = [$constraint];
        }

        $this->constraints = $this->constraints->insert(
            $field,
            Maybe::fromMaybe(
                ArrayList::zero(),
                $this->constraints->lookup($field)
            )->append(ArrayList::of($constraint))
        );

        return $this;
    }