projects
/
matthijs
/
master-project
/
cλash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Let mkConcSm return a list of ConcSms.
[matthijs/master-project/cλash.git]
/
CoreTools.hs
diff --git
a/CoreTools.hs
b/CoreTools.hs
index 4cafec1b34f8225870b4cb6b32af8ee03505936a..3c26793c8c804ce7f9dd7262851565398638195d 100644
(file)
--- a/
CoreTools.hs
+++ b/
CoreTools.hs
@@
-63,6
+63,14
@@
sized_word_len ty =
where
(tycon, args) = Type.splitTyConApp ty
[len] = args
where
(tycon, args) = Type.splitTyConApp ty
[len] = args
+
+-- | Get the upperbound of a RangedWord type
+ranged_word_bound :: Type.Type -> Int
+ranged_word_bound ty =
+ eval_tfp_int len
+ where
+ (tycon, args) = Type.splitTyConApp ty
+ [len] = args
-- | Evaluate a core Type representing type level int from the TypeLevel
-- library to a real int.
-- | Evaluate a core Type representing type level int from the TypeLevel
-- library to a real int.
@@
-87,6
+95,13
@@
tfvec_len ty =
where
(tycon, args) = Type.splitTyConApp ty
[len, el_ty] = args
where
(tycon, args) = Type.splitTyConApp ty
[len, el_ty] = args
+
+-- | Get the element type of a TFVec type
+tfvec_elem :: Type.Type -> Type.Type
+tfvec_elem ty = el_ty
+ where
+ (tycon, args) = Type.splitTyConApp ty
+ [len, el_ty] = args
-- Is this a wild binder?
is_wild :: CoreSyn.CoreBndr -> Bool
-- Is this a wild binder?
is_wild :: CoreSyn.CoreBndr -> Bool
@@
-119,6
+134,11
@@
is_var :: CoreSyn.CoreExpr -> Bool
is_var (CoreSyn.Var _) = True
is_var _ = False
is_var (CoreSyn.Var _) = True
is_var _ = False
+-- Can the given core expression be applied to something? This is true for
+-- applying to a value as well as a type.
+is_applicable :: CoreSyn.CoreExpr -> Bool
+is_applicable expr = is_fun expr || is_poly expr
+
-- Does the given CoreExpr have any free type vars?
has_free_tyvars :: CoreSyn.CoreExpr -> Bool
has_free_tyvars = not . VarSet.isEmptyVarSet . (CoreFVs.exprSomeFreeVars Var.isTyVar)
-- Does the given CoreExpr have any free type vars?
has_free_tyvars :: CoreSyn.CoreExpr -> Bool
has_free_tyvars = not . VarSet.isEmptyVarSet . (CoreFVs.exprSomeFreeVars Var.isTyVar)