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