[fix handling of literals in a strict context, remove vestiges of support for boxed literals
John Meacham <john@repetae.net>**20060124012119] hunk ./Grin/FromE.hs 299
+    ce e | Just z <- literal e = return (Return z)
hunk ./Grin/FromE.hs 462
+    cc e | Just _ <- literal e = error "literal in lazy context"
hunk ./Grin/FromE.hs 533
+        f x | Just z <- literal x = z
hunk ./Grin/FromE.hs 539
-    -- Takes an E and returns something constant of type (TyPtr TyNode)
+    -- | converts an unboxed literal
+    literal :: Monad m =>  E -> m Val
+    literal (ELit (LitInt i (ELit (LitCons n [] (ESort EHash))))) | RawType <- nameType n = return $ Lit i (Ty $ toAtom (show n))
+    literal _ = fail "not a literal term"
+
+
+    -- | Takes an E and returns something constant which is either a pointer to a constant heap location or a CAF which may be evaluated or a literal
+    -- constant is sort of a misnomer here, it means a compile time constant, the CAFs may be updated at runtime when evaluated.
hunk ./Grin/FromE.hs 556
-    constant (ELit (LitInt i (ELit (LitCons n [] (ESort EHash))))) | RawType <- nameType n = return $ Lit i (Ty $ toAtom (show n))
-    constant (ELit (LitInt i (ELit (LitCons n [] (ESort EStar))))) | Just pt <- Map.lookup n ctypeMap = (return $ Const (NodeC (toAtom $ 'C':show n) [(Lit i (Ty (toAtom pt)))]))
+--    constant (ELit (LitInt i (ELit (LitCons n [] (ESort EStar))))) | Just pt <- Map.lookup n ctypeMap = (return $ Const (NodeC (toAtom $ 'C':show n) [(Lit i (Ty (toAtom pt)))]))
hunk ./Grin/FromE.hs 558
+    constant e | Just l <- literal e = return l
hunk ./Grin/FromE.hs 566
+    -- | convert a constructor into a Val