Re: Re: Re: Re: [Haskell-cafe] Re: A problem with par and modules boundaries...

On Sun, 2009-05-24 at 12:48 -0400, Mario Blažević wrote:
How about diffing the whole core output (and using -ddump-simpl). If there's a performance difference then there must be a difference in the core code too.
I can't exactly use diff because the generated identifier names are not the same, but after poring over with Emacs ediff I have found only one difference that's not attributable to identifiers:
$diff main.simpl imported.simpl ... 223c232 < a_s1rs [ALWAYS Just L] :: GHC.Integer.Internals.Integer ---
a_s1sV [ALWAYS Just S] :: GHC.Integer.Internals.Integer
...
Good find!
Does this S vs. L difference have anything to do with strictness and laziness?
Yes. So, I think we should open a ghc but report with all the details, particularly the example's source, the ghc version and that highlight of that strictness difference. Duncan

$diff main.simpl imported.simpl ... 223c232 < a_s1rs [ALWAYS Just L] :: GHC.Integer.Internals.Integer ---
a_s1sV [ALWAYS Just S] :: GHC.Integer.Internals.Integer
...
Good find!
Does this S vs. L difference have anything to do with strictness and laziness?
Yes.
So, I think we should open a ghc but report with all the details, particularly the example's source, the ghc version and that highlight of that strictness difference.
Duncan
I have logged the ticket at http://hackage.haskell.org/trac/ghc/ticket/3259 -- Mario Blazevic mblazevic@stilo.com Stilo Corporation This message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure, copying, or distribution is strictly prohibited. If you are not the intended recipient(s) please contact the sender by reply email and destroy all copies of the original message and any attachments.

On Mon, 2009-05-25 at 09:40 -0400, Mario Blazevic wrote:
$diff main.simpl imported.simpl ... 223c232 < a_s1rs [ALWAYS Just L] :: GHC.Integer.Internals.Integer ---
a_s1sV [ALWAYS Just S] :: GHC.Integer.Internals.Integer
...
Good find!
Does this S vs. L difference have anything to do with strictness and laziness?
Yes.
So, I think we should open a ghc but report with all the details, particularly the example's source, the ghc version and that highlight of that strictness difference.
I have logged the ticket at
Thanks for being so persistent Mario! Simon has diagnosed the bug. It's really rather subtle. Duncan
participants (2)
-
Duncan Coutts
-
Mario Blazevic