{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module Control.Funflow.Cache.TH where
import Control.Funflow.Base
import Data.Hashable
import Language.Haskell.TH.Syntax
import System.Random
defaultCacher :: Q Exp
defaultCacher = do
(seed :: Int) <- runIO randomIO
[e| defaultCacherWithIdent seed |]
instance Hashable Loc
defaultCacherLoc :: Int
-> Q Exp
defaultCacherLoc ver = do
loc <- location
[e| defaultCacherWithIdent (hash (loc :: Loc, ver :: Int)) |]