
it seems that in the wild (all over the library source), `isTrue#` is typically used as a function for converting from `Int#`, produced by a comparison operator, to `Bool`, rather than as a validity test for `True`. I have yet to see any explanation of why that is appropriate. Right, I see what you mean. So the only way the `isTrue#` and `isFalse#` functions are "safe" is because they promise to do what their names imply. You've focused on `isTrue#`, which indeed is identical to `tagToEnum#` but
#8326: Place heap checks common in case alternatives before the case -------------------------------------+------------------------------------- Reporter: jstolarek | Owner: Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: | Blocked By: None/Unknown | Related Tickets: #1498 Test Case: | Blocking: 8317 | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by jstolarek): Replying to [comment:8 dfeuer]: this is definitely not the case with `isFalse#`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8326#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler