cvs commit: hugs98/src builtin.c

reid 2001/04/01 21:24:13 PDT Modified files: src builtin.c Log: This is a bogus commit because I just accidentally committed all files instead of just machdep.c (and I can't remember the cvs magic to undo it). So here's what all those committed files did: interns.c: The old file interns.c (which is usually ifdef'd out) provides access to a bunch of Hugs internals. This provided a primitive: catchException2 :: a -> Either Cell a where Cell is an error object. The only change here is a fix to the implementation. It couldn't possibly work the way it was - which leaves me wondering what happened to it. builtin.c: Put a (fixed) copy of catchException2 here and added throwException data HugsException primitive primCatchException :: a -> Either HugsException a primitive primThrowException :: HugsException -> a Note that using these directly would break referential transparency. To fix that, one or the other (doesn't matter) ought to be in the IO monad. But there's difficult interactions with the thread implementation (that's what the fuss is about after all!) so we provide the unsafe versions here and wrap them up before exporting them. Incidentally, notice that these names (which have to be exported from the Prelude and so pollute the user's namespace) either include the word "hugs" or starts with the word "prim". printer.c: Added a primop for printing Hugs exception objects primitive primShowException :: HugsException -> String It originally had type: primitive primShowException :: HugsException -> ShowS but printDBadRedex ignores its second argument when printing error objects. Revision Changes Path 1.12 +3 -3 hugs98/src/builtin.c
participants (1)
-
Alastair Reid