Sif*_*ifu 1 haskell functional-programming
我最近在大学学习了Haskell,我正在通过一系列的练习,这里有一段我无法理解的片段:
"考虑一下简单的前缀计算器语言的以下语法:"
num ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
int ::= num | num int
expr ::= int | - expr | + expr expr | * expr expr
Run Code Online (Sandbox Code Playgroud)
我很困惑如何将其转换为Haskell语法(我是Haskell和函数式编程的完全初学者,请温柔)
我怀疑num,int并且可能expr是所有可以声明的类型/值,data或者type它们对计算器施加约束.但是我无法理解:我如何声明type或data(不是变量)固定值,即0-9?另外,我如何在声明中添加符号-或符号+?
不要在表示它的AST的语法中混淆字符串.比较字符串
"+ + 3 4 5"
Run Code Online (Sandbox Code Playgroud)
这是你给出的语法中的一个字符串
Plus (Plus (Literal 3) (Literal 4)) (Literal 5)
Run Code Online (Sandbox Code Playgroud)
这将是一个合理的Haskell值,String可以解析为AST .
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |