module SubHask.Compatibility.BloomFilter
( BloomFilter
)
where
import SubHask.Algebra
import SubHask.Category
import SubHask.Internal.Prelude
import qualified Data.BloomFilter as BF
newtype BloomFilter (n::Nat) a = BloomFilter (BF.Bloom a)
mkMutable [t| forall n a. BloomFilter n a |]
type instance Scalar (BloomFilter n a) = Int
type instance Logic (BloomFilter n a) = Bool
type instance Elem (BloomFilter n a) = a
type instance SetElem (BloomFilter n a) b = BloomFilter n b
hash = undefined
instance KnownNat n => Semigroup (BloomFilter n a)
instance KnownNat n => Monoid (BloomFilter n a) where
zero = BloomFilter (BF.empty hash n)
where
n = fromInteger $ natVal (Proxy::Proxy n)
instance KnownNat n => Constructible (BloomFilter n a)
instance KnownNat n => Container (BloomFilter n a) where
elem a (BloomFilter b) = BF.elem a b
instance KnownNat n => Normed (BloomFilter n a) where
size (BloomFilter b) = BF.length b