{-# LANGUAGE PatternSynonyms #-} module TypedSession.State.Pattern where import TypedSession.State.Type (Creat, Protocol) import qualified TypedSession.State.Type as N pattern Msg :: String -> [String] -> r -> r -> N.MsgOrLabel Creat r pattern Msg a b c d = N.Msg () a b c d pattern Label :: Int -> N.MsgOrLabel Creat r pattern Label i = N.Label () i pattern BranchSt :: bst -> Protocol Creat r bst -> N.BranchSt Creat r bst pattern BranchSt a b = N.BranchSt () a b infixr 5 :> pattern (:>) :: N.MsgOrLabel Creat r -> Protocol Creat r bst -> Protocol Creat r bst pattern (:>) a b = a N.:> b pattern Branch :: r -> [N.BranchSt Creat r bst] -> Protocol Creat r bst pattern Branch a b = N.Branch () a b pattern Goto :: Int -> Protocol Creat r bst pattern Goto i = N.Goto () i pattern Terminal :: Protocol Creat r bst pattern Terminal = N.Terminal ()