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