When I looked at it a year ago or so, it was a return of one constructor in a sum. Looking at core, you can see several places where a function is called and that function always returns the same constructor, so the case analysis of the return value is not needed; it should be returned as an unboxed tuple instead I'll see if I can get a simple example to illustrate the problem.
I talked to Simon PJ about it and he thought an analysis and transformation for such a thing would be a good idea, but someone has to do the work, of course. Another unrelated problem, I think, is that ghc needs to promote in-memory variables to registers when possible. Perhaps the new code generator has such a transformation? -- Lennart On Mon, Mar 30, 2009 at 3:28 AM, Don Stewart <d...@galois.com> wrote: > Nested constructed product returns? Or constructed sums? > > lennart: >> Well, yes and no. GHC actually does a decent job when given very >> imperative code with references and mutable arrays. >> Now the type I use to wrap the references to get type safe l-values >> and r-values makes it tricker, and ghc lacks a crucial optimization >> for specialization of constructor returns. >> With that in place I think the code could be quite performant. > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe