{-# LANGUAGE Rank2Types #-} module HaskellWorks.Data.Ops ( (<|) , (|>) , (><) ) where import qualified HaskellWorks.Data.Cons as HW import qualified HaskellWorks.Data.Container as HW import qualified HaskellWorks.Data.Snoc as HW infixr 5 <|, >< infixl 5 |> (<|) :: HW.Cons v => HW.Elem v -> v -> v <| :: forall v. Cons v => Elem v -> v -> v (<|) = forall v. Cons v => Elem v -> v -> v HW.cons {-# INLINE (<|) #-} (|>) :: HW.Snoc v => v -> HW.Elem v -> v |> :: forall v. Snoc v => v -> Elem v -> v (|>) = forall v. Snoc v => v -> Elem v -> v HW.snoc {-# INLINE (|>) #-} (><) :: (Semigroup v, HW.Container v) => v -> v -> v >< :: forall v. (Semigroup v, Container v) => v -> v -> v (><) = forall a. Semigroup a => a -> a -> a (<>) {-# INLINE (><) #-}