实际上我有一些公式,如 "x + y"
,这是一个 String
.
我设法更换了x/y
具有特定值的变量,例如 "1.2"
,仍然是 String
类型。
现在我有像 "1 + 2"
这样的表达式.
所以问题是如何对一个字符串类型的表达式求值并得到结果。
ps: 我想像 read
,可以直接转换整个字符串表达式,而不是逐个处理运算符(+/-等)。那可能吗?
最佳答案
你的问题留下了很大的解释空间。我猜你不习惯构建一个包含词法分析、解析、类型检查和评估的完整管道。长答案将涉及您定义要评估的语言(只是带有“+”的整数,也许所有带有“+”、“-”、“*”、“/”的有理数,甚至是更大的语言?)并执行每个该语言的上述步骤。
简短的回答是:要评估 Haskell 表达式,其中包括您可能正在谈论的基本数学运算符,只需使用“hint”包:
$ cabal install hint
...
$ ghci
> import Language.Haskell.Interpreter
> runInterpreter $ setImports ["Prelude"] >> eval "3 + 5"
Right "8"
耶!
关于Haskell:如何评估像 "1+2"这样的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582926/