projects
/
matthijs
/
master-project
/
cλash.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
2ca7af8
)
Add is_poly and is_var predicates.
author
Matthijs Kooijman
<m.kooijman@student.utwente.nl>
Sun, 21 Jun 2009 14:46:05 +0000
(16:46 +0200)
committer
Matthijs Kooijman
<m.kooijman@student.utwente.nl>
Sun, 21 Jun 2009 14:52:57 +0000
(16:52 +0200)
CoreTools.hs
patch
|
blob
|
history
diff --git
a/CoreTools.hs
b/CoreTools.hs
index 0bfe58fa8fd4657149cf171e5295da54eb001559..444a4ba6c2ab7e469e164b030f77b5067c905459 100644
(file)
--- a/
CoreTools.hs
+++ b/
CoreTools.hs
@@
-3,7
+3,10
@@
-- Core and Haskell (it uses HsTools for this), but only the functions that
-- know about various libraries and know which functions to call.
module CoreTools where
-- Core and Haskell (it uses HsTools for this), but only the functions that
-- know about various libraries and know which functions to call.
module CoreTools where
-
+
+--Standard modules
+import qualified Maybe
+
-- GHC API
import qualified GHC
import qualified Type
-- GHC API
import qualified GHC
import qualified Type
@@
-101,3
+104,16
@@
is_fun :: CoreSyn.CoreExpr -> Bool
-- Treat Type arguments differently, because exprType is not defined for them.
is_fun (CoreSyn.Type _) = False
is_fun expr = (Type.isFunTy . CoreUtils.exprType) expr
-- Treat Type arguments differently, because exprType is not defined for them.
is_fun (CoreSyn.Type _) = False
is_fun expr = (Type.isFunTy . CoreUtils.exprType) expr
+
+-- Is the given core expression polymorphic (i.e., does it accept type
+-- arguments?).
+is_poly :: CoreSyn.CoreExpr -> Bool
+-- Treat Type arguments differently, because exprType is not defined for them.
+is_poly (CoreSyn.Type _) = False
+is_poly expr = (Maybe.isJust . Type.splitForAllTy_maybe . CoreUtils.exprType) expr
+
+-- Is the given core expression a variable reference?
+is_var :: CoreSyn.CoreExpr -> Bool
+is_var (CoreSyn.Var _) = True
+is_var _ = False
+