A set of example programs for handling external core format.
In particular, typechecker and interpreter give a precise semantics.
-
-To build, run "make".
---------------------
-tjc April 2008:
+tjc April/May 2008:
==== Notes ====
The checker should work on most programs. Bugs I'm aware of:
-1. GHC generates some questionable coercion applications involving
- partially-applied function arrows (for details, see:
+1. There's some business I don't quite understand involving
+ coercions and subkinding (for details, see:
http://www.haskell.org/pipermail/cvs-ghc/2008-April/041949.html)
This shows up when typechecking a few of the library modules.
-
+
2. There's some weirdness involving funny character literals. This can
be fixed by writing a new lexer for chars rather than using Parsec's
built-in charLiteral lexer. But I haven't done that.
+3. When typechecking the ghc-prim:GHC.PrimopWrappers library module,
+ some declarations seem to have the wrong type signature (due to
+ confusion between (forall (t::*) ...) and (forall (t::?) ...).)
+ This is because the ? kind is not expressible in Haskell.
+
Typechecking all the GHC libraries eats about a gig of heap and takes a
long time. I blame Parsec. (Someone who was bored, or understood happy
better than I do, could update the old happy parser, which is still in the
repo.)
-The interpreter is not working yet.
+The interpreter is also memory-hungry, but works for small programs
+that only do simple I/O (e.g., putStrLn is okay; not much more than that)
+and don't use Doubles or arrays. For example: exp3_8, gen_regexps, queens,
+primes, rfib, tak, wheel-sieve1, and wheel-sieve2, if modified so as not
+to take input or arguments.
==== Building ====