-- | The module implements /directed acyclic word graphs/ (DAWGs) internaly
-- represented as /minimal acyclic deterministic finite-state automata/.
-- The implementation provides a fast insert operation which can be
-- used to build the DAWG structure incrementaly.
--
-- Keys and values must provide an `Enum` instance; see the
-- `Data.DAWG.Ord` module if you look for a more generic solution.


module Data.DAWG.Int
(
-- * DAWG type
  DAWG
, ID
, root

-- * Query
, lookup
, numStates
, numEdges

-- * Traversal
, value
, edges
, follow

-- * Construction
, empty
, fromList
, fromListWith
, fromLang
-- ** Insertion
, insert
, insertWith
-- ** Deletion
, delete

-- * Conversion
, assocs
, keys
, elems
) where


import           Prelude hiding (lookup)

import           Data.DAWG.Gen.Types
import           Data.DAWG.Int.Dynamic