第1页

递归数据类型

第2页

算术表达式建模

第3页
算术表达式建模
第4页
算术表达式建模
第5页

示例:评估

第6页
示例:评估
评估 :: 实验 -> 整数
评估(号码 n个)= n个
评估(添加  b条)= 评估  + 评估 b条
评估(穆尔  b条)= 评估  * 评估 b条
第7页

显示表达式

第8页

括号

何时需要支架?

第9页

显示带括号的表达式

显示Expr :: 实验 -> 字符串
显示Expr(号码 n个)= 显示 n个
显示Expr(添加  b条)= 显示Expr  ++ “+” ++ 显示Expr b条
显示Expr(穆尔  b条)= showFactor(显示因子)  ++ "*" ++ showFactor(显示因子) b条

showFactor(显示因子) :: 实验 -> 字符串
showFactor(显示因子)(添加  b条)= "(" ++ 显示Expr(添加  b条)++ ")"
showFactor(显示因子) e(电子) = 显示Expr e(电子)
第10页

制作Show实例

第11页

生成任意表达式

第12页

完成算术测验程序

主要的 =  输入StrLn “欢迎参加算术测验!”
          永远 测验

测验 =
      e(电子) <- 生成(rExpr公司 )putStr(输入Str)(“\n”++显示 e(电子)++" = ")回答 <- 获取线路
         对的 = 显示(评估 e(电子))输入StrLn(如果 回答 == 对的
                  然后 “正确!”
                  其他的 “错!正确答案是:”++对的)
第13页

符号表达式

第14页

摘要

第15页

下次