{-# LANGUAGE GADTs, NoImplicitPrelude, UnicodeSyntax #-} module Data.Nested.Tree ( -- * Tree type Tree -- * Query , fruit, forest , 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 ( Tree , nullTree, fruit, forest , sizeTree , emptyTree , singletonTree , fromFoldableTree , fromListTree , toListTree , lookupTree , memberTree ) empty ∷ α → Tree κ α empty = emptyTree null ∷ Tree κ α → Bool null = nullTree size ∷ Tree κ α → Int size = sizeTree lookup ∷ (Traversable φ, Ord κ) ⇒ φ κ → Tree κ α → (α, φ (Maybe α)) lookup = flip lookupTree member ∷ (Traversable φ, Ord κ) ⇒ φ κ → Tree κ α → φ Bool member = flip memberTree singleton ∷ Foldable φ ⇒ α → φ (κ,α) → Tree κ α singleton = singletonTree fromFoldable ∷ (Foldable φ, Foldable ψ, Ord κ) ⇒ α → ψ (φ (κ, α)) → Tree κ α fromFoldable = fromFoldableTree fromList ∷ (Ord κ) ⇒ α → [[(κ, α)]] → Tree κ α fromList = fromListTree toList ∷ Tree κ α → (α, [[(κ, α)]]) toList = toListTree