packages feed

hoq-0.1.0.0: src/Syntax/Pattern.hs

module Syntax.Pattern where

data ICon = ILeft | IRight deriving Eq
data PatternCon c = PatternCon Int Int String [([Pattern c], c)]
data Pattern c = Pattern (PatternCon c) [Pattern c] | PatternVar String | PatternI ICon

instance Eq (PatternCon c) where
    PatternCon i _ _ _ == PatternCon i' _ _ _ = i == i'

instance Eq (Pattern c) where
    PatternI c   == PatternI c'  = c == c'
    PatternVar _ == PatternVar _ = True
    Pattern c _  == Pattern c' _ = c == c'
    _            == _            = False