packages feed

nestedmap-0.1.0.1: src/Data/Nested/Forest.hs

{-# LANGUAGE GADTs, NoImplicitPrelude, UnicodeSyntax #-}

module Data.Nested.Forest
       ( -- * Forest type
         Forest
         -- * Query
       , trees, treeAssocs
       , null, size
       , lookup, member
         -- * Construction
       , empty
       , singleton
       , fromFoldable
       , fromList
         -- * List
       , toList
       ) where

import Data.Function (flip)
import Data.Maybe (Maybe)
import Data.Ord (Ord)
import Data.Int (Int)
import Data.Bool (Bool)
import Data.Foldable (Foldable)
import Data.Traversable (Traversable)
import Data.Nested.Internal ( Forest
                            , trees, treeAssocs
                            , nullForest
                            , sizeForest
                            , emptyForest
                            , singletonForest
                            , fromFoldableForest
                            , fromListForest
                            , toListForest
                            , lookupForest
                            , memberForest                              
                            )

empty ∷ Forest κ α
empty = emptyForest

null ∷ Forest κ α → Bool
null = nullForest

size ∷ Forest κ α → Int
size = sizeForest

singleton ∷ Foldable φ ⇒ φ (κ,α) → Forest κ α
singleton = singletonForest

fromFoldable ∷ (Foldable φ, Foldable ψ, Ord κ) ⇒ ψ (φ (κ, α)) → Forest κ α
fromFoldable = fromFoldableForest

fromList ∷ (Ord κ) ⇒ [[(κ, α)]] → Forest κ α
fromList = fromListForest

toList ∷ Forest κ α → [[(κ, α)]]
toList = toListForest

lookup ∷ (Traversable φ, Ord κ) ⇒ φ κ → Forest κ α → φ (Maybe α)
lookup = flip lookupForest

member ∷ (Traversable φ, Ord κ) ⇒ φ κ → Forest κ α → φ Bool
member = flip memberForest