8
数据 实验 = 号码 整数 | 添加 实验 实验 | 穆尔 实验 实验
| |
| |
| |
| |
评估 :: 实验 -> 整数
评估 ( 添加 ( 号码 1 ) ( 穆尔 ( 号码 2 ) ( 号码 三 )))
7
评估 :: 实验 -> 整数 评估 ( 号码 n个 ) = n个 评估 ( 添加 一 b条 ) = 评估 一 + 评估 b条 评估 ( 穆尔 一 b条 ) = 评估 一 * 评估 b条
显示Expr :: 实验 -> 字符串 显示Expr ( 号码 n个 ) = 显示 n个 显示Expr ( 添加 一 b条 ) = showEXpr公司 一 ++ “+” ++ 显示Expr b条 显示Expr ( 穆尔 一 b条 ) = showEXpr公司 一 ++ "*" ++ 显示Expr b条
showExpr(多(数字1)(加(数字2)(数字3))
显示Expr :: 实验 -> 字符串 显示Expr ( 号码 n个 ) = 显示 n个 显示Expr ( 添加 一 b条 ) = 显示Expr 一 ++ “+” ++ 显示Expr b条 显示Expr ( 穆尔 一 b条 ) = showFactor(显示因子) 一 ++ "*" ++ showFactor(显示因子) b条 showFactor(显示因子) :: 实验 -> 字符串 showFactor(显示因子) ( 添加 一 b条 ) = "(" ++ 显示Expr ( 添加 一 b条 ) ++ ")" showFactor(显示因子) e(电子) = 显示Expr e(电子)
实例 显示 实验 哪里 显示 = 显示Expr
显示
r导出_v1 :: 消息 实验 rExpr_v1版本 = 其中之一 [ r编号 , r纸盒 ] 哪里 r编号 = 元素 [ 号码 n个 | n个 <- [ 1 .. 10 ]] r纸盒 = 做 操作 <- 元素 [ 添加 , 穆尔 ] 第1页 <- rExpr_v1版本 第2页 <- r导出_v1 返回 ( 操作 第1页 第2页 )
rExpr公司 :: 国际 -> 消息 实验 rExpr公司 大小 = ( ... )
主要的 = 做 输入StrLn “欢迎参加算术测验!” 永远 测验 测验 = 做 e(电子) <- 生成 ( rExpr公司 三 ) putStr(输入Str) ( “\n” ++ 显示 e(电子) ++ " = " ) 回答 <- 获取线路 让 对的 = 显示 ( 评估 e(电子) ) 输入StrLn ( 如果 回答 == 对的 然后 “正确!” 其他的 “错!正确答案是:” ++ 对的 )
显示Expr :: 实验 -> 字符串
读Expr :: 字符串 -> 实验