gpt4 book ai didi

math - 如何简化基本算术表达式?

转载 作者:行者123 更新时间:2023-12-04 13:35:58 24 4
gpt4 key购买 nike

如何简化基本算术表达式?

例如

module ExprOps where 

simplify :: Expr -> Expr
simplify (Plus(Var"x") (Const 0)) = Var "x"

我需要做什么?
module Expr where

-- Variables are named by strings, assumed to be identifiers.
type Variable = String

-- Representation of expressions.
data Expr = Const Integer
| Var Variable
| Plus Expr Expr
| Minus Expr Expr
| Mult Expr Expr
deriving (Eq, Show)

我想到的简化是:
0*e = e*0 = 0
1*e = e*1 = 0+e = e+0 = e-0 = e

并简化常量子表达式,例如Plus (Const 1) (Const 2) 将变为 Const 3。我不希望变量(或变量和常量)被连接:Var“st”是与 Var“s”不同的变量。

我想要实现的是创建一个像上面那样的模块,它使用一个名为 simplify :: Expr->Expr 的函数。

最佳答案

好吧,你有正确的通用模型。您只需要更多规则并递归地应用简化过程。

simplify :: Expr -> Expr 
simplify (Mult (Const 0) x) = Const 0
simplify (Mult x (Const 0)) = Const 0
simplify (Plus (Const 0) x) = simplify x
simplify (Plus x (Const 0)) = simplify x
simplify (Mult (Const 1) x) = simplify x
simplify (Mult x (Const 1)) = simplify x
simplify (Minus x (Const 0)) = simpify x
simplify (Plus (Const x) (Const y)) = Const (x + y)
simplify (Minus (Const x) (Const y)) = Const (x - y)
simplify (Mult (Const x) (Const y)) = Const (x * y)
simplify x = x

关于math - 如何简化基本算术表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/320532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com