-- | The module implements /directed acyclic word graphs/ (DAWGs) internaly
-- represented as /minimal acyclic deterministic finite-state automata/.
-- The implementation provides fast insert and delete operations
-- which can be used to build the DAWG structure incrementaly.
--
-- See the "Data.DAWG.Ord" module if you look for a more generic
-- solution (which, for the moment, lacks some of the functionality provided
-- here, e.g. the `delete` function).


module Data.DAWG.Int
(
-- * DAWG type
  DAWG
, ID
, Sym
, Val
, 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