我正在尝试编写一个带有字符串输入的程序,并在使用波兰表示法计算输入后返回该值。这是我的代码,问题是我需要计算每个输入,例如输入3 4 5 * -
,结果是-17,但对于输入345*-
,我得到Exception: Prelude.read: no parse
这是我的代码:
rpcalc :: String -> Float
chunksOf :: Int -> [e] -> [[e]]
chunksOf n [] = []
rpcalc = head .foldl foldingFunction [] . words
where foldingFunction (x:y:ys) "*" = (x * y):ys
foldingFunction (x:y:ys) "+" = (x + y):ys
foldingFunction (x:y:ys) "-" = (y - x):ys
foldingFunction (x:y:ys) "/" = (y / x):ys
foldingFunction (x:y:ys) "^" = (y ** x):ys
foldingFunction (x:xs) "ln" = log x:xs
foldingFunction xs numberString = read numberString:xs
感谢您的帮助,我是函数式编程的新手,并且比我想的更难。 *注意:无论如何我都没有使用chunksOf。