{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
{-# language BangPatterns #-}
{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, GeneralizedNewtypeDeriving #-}
{-# language LambdaCase #-}
{-# language DeriveDataTypeable #-}
{-# language DeriveGeneric #-}
{-# options_ghc -Wno-type-defaults #-}
{-# options_ghc -Wno-unused-top-binds #-}
{-# options_ghc -Wno-unused-imports #-}
{-# options_ghc -Wno-name-shadowing #-}
module Data.VPTree
(VPTree
, build
, range
, draw
)
where
import Control.Applicative (Alternative(..))
import Control.Monad.IO.Class (MonadIO(..))
import Data.Word (Word32)
import Control.Monad.ST (ST, runST)
import Text.Printf (PrintfArg, printf)
import Control.Monad.Writer (MonadWriter(..))
import qualified System.Random.MWC.Probability as P (Gen, Prob, withSystemRandom, asGenIO, GenIO, create, initialize, sample, samples, normal, bernoulli, uniformR)
import Control.Monad.Primitive (PrimMonad(..), PrimState)
import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
import Control.Monad.Trans.Writer (WriterT(..), runWriterT, execWriterT)
import qualified Data.Vector as V (Vector, map, filter, length, toList, replicate, partition, zipWith, head, tail, fromList, thaw, freeze, (!), foldl)
import qualified Data.Vector.Generic as VG (Vector(..))
import Data.VPTree.Internal (VT, VPTree, withST, withST_, withIO)
import Data.VPTree.Build (build, buildVT)
import Data.VPTree.Query (range)
import Data.VPTree.Draw (draw)