module HaskellWorks.Data.Drop
( Container(..)
, Drop(..)
) where
import Data.Int
import Data.Word
import HaskellWorks.Data.Container
import HaskellWorks.Data.Positioning
import Prelude hiding (drop)
import qualified Data.ByteString as BS
import qualified Data.List as L
import qualified Data.Vector as DV
import qualified Data.Vector.Storable as DVS
class Container v => Drop v where
drop :: Count -> v -> v
instance Drop [a] where
drop = L.drop . fromIntegral
instance Drop BS.ByteString where
drop = BS.drop . fromIntegral
instance Drop (DV.Vector Word8) where
drop = DV.drop . fromIntegral
instance Drop (DV.Vector Word16) where
drop = DV.drop . fromIntegral
instance Drop (DV.Vector Word32) where
drop = DV.drop . fromIntegral
instance Drop (DV.Vector Word64) where
drop = DV.drop . fromIntegral
instance Drop (DVS.Vector Word8) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Word16) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Word32) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Word64) where
drop = DVS.drop . fromIntegral
instance Drop (DV.Vector Int8) where
drop = DV.drop . fromIntegral
instance Drop (DV.Vector Int16) where
drop = DV.drop . fromIntegral
instance Drop (DV.Vector Int32) where
drop = DV.drop . fromIntegral
instance Drop (DV.Vector Int64) where
drop = DV.drop . fromIntegral
instance Drop (DVS.Vector Int8) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Int16) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Int32) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Int64) where
drop = DVS.drop . fromIntegral
instance Drop (DVS.Vector Int) where
drop = DVS.drop . fromIntegral