{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RoleAnnotations #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module T15365 where

$([d| type (|||) = Either

      (&&&) :: Bool -> Bool -> Bool
      (&&&) = (&&)

      type role (***)
      data (***)

      class (???)
      instance (???)

      data family ($$$)
      data instance ($$$)

      type family (^^^)
      type instance (^^^) = Int

      type family (###) where
        (###) = Int

      pattern (:!!!) :: Bool
      pattern (:!!!) = True
    |])

