class Dentaku::AST::Comparator

def value(context = {})

def value(context = {})
  l = validate_value(cast(left.value(context)))
  r = validate_value(cast(right.value(context)))
  l.public_send(operator, r)
rescue ::ArgumentError => e
  raise Dentaku::ArgumentError.for(:incompatible_type, value: r, for: l.class), e.message
end