Haskell:如何评估像 "1+2"这样的字符串

标签 haskell eval

实际上我有一些公式,如 "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/

相关文章:

haskell - 为什么使用模式匹配构造的函数具有 Eq 类型约束,但在使用数据构造函数时没有?

haskell - 基准过滤器和分区

Haskell 图对齐函数

javascript - 如何在 javascript 中深度嵌套的对象成员上使用 Ramda 的 omit() 函数

javascript - 评估与执行脚本

从 MATLAB 命令 Maxon Motors EPOS2 电机 Controller

Haskell,将泛型与 Char 进行比较

javascript - TypeScript 箭头函数到字符串更改语法

javascript - 如何调用定义为字符串的函数?

list - Haskell HXT 解析行和列并获取 [[String]] 而不是 [String]