[project @ 2000-03-25 12:38:40 by panne]
[ghc-hetmet.git] / ghc / compiler / NOTES
1 Notes June 99
2 ~~~~~~~~~~~~~
3 * In nofib/spectral/mandel2/Main.check_radius, there's a call to (fromIntegral m), where
4   m is defined at top level. The full-laziness pass doesn't catch this because by
5   the time it runs, enough inlining has happened that it looks like
6         case ccall ... of (# a,b #) -> ...
7   and the full laziness pass doesn't float unboxed things.
8
9 * The same function is an excellent example of where liberate-case would be a win.
10
11 * Don't forget to try CSE
12
13 Interface files
14 ~~~~~~~~~~~~~~~
15 * Don't need to pin a kind on the type variable in a interface class decl,
16   because it'll be correctly re-inferred when we read it in.
17
18 * The double semicolon at the end of an interface-file signature is so that
19   the lexer can run through the pragmas very fast when -O isn't being used.
20
21 * In export lists, T|(A,B) says that constructors A and B are exported, 
22   but not the type T.  Similarly for classes.  
23   We can't say T(T,A,B) and T(A,B) to export or not-export T respectively,
24   because the type T might have a constructor T.
25