diff --git a/Calculator.hs b/Calculator.hs index 0595065..b228664 100644 --- a/Calculator.hs +++ b/Calculator.hs @@ -5,17 +5,11 @@ import Expr import Parser data Law = Law LawName Equation + deriving Show type LawName = String type Equation = (Expr,Expr) -instance Show Law where - showsPrec _ (Law name (e1, e2)) = - showString (name ++ ": ") - . shows e1 - . showString " = " - . shows e2 - law :: Parser Law law = do name <- upto ':' eqn <- equation @@ -26,21 +20,3 @@ equation = do lh <- expr symbol "=" rh <- expr return (lh, rh) - -sortLaws :: [Law] -> [Law] -sortLaws laws = simple ++ others ++ defn - where (simple, nonsimple) = partition isSimple laws - (defn, others) = partition isDefn nonsimple - -isSimple, isDefn :: Law -> Bool - -isSimple (Law _ (Compose a, Compose b)) - = length a > length b - -isDefn d = case d of - (Law _ (Compose [Con f es], _)) -> all Calculator.isVar es - _ -> False - -isVar v = case v of - (Compose [Var _]) -> True - _ -> False diff --git a/Utils.hs b/Utils.hs index 4c36888..d62a525 100644 --- a/Utils.hs +++ b/Utils.hs @@ -3,13 +3,3 @@ module Utils where symbolic = (`elem` symbolic_ops) symbolic_ops = "!@#$%^&*+./<=>?\\^|:-~" - --- doing 'partition f xs = (filter f xs, filter (not . f) xs)' is too --- slow, cuz it would run same test twice on every paramter. I might --- be wrong tho -partition :: (a -> Bool) -> [a] -> ([a], [a]) -partition _ [] = ([], []) -partition f (x:xs) - | f x = (x:pass, fail) - | otherwise = (pass, x:fail) - where (pass, fail) = partition f xs