anchor.diff:  		{number, Value} -> {number, -Value};
   		_ -> {unary_minus, SimplifiedExpression}
   	end;
  +simplify_impl({if_then_else, Operand1, Operand2, Operand3}) ->
  +	SimplifiedOperand1 = simplify_impl(Operand1),
  +	case SimplifiedOperand1 of
  +		{number, 0} -> simplify_impl(Operand3);
  +		{number, _} -> simplify_impl(Operand2);
  +		_ -> 
  +			{if_then_else, SimplifiedOperand1, 
  +				simplify_impl(Operand2), simplify_impl(Operand3)}
  +	end;
   simplify_impl({Operator, Operand1, Operand2}) ->
   	SimplifiedOperand1 = simplify_impl(Operand1),
   	SimplifiedOperand2 = simplify_impl(Operand2),
  
positive.code: 	print_impl(Operand2),
  	io:format(" else "),
  	print_impl(Operand3).
  	
  compute_impl({number, Number}) ->
  	Number;
  compute_impl({unary_minus, Expression}) ->
  
negative.code: 		division -> Operand1/Operand2
  	end.
  
  compile_impl({number, Value}, Stack) ->
  	[Value|Stack];
  compile_impl({Operator, Operand1}, Stack) ->
  	[Operator|compile_impl(Operand1, Stack)];
  compile_impl({Operator, Operand1, Operand2}, Stack) ->
  	[Operator|compile_impl(Operand2, compile_impl(Operand1, Stack))];
  compile_impl({if_then_else, Operand1, Operand2, Operand3}, Stack) ->
  	[if_then_else|compile_impl(Operand1, 
  		compile_impl(Operand2, compile_impl(Operand3, Stack)))].
  	
  tokenize([]) ->
  	[];
  