def shunting_yard(elements):
	"""
	Performs shunting-yard on a list of characters
	:param elements: list
		equation characters in reverse polish notation
	:return: float
		result of equation
	"""
	# init dict with operations mapping
	operations = {
		'+': lambda x, y: x + y,
		'-': lambda x, y: x - y,
		'*': lambda x, y: x * y,
		'/': lambda x, y: x / y,
	}
	operand_stack = list()

	for e in elements:
		if e.isdigit():
			operand_stack.append(e)
		else:
			# take operands from the top of the stack
			operand2 = float(operand_stack.pop())
			operand1 = float(operand_stack.pop()) if operand_stack else 0.0 # support for negative numbers
			# perform operation
			result = operations[e](operand1, operand2)
			# return result to the stack
			operand_stack.append(result)

	# last element on top of the stack is the result
	return operand_stack.pop()