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