perfect-hash-generator-1.0.0: Perfect minimal hashing implementation in native Haskell
Safe HaskellSafe
LanguageHaskell2010

Data.PerfectHash.Hashing

Description

Implements the specialized hash function for this perfect hashing algorithm.

C code that makes use of the perfect hash table output must exactly re-implement this hash function.

Synopsis

Constants

primeFNV :: Int Source #

This choice of prime number 0x01000193 was taken from the Python implementation on Steve Hanov's page.

Class instances

class ToHashableChunks a where Source #

Mechanism for a key to be decomposed into units processable by the FNV-1a hashing algorithm.

Methods

toHashableChunks :: a -> [Hash] Source #

Instances

Instances details
ToHashableChunks Int Source # 
Instance details

Defined in Data.PerfectHash.Hashing

ToHashableChunks String Source # 
Instance details

Defined in Data.PerfectHash.Hashing

ToHashableChunks Text Source # 
Instance details

Defined in Data.PerfectHash.Hashing

Main functions

hash Source #

Arguments

:: ToHashableChunks a 
=> Nonce

nonce

-> a

key

-> Hash 

The interface is comparable to the hashWithSalt function from the hashable package.

Uses the "FNV-1a" algorithm from the FNV website:

hash = offset_basis
for each octet_of_data to be hashed
        hash = hash xor octet_of_data
        hash = hash * FNV_prime
return hash