将字符串转换为一个部分

时间:2014-07-21 07:43:53

标签: haskell

有没有办法转向,例如," + 3"进入Haskell中的(+3)以便稍后使用它与操作数?我正在尝试构建某种基于序列的计算器",它使用foldl进行评估。该foldl采用操作(?)列表[(+ 3),(* 4),(/ 5)],并且程序需要将字符串列表转换为此。怎么办?

1 个答案:

答案 0 :(得分:5)

Haskell是一种编译语言,因此您通常不能在代码中使用包含代码的字符串.¹

所以正确的方法是为这样的字符串写一个解析器,即函数

parseOp :: String -> (Integer -> Integer)
parseOp ...

查看字符串并返回相应的操作。如果您的操作始终只是×n,则可以是列表上的简单模式匹配和要读取的调用。 (我会把它留给你。)

¹您可以链接GHC-API,从而让编译器成为您程序的一部分。但实际上,不是在这种情况下......