Infinite floating point literal not possible
One thing that I have noticed in the past is that it is not possible to embed an efficient floating point literal in one's program. For instance, you might write:
f :: Double -> ... g = ... f (1/0)
However, GHC will end up floating out the free expression
1/0 to a top-level CAF. This means that you must take a tag check every time you refer to the literal. Surely we can do better than this.
Either we should avoid floating out such simple expressions or we should introduce constant-folding for this case and teach C-- about non-finite floating-point literals.