public override VariableValue Evaluate(IVariableStore variables)
        {
            var left  = Left.Evaluate(variables);
            var right = Right.Evaluate(variables);

            var value = VariableHandler.Exponent(left, right);

            if (value.IsEmpty)
            {
                throw TypeMismatch(left.Type, right.Type);
            }

            return(Assign(variables, value));
        }