Duncan and I have thought about this too, exactly as you describe. (Just !x) => (# tag#, x# #)
-- Don lennart: > 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