Haskell中的反向抛光表示法,用于计算字符之间没有空格的输入

时间:2017-11-13 16:23:55

标签: haskell haskell-stack postfix-notation

我正在尝试编写一个带有字符串输入的程序,并在使用波兰表示法计算输入后返回该值。这是我的代码,问题是我需要计算每个输入,例如输入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。

0 个答案:

没有答案