module HashStr where

import Data.Bits
import Data.Word

data Triple1 = Triple1 !Word32 !Word32 !Word32

mix1 :: Triple1 -> Triple1
mix1 = (\(Triple1 a b c) -> Triple1 a (b `xor` (a `shiftL` 9)) c) .
       (\(Triple1 a b c) -> Triple1 a (b `xor` (a `shiftL` 9)) c)

data Triple2 = Triple2 !Word64 !Word64 !Word64

mix2 :: Triple2 -> Triple2
mix2 = (\(Triple2 a b c) -> Triple2 a (b `xor` (a `shiftL` 9)) c) .
       (\(Triple2 a b c) -> Triple2 a (b `xor` (a `shiftL` 9)) c)
