I saw your paper on LtU last week. Here's an extra plug: I really enjoyed it.
When can we expect to see Strict Core replacing System Fc? :) -- ryan On Tue, May 26, 2009 at 5:32 PM, Max Bolingbroke <batterseapo...@hotmail.com> wrote: > 2009/5/26 Ryan Ingram <ryani.s...@gmail.com>: >> What causes par# to >> get executed? Does GHC overload case for unboxed return values to >> force the evaluation of the scrutinee even if its return value isn't >> used? > > As you noted, the type of "par" is a -> Int#. Furthermore, the only > possible evaluation semantics for unboxed types in GHC's intermediate > language is strict. This means that your case expression has to > evaluate the scrutinee eagerly. > > Indeed, consider the following program (which looks even lazier than > your example): > > let x :: Int# = error "boom!" > in 10 > > This will diverge in either Haskell or Core, because both languages > promise that if have an unlifted thing in your environment /it really > has been evaluated/. SPJ and I recently wrote a paper [1] proposing an > intermediate language for GHC that would allow Core to express thunks > of unlifted types, but even so I don't think we would actually want to > change the semantics of bindings of unlifted types in Haskell. > > Cheers, > Max > > [1] http://www.cl.cam.ac.uk/~mb566/papers/tacc-hs09.pdf > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe