{-# LANGUAGE PatternSynonyms #-}

pattern P a <- C a where P a = C a

pattern HeadC x <- x : xs
  where
    HeadC x = [x]

pattern HeadC' x <-
  x : xs
  where
    HeadC' x = [x]

pattern Simple <- "Simple"
  where
    Simple = "Complicated"

pattern a :< b <-
  (a, b)
  where
    a :< b = (a, b)
