All pastes #193407 Raw Edit

Stuff

public text v1 · immutable
·published 2006-10-06 21:14 UTC
rendered paste body
Data expresion = Valex Integer | Sum Espresion Expresion | mult Expresion Expresion


evaluar :: Expresion -> Integer

evaluar Valex n = n
evaluar Mult x y = evaluar x * evaluar y
evaluar Sum x y = evaluar x + evaluar y

iguales :: Expresion -> Expresion -> Bool

iguales (Valex n) (Valex m) = n == m
iguales (Sum x y) (Sum a b)  = iguales x a && iguales y b
iguales (Mult x y) Mult (a b) = iguales x a && iguales y b
iguales | otherwise = false


subexpresion :: Expresion -> exppresion -> Bool

subexpresion x Valex a = iguales x Valex a
subexpresion (Sum a b) (Sum x y) = iguales a x && iguales b y || subexpresion (Sum a b) x || subexpresion (Sum a b) y  
subexpresion (Mult a b) (Mult x y) = iguales x a && iguales b y || subexpresion (Mult a b) x || subexpresion (Mult a b) y
subexpresion (Sum a b) (Mult x y) = subexpresion (Sum a b) x || subexpresion (Sum a b) x
subexpresion (Mult a b) (Sum x y ) = subexpresion (Mult a b) x || subexpresion (Sum a b) y