Max Bolingbroke <[email protected]> writes: > It is possible that it just takes an extremely long time to build -
That is certainly the case. You need to let it run for at least four or five minutes on a fast machine. Also, don't try to use anything above -O0. Here's why: > My initial diagnosis was wrong (I was confused since I was doing a > parallel make). The way Coq generates Haskell code for string literals is amazingly inefficient (there's a special-case hack for Ocaml but none for Haskell). I've managed to partly work around this in the latest checkin, but it still takes around a minute to compile using -O0 on a 2ghz machine, so give it some time. > after all, CoqPass.hs is huge! How long does it typically take in your > experience? Last time I tried waiting for ~15 minutes with no luck. Hrm, that seems too long, but I've never tried anything other than BuildFlavour=quickest (which is what the canned paste-it-into-a-shell-window commands use). Are you building with BuildFlavour=quickest? >> Moreover, in the context of *heterogeneous* metaprogramming, using >> CSP comes with a price > > What do you mean by the "price"? Runtime cost? Or the fact that CSP > (at certain types) forces the embedded language to be a superset of > the host language? Precisely. A term which uses CSP gets flattened to a less-polymorphic type than one which does not use CSP. Specifically, if you use CSP, the flattened type will have (GArrowReify g)=> in its context. Most of the GArrows which aren't Arrows (I suspect all of them) lack GArrowReify instances. > Naturally, there is no "run" that works for all languages, but since > it is a tutorial it would be cool to see a "run" for at least one > particular language :-) Good point. >> It's definitely used inside code brackets; if there were a way I could >> turn it on at syntactical-depth-greater-than-zero but off everywhere >> else I could probably do that. > Really? I'm probably being daft but I can't see what would go wrong if > you turned off rebindable syntax. Can you give an example? The flattener cannot currently handle the following constructs *inside* code-brackets: type-lambda, type-let, coercion-lambda, coercion-application, case-discrimination. Inside code brackets you basically get PCF and not much more. I guess I ought to be more up-front about this on the webpage. So, I guess -XRebindableSyntax is just my way of getting GHC to avoid case-branches wherever possible. But that only matters inside the code brackets -- you've convinced me that there's no reason to have -XRebindableSyntax active on depth=0 terms. So I'm going to try to find a way to have -XModalTypes desugar depth>0 terms as if -XRebindableSyntax were enabled -- that way the flag won't be necessary and won't mess with flat terms. Lastly, I'll add that I do know how to flatten products and coproducts, so case on "Either" and "(,)" will probably be arriving shortly. Beyond that it's a much bigger challenge. - a _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
