Comments only (concerning rewrite rules)
[ghc-hetmet.git] / compiler / coreSyn / CoreSyn.lhs
index 09e41aa..4ec954c 100644 (file)
@@ -218,14 +218,23 @@ data CoreRule
        -- Locality
        ru_local :: Bool        -- The fn at the head of the rule is
                                -- defined in the same module as the rule
+                               -- and is not an implicit Id (like a record sel
+                               -- class op, or data con)
+               -- NB: ru_local is *not* used to decide orphan-hood
+               --      c.g. MkIface.coreRuleToIfaceRule
     }
 
   | BuiltinRule {              -- Built-in rules are used for constant folding
        ru_name :: RuleName,    -- and suchlike.  It has no free variables.
        ru_fn :: Name,          -- Name of the Id at 
                                -- the head of this rule
-       ru_nargs :: Int,        -- Number of args that ru_try expects
+       ru_nargs :: Int,        -- Number of args that ru_try expects,
+                               -- including type args
        ru_try  :: [CoreExpr] -> Maybe CoreExpr }
+               -- This function does the rewrite.  It given too many
+               -- arguments, it simply discards them; the returned CoreExpr
+               -- is just the rewrite of ru_fn applied to the first ru_nargs args
+               -- See Note [Extra args in rule matching] in Rules.lhs
 
 isBuiltinRule (BuiltinRule {}) = True
 isBuiltinRule _                       = False