packages feed

dedukti-1.1.3: Dedukti/Driver/Interactive.hs

-- |
-- Copyright : © 2009 CNRS - École Polytechnique - INRIA
-- License   : GPL

module Dedukti.Driver.Interactive (eval) where

import Dedukti.Module
import Dedukti.Parser
import qualified Dedukti.CodeGen.Exts as CG
import qualified Dedukti.Rule as Rule
import Data.ByteString.Lazy (ByteString)


dk = QuasiQuote { quoteExp = parse "<interactive>"
                , quoteDec = undefined }

-- | Emit Haskell code for one module.
eval :: String -> ByteString
eval input =
    let (decls, rules) = parse "<interactive>" input
        code = map CG.emit (Rule.ruleSets decls rules) :: [CG.Code]
        mod = Module (hierarchy ["interactive"])
    in CG.serialize (undefined :: CG.Code) mod $ CG.coalesce code