如何在Haskell中实现一个简单的计算器
发布时间:2023-12-10 10:26:35
在Haskell中实现一个简单的计算器可以通过定义一些函数和数据类型来实现。下面是一个示例实现:
-- 定义数据类型表示表达式
data Expr = Num Double
| Add Expr Expr
| Sub Expr Expr
| Mul Expr Expr
| Div Expr Expr
-- 定义一个解析函数,将输入的字符串解析成表达式
parseExpr :: String -> Expr
parseExpr = go . words
where
go [x] = Num (read x)
go (x:y:z) = case y of
"+" -> Add (go [x]) (go z)
"-" -> Sub (go [x]) (go z)
"*" -> Mul (go [x]) (go z)
"/" -> Div (go [x]) (go z)
-- 定义一个求值函数,计算表达式的结果
evalExpr :: Expr -> Double
evalExpr (Num x) = x
evalExpr (Add a b) = evalExpr a + evalExpr b
evalExpr (Sub a b) = evalExpr a - evalExpr b
evalExpr (Mul a b) = evalExpr a * evalExpr b
evalExpr (Div a b) = evalExpr a / evalExpr b
-- 定义一个计算器函数,接收输入的表达式字符串并返回结果
calculator :: String -> Double
calculator = evalExpr . parseExpr
现在我们可以使用这个计算器函数进行计算,例如:
main :: IO ()
main = do
putStrLn "请输入一个表达式:"
expr <- getLine
let result = calculator expr
putStrLn ("结果为:" ++ show result)
这个程序会提示用户输入一个表达式,然后计算表达式的结果并打印出来。
以下是一些示例输入和输出:
请输入一个表达式: 2 + 3 * 4 结果为:14.0 请输入一个表达式: (2 + 3) * 4 结果为:20.0 请输入一个表达式: 10 / 3 结果为:3.3333333333333335
上述程序只实现了基本的四则运算,对于复杂的数学函数(如三角函数、指数函数等)还需要进行扩展。
