module CoreTools where
-- GHC API
-import qualified DynFlags
+import qualified GHC
import qualified Type
import qualified HsExpr
import qualified HsTypes
-import qualified RdrName
import qualified HsBinds
+import qualified RdrName
import qualified OccName
-import qualified HsBinds
+import qualified TysWiredIn
+import qualified Bag
+import qualified DynFlags
import qualified SrcLoc
-import qualified HsTools
+import GhcTools
+import HsTools
-- | Evaluate a core Type representing type level int from the tfp
-- library to a real int.
(HsBinds.HsValBinds $ (HsBinds.ValBindsIn binds) [])
(SrcLoc.noLoc expr)
- core <- toCore expr
+ let modules = map GHC.mkModuleName ["Types.Data.Num"]
+ core <- toCore modules expr
execCore core
+
+-- | Get the length of a SizedWord type
+sized_word_len :: Type.Type -> Int
+sized_word_len ty =
+ eval_tfp_int len
+ where
+ (tycon, args) = Type.splitTyConApp ty
+ [len] = args
+