{-|
Copyright   : (C) 2020, QBayLogic B.V.
License     : BSD2 (see the file LICENSE)
Maintainer  : QBayLogic B.V. <devops@qbaylogic.com>

The partial evalautor for the GHC front-end. This can be used to evaluate
terms in Clash core to WHNF or NF, using knowledge of GHC primitives and types.
For functions which can use this evaluator, see Clash.Core.PartialEval.
-}

module Clash.GHC.PartialEval where

import Clash.Core.PartialEval

import Clash.GHC.PartialEval.Eval
import Clash.GHC.PartialEval.Quote

-- | The partial evaluator for the GHC front-end. For more details about the
-- implementation see Clash.GHC.PartialEval.Eval for evaluation to WHNF and
-- Clash.GHC.PartialEval.Quote for quoting to NF.
--
ghcEvaluator :: Evaluator
ghcEvaluator :: Evaluator
ghcEvaluator = (Term -> Eval Value) -> (Value -> Eval Normal) -> Evaluator
Evaluator Term -> Eval Value
eval Value -> Eval Normal
quote