{-# LANGUAGE CPP #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_HADDOCK hide #-}
module Data.Array.Accelerate.LLVM.Execute.Environment
where
import Data.Array.Accelerate.AST
#if __GLASGOW_HASKELL__ < 800
import Data.Array.Accelerate.Error
#endif
import Data.Array.Accelerate.LLVM.Execute.Async
data AvalR arch env where
Aempty :: AvalR arch ()
Apush :: AvalR arch env -> AsyncR arch t -> AvalR arch (env, t)
aprj :: Idx env t -> AvalR arch env -> AsyncR arch t
aprj ZeroIdx (Apush _ x) = x
aprj (SuccIdx idx) (Apush val _) = aprj idx val
#if __GLASGOW_HASKELL__ < 800
aprj _ _ = $internalError "aprj" "inconsistent valuation"
#endif