{-# OPTIONS_HADDOCK hide #-}
module Data.Tree.AVL.Utils
(
empty,isEmpty,isNonEmpty,singleton,pair,tryGetSingleton,
) where
import Data.Tree.AVL.Internals.Types (AVL(..))
{-# INLINE empty #-}
empty :: AVL e
empty :: forall e. AVL e
empty = AVL e
forall e. AVL e
E
isEmpty :: AVL e -> Bool
isEmpty :: forall e. AVL e -> Bool
isEmpty AVL e
E = Bool
True
isEmpty AVL e
_ = Bool
False
{-# INLINE isEmpty #-}
isNonEmpty :: AVL e -> Bool
isNonEmpty :: forall e. AVL e -> Bool
isNonEmpty AVL e
E = Bool
False
isNonEmpty AVL e
_ = Bool
True
{-# INLINE isNonEmpty #-}
singleton :: e -> AVL e
singleton :: forall e. e -> AVL e
singleton e
e = AVL e -> e -> AVL e -> AVL e
forall e. AVL e -> e -> AVL e -> AVL e
Z AVL e
forall e. AVL e
E e
e AVL e
forall e. AVL e
E
{-# INLINE singleton #-}
pair :: e -> e -> AVL e
pair :: forall e. e -> e -> AVL e
pair e
e0 e
e1 = AVL e -> e -> AVL e -> AVL e
forall e. AVL e -> e -> AVL e -> AVL e
P (AVL e -> e -> AVL e -> AVL e
forall e. AVL e -> e -> AVL e -> AVL e
Z AVL e
forall e. AVL e
E e
e0 AVL e
forall e. AVL e
E) e
e1 AVL e
forall e. AVL e
E
{-# INLINE pair #-}
tryGetSingleton :: AVL e -> Maybe e
tryGetSingleton :: forall e. AVL e -> Maybe e
tryGetSingleton (Z AVL e
E e
e AVL e
_) = e -> Maybe e
forall a. a -> Maybe a
Just e
e
tryGetSingleton AVL e
_ = Maybe e
forall a. Maybe a
Nothing
{-# INLINE tryGetSingleton #-}