packages feed

caml-parser-0.1.0.0: src/CamlParser/Syntax/Pattern.hs

{-# LANGUAGE DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
module CamlParser.Syntax.Pattern where

import CamlParser.Syntax.Location
import CamlParser.Syntax.Constant
import CamlParser.Syntax.Type

data PatternF r
  = PWild
  | PVar String
  | PAlias r String
  | PConstant Constant
  | PTuple [r]
  | PConstr0 String
  | PConstr1 String r
  | POr r r
  | PConstraint r TypeExpr
  | PRecord [(String, r)]
  | PExt String [r]
  deriving (Eq, Show, Functor, Foldable, Traversable)

data Pattern = Pattern
  { unPattern :: PatternF Pattern
  , patLoc    :: Location
  } deriving (Eq, Show)