Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- put "" str = ""
- put [s] str = [s]
- put (p:r) str = [p] ++ str ++ put r str
- data Expression = Z Char | N Expression | K Expression Expression | A Expression Expression | C Expression Expression
- find _ [] = False
- find z (p:r) = if p == z then True else find z r
- deleteIfRepeat [] = []
- deleteIfRepeat (p:r) = if find p r then deleteIfRepeat r else p : deleteIfRepeat r
- instance Show Expression where
- show (Z a) = [a]
- show (N a) = show a
- show (K a b) = deleteIfRepeat (show a ++ show b)
- show (A a b) = deleteIfRepeat (show a ++ show b)
- show (C a b) = deleteIfRepeat (show a ++ show b)
- -- zależnie od typu wyrażenia jakie podamy jako input zwracany jest inny string wyjściowy
- drukuj (Z a) = [a] -- zwracane jest to samo co zostało podane na wejście pod postacią Chara
- drukuj (N a) = "~" ++ drukuj a -- zwracana jest wratość podana na wejście poprzedzona znakiem tylda "~"
- drukuj (K a b) = "(" ++ drukuj a ++ " & " ++ drukuj b ++ ")" -- jako input podawane są dwie wartości i są one zamykane w nawias i rozdzielone znakiem "&"
- drukuj (A a b) = "(" ++ drukuj a ++ " | " ++ drukuj b ++ ")" -- tak samo jak powyżej tylko, że są rozdzielane znakiem "|"
- drukuj (C a b) = "(" ++ drukuj a ++ " => " ++ drukuj a ++ ")" -- tak samo jak powyżej tylko są rozdzielane znakiem "=>"
- wypisz_zmienne a = putStrLn ("[" ++ (put (show a) ", " ) ++ "]")
- -- przykładowe zapytania
- przyklad1 = (C (N (Z 'p')) (A (K (Z 'p') (Z 'q')) (Z 'r')))
- main = do
- print(drukuj przyklad1)
- wypisz_zmienne przyklad1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement