如何简化基本算术表达式?
例如
module ExprOps where
simplify :: Expr -> Expr
simplify (Plus(Var"x") (Const 0)) = Var "x"
Run Code Online (Sandbox Code Playgroud)
我需要做什么?
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)
Run Code Online (Sandbox Code Playgroud)
我想到的简化是:
0*e = e*0 = 0
1*e = e*1 = 0+e = e+0 = e-0 = e
Run Code Online (Sandbox Code Playgroud)
并且简化常量子表达式,例如Plus(Const …
我想使用线性回归模型,但我想使用普通最小二乘法,我认为它是一种线性回归.我使用的软件是SPSS.它只有线性回归,偏最小二乘和2阶最小二乘.我不知道哪一个是普通的最小二乘(OLS).
我如何给出包含以下所有表达式的一般规则?例如一个表达式,另一个用于sub,一个用于mult.我需要使用递归,但我感到困惑......
simplify :: Expr->Expr
simplify (Mult (Const 0)(Var"x"))
= Const 0
simplify (Mult (Var "x") (Const 0))
= Const 0
simplify (Plus (Const 0) (Var "x"))
= Var "x"
simplify (Plus (Var "x") (Const 0))
= Var "x"
simplify (Mult (Const 1) (Var"x"))
= Var "x"
simplify (Mult(Var"x") (Const 1))
= Var "x"
simplify (Minus (Var"x") (Const 0))
= Var "x"
simplify (Plus (Const x) (Const y))
= Const (x + y)
simplify (Minus (Const x) (Const y))
= Const …Run Code Online (Sandbox Code Playgroud)