onp(string:" /> onp(string:" /> onp(string:"/>

why am I getting 'Illegal guard expression" error? Erlang

34 Views Asked by At

Here is my code of simple RPN calculator in Erlang

-module('Kalkulator_ONP').
-author("user").

%% API
-export([onp/1]).

onp(Expression) ->
  onp(string:tokens(Expression, " "),[]).

onp([], [Result]) ->
  Result;

onp([NumberString|Rest], Stack) when is_integer(string:to_integer(NumberString)) ->
  Number = string:to_integer(NumberString),
  onp(Rest, [Number|Stack]);

onp([Operator|Rest], [Number1, Number2|Stack]) when Operator == "+" ->
  onp(Rest, [Number1+Number2|Stack]);

onp([Operator|Rest], [Number1, Number2|Stack]) when Operator == "-" ->
  onp(Rest, [Number1-Number2|Stack]);

onp([Operator|Rest], [Number1, Number2|Stack]) when Operator == "*" ->
  onp(Rest, [Number1*Number2|Stack]);

onp([Operator|Rest], [Number1, Number2|Stack]) when Operator == "/" ->
  onp(Rest, [Number1/Number2|Stack]);

onp([Operator|Rest], [Number|Stack]) when Operator == "sqrt" ->
  onp(Rest, [math:sqrt(Number)|Stack]);

onp([Operator|Rest], [Number1, Number2|Stack]) when Operator == "^" ->
  onp(Rest, [math:pow(Number1, Number2)|Stack]);

onp([Operator|Rest], [Number|Stack]) when Operator == "sin" ->
  onp(Rest, [math:sin(Number)|Stack]);

onp([Operator|Rest], [Number|Stack]) when Operator == "cos" ->
  onp(Rest, [math:cos(Number)|Stack]);

onp([Operator|Rest], [Number|Stack]) when Operator == "tan" ->
  onp(Rest, [math:tan(Number)|Stack]).

Line onp([NumberString|Rest], Stack) when is_integer(string:to_integer(NumberString)) -> is the line where intelij highlights (string:to_integer(NumberString) red. Ive already searched what can be the possible solution althoug I didnt find answer. What is wrong in here?

0

There are 0 best solutions below