
Yo, I didn't find many references to this on Google except a 2001 message saying "Send this problem to us!" I don't know what's changed since then, so I'll poke the list: I compiled my code with -fdicts-strict. (Why is this not a mainstream thing? It eliminates gratuitous polymorphism overhead, which is one of my biggest sources of angst!) Looking at ghc-core, my code appears to *always* give the exception "Oops! Entered absent arg ww_s9eC{v} [lid] <pred>main:Data.Algebra.Ring.Ring{tc r2tU} c{tv a8Os} [tv]" Is this typical? Where should I send this? Louis Wasserman wasserman.louis@gmail.com http://profiles.google.com/wasserman.louis

On 7 April 2010 00:23, Louis Wasserman
biggest sources of angst!) Looking at ghc-core, my code appears to always give the exception "Oops! Entered absent arg ww_s9eC{v} [lid] <pred>main:Data.Algebra.Ring.Ring{tc r2tU} c{tv a8Os} [tv]" Is this typical? Where should I send this?
This is certainly a bug. Is it possible to extract a minimal test case, and post it on the GHC Trac (http://hackage.haskell.org/trac/ghc/)? Cheers, Max

Louis Wasserman
I compiled my code with -fdicts-strict.
What is this actually supposed to do? It seems the documentation is missing: http://www.haskell.org/ghc/docs/latest/html/users_guide/options-optimise.htm... Anyway my guess is that if you want to use this flag, then you'd need to (re-)compile the whole world (including (base) libraries). J.W.

On 11 April 2010 22:11, Johannes Waldmann
Louis Wasserman
writes: I compiled my code with -fdicts-strict.
What is this actually supposed to do? It seems the documentation is missing: http://www.haskell.org/ghc/docs/latest/html/users_guide/options-optimise.htm...
From reading the source code, it appears to make any dictionary fields of GADTs strict. So the dictionary for Eq in:
data EqDict a where EqDict :: Eq a => EqDict a Will be a strict field.
Anyway my guess is that if you want to use this flag, then you'd need to (re-)compile the whole world (including (base) libraries).
I don't think this requires a recompile - although of course any GADTs compiled without -fdicts-strict will be lazily evaluated. Cheers, Max

| >> I compiled my code with -fdicts-strict. | > | > What is this actually supposed to do? It seems the documentation is | missing: | > http://www.haskell.org/ghc/docs/latest/html/users_guide/options- | optimise.html#options-f | | >From reading the source code, it appears to make any dictionary fields | of GADTs strict. So the dictionary for Eq in: | | data EqDict a where | EqDict :: Eq a => EqDict a | | Will be a strict field. dicts-strict is supposed to make any function that takes a dictionary argument strict in that argument. In principle this is a useful optimization, since dictionaries never diverge, but I have never really followed through on it. One reason is that the picture is more cloudy with recursive dictionaries. In any case, I have no looked at it for ages so it might have bit-rotted. If anyone wants to give it a whirl, do have a go, and look at the Core you get. Simon
participants (4)
-
Johannes Waldmann
-
Louis Wasserman
-
Max Bolingbroke
-
Simon Peyton-Jones