-- |
-- Module      : Data.Array.Accelerate.Analysis.Hash.TH
-- Copyright   : [2017..2020] The Accelerate Team
-- License     : BSD3
--
-- Maintainer  : Trevor L. McDonell <trevor.mcdonell@gmail.com>
-- Stability   : experimental
-- Portability : non-portable (GHC extensions)
--

module Data.Array.Accelerate.Analysis.Hash.TH (

  hashQ,
  hashWithSaltQ,

) where

import Data.Hashable
import Language.Haskell.TH


hashQ :: Hashable a => a -> ExpQ
hashQ = intE . hash

hashWithSaltQ :: Hashable a => Int -> a -> ExpQ
hashWithSaltQ s x = intE (hashWithSalt s x)

intE :: Int -> ExpQ
intE = litE . integerL . fromIntegral