serialize statements
This commit is contained in:
parent
4fd2571d55
commit
1a2c2fb50f
1 changed files with 27 additions and 0 deletions
27
Main.hs
27
Main.hs
|
@ -178,3 +178,30 @@ Tautology
|
|||
ghci> bucket $ fromJust $ fst <$> runParser stmt "(!(a|b)<->(!a&!b))"
|
||||
Tautology
|
||||
-}
|
||||
|
||||
data SerializeFormat
|
||||
= Ascii
|
||||
| Latex
|
||||
deriving (Show, Eq)
|
||||
|
||||
serialize :: SerializeFormat -> Statement -> String
|
||||
serialize = aux
|
||||
where
|
||||
aux Ascii = ascii
|
||||
aux Latex = latex
|
||||
|
||||
ascii (Atom string) = string
|
||||
ascii (Not s) = "!" <> ascii s
|
||||
ascii (And s1 s2) = connective "&" (ascii s1) (ascii s2)
|
||||
ascii (Or s1 s2) = connective "|" (ascii s1) (ascii s2)
|
||||
ascii (Implies s1 s2) = connective "->" (ascii s1) (ascii s2)
|
||||
ascii (Iff s1 s2) = connective "<->" (ascii s1) (ascii s2)
|
||||
|
||||
latex (Atom string) = string
|
||||
latex (Not s) = "\\neg " <> latex s
|
||||
latex (And s1 s2) = connective "\\cap " (latex s1) (latex s2)
|
||||
latex (Or s1 s2) = connective "\\cup " (latex s1) (latex s2)
|
||||
latex (Implies s1 s2) = connective "\\to " (latex s1) (latex s2)
|
||||
latex (Iff s1 s2) = connective "\\leftrightarrow " (latex s1) (latex s2)
|
||||
|
||||
connective token s1 s2 = "(" <> s1 <> token <> s2 <> ")"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue