module SyntaxTrees.Haskell.Pattern where import SyntaxTrees.Haskell.Common (Literal, QCtor, QCtorOp, Var) data Pattern = CtorPattern { Pattern -> QCtor ctor :: QCtor , Pattern -> [Pattern] fields :: [Pattern] } | InfixCtorPattern { Pattern -> QCtorOp ctorOp :: QCtorOp , fields :: [Pattern] } | RecordPattern { ctor :: QCtor , Pattern -> [(Var, Maybe Pattern)] namedFields :: [(Var, Maybe Pattern)] } | WildcardRecordPattern { ctor :: QCtor , namedFields :: [(Var, Maybe Pattern)] } | AliasedPattern Var Pattern | ListPattern [Pattern] | TuplePattern [Pattern] | VarPattern Var | LitPattern Literal | Wildcard deriving (Int -> Pattern -> ShowS [Pattern] -> ShowS Pattern -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Pattern] -> ShowS $cshowList :: [Pattern] -> ShowS show :: Pattern -> String $cshow :: Pattern -> String showsPrec :: Int -> Pattern -> ShowS $cshowsPrec :: Int -> Pattern -> ShowS Show)