    {-|
    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