@Override
	public Value evaluate(Value... operands) throws Exception {
		// we need two operands
		if (operands.length != input())
			throw new EvalException("Error: wrong number of operands");

		// get operands
		Value l = operands[0];
		Value r = operands[1];

		// if they are identical
		if (l.getType().isNumeric() && r.getType().isNumeric()) {
			// perform OR
			return new Value(new Boolean(l.getDouble() == r.getDouble()));
		}

		// if they are identical
		if (l.getType() == r.getType()) {
			// perform OR
			return new Value(new Boolean(l.getData().equals(r.getData())));
		}

		return new Value(new Boolean(false));
	}