有没有办法转向,例如," + 3"进入Haskell中的(+3)以便稍后使用它与操作数?我正在尝试构建某种基于序列的计算器",它使用foldl进行评估。该foldl采用操作(?)列表[(+ 3),(* 4),(/ 5)],并且程序需要将字符串列表转换为此。怎么办?
答案 0 :(得分:5)
Haskell是一种编译语言,因此您通常不能在代码中使用包含代码的字符串.¹
所以正确的方法是为这样的字符串写一个解析器,即函数
parseOp :: String -> (Integer -> Integer)
parseOp ...
查看字符串并返回相应的操作。如果您的操作始终只是×n
,则可以是列表上的简单模式匹配和要读取的调用。 (我会把它留给你。)
¹您可以链接GHC-API,从而让编译器成为您程序的一部分。但实际上,不是在这种情况下......