将字符串转换为一个部分

rto*_*oom 1 haskell

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

Joa*_*ner 5

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

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

parseOp :: String -> (Integer -> Integer)
parseOp ...
Run Code Online (Sandbox Code Playgroud)

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

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