hlint-1.2: src/HSE/Match.hs
{-# LANGUAGE PatternGuards, ViewPatterns, MultiParamTypeClasses #-}
module HSE.Match where
import Data.Generics
import Data.Generics.PlateData
import Data.List
import Data.Maybe
import Language.Haskell.Exts
import HSE.Bracket
import HSE.Util
class View a b where
view :: a -> b
data App2 = NoApp2 | App2 Exp Exp Exp deriving Show
instance View Exp App2 where
view (fromParen -> InfixApp lhs op rhs) = view $ opExp op `App` lhs `App` rhs
view (fromParen -> (fromParen -> f `App` x) `App` y) = App2 f x y
view _ = NoApp2
data App1 = NoApp1 | App1 Exp Exp deriving Show
instance View Exp App1 where
view (fromParen -> f `App` x) = App1 f x
view _ = NoApp1
(~=) :: Exp -> String -> Bool
(Con (Special Cons)) ~= ":" = True
(Con x) ~= y = Var x ~= y
(List []) ~= "[]" = True
x ~= y = fromVar x == Just y