Pagini recente » Cod sursa (job #1374224) | Cod sursa (job #2387860) | Cod sursa (job #630938) | Cod sursa (job #1601441) | Cod sursa (job #2277443)
module Lab6 where
import Data.List(nub)
import Data.Maybe(fromJust)
data Fruct
= Mar String Bool
| Portocala String Int
ePortocalaDeSicilia :: Fruct -> Bool
ePortocalaDeSicilia (Portocala "Tarocco" x) = True
ePortocalaDeSicilia (Portocala "Moro" x) = True
ePortocalaDeSicilia (Portocala "Sanguinello" x) = True
ePortocalaDeSicilia (Portocala x y)= False
ePortocalaDeSicilia (Mar x y)= False
type Nume = String
data Prop
= Var Nume
| F
| T
| Not Prop
| Prop :|: Prop
| Prop :&: Prop
deriving (Eq, Read)
infixr 2 :|:
infixr 3 :&:
p1 :: Prop
p1 = ((Var "p") :|: (Var "q")) :&: ((Var "p") :&: (Var "q"))
p2 :: Prop
p2 = ((Var "p") :|: (Var "q")) :&: (Not (Var "p") :&: Not (Var "q"))
p3 :: Prop
p3 = ((Var "p") :&: ((Var "q") :|: (Var "r"))):&:((Not (Var "p") :|: Not (Var "q")):&:(Not (Var "p") :|: Not (Var "q")))
instance Show Prop where
show (Var x) = x
show (x :&: y) = "("++show x ++"/\\" ++show y++")"
show (x :|: y) = "("++show x ++"\\/" ++show y++")"
show (Not x ) = "~" ++ show x
type Env = [(Nume, Bool)]
impureLookup :: Eq a => a -> [(a,b)] -> b
impureLookup a=fromJust . lookup a
eval :: Prop -> Env -> Bool