Proposal: EPHEMERAL pragma

Simon Peyton-Jones simonpj at microsoft.com
Thu Oct 25 22:14:54 CEST 2012


Are you restricting Rep to non-recursive uses?  Or has GHC's inliner finally learned how to behave well in the presence of recursion?

If anyone could explain (in precise terms) what it means to “behave well in the presence of recursion” then there’s a chance that it might. But up to now, no, it hasn’t I’m afraid.

Simon

From: glasgow-haskell-users-bounces at haskell.org [mailto:glasgow-haskell-users-bounces at haskell.org] On Behalf Of Jan-Willem Maessen
Sent: 25 October 2012 20:19
To: José Pedro Magalhães
Cc: GHC users
Subject: Re: Proposal: EPHEMERAL pragma

On Thu, Oct 25, 2012 at 9:56 AM, José Pedro Magalhães <jpm at cs.uu.nl<mailto:jpm at cs.uu.nl>> wrote:
Hi all,

Following up on a chat with Simon Peyton Jones at ICFP, I would like to discuss the
possible introduction of a EPHEMERAL pragma. For example:
{-# EPHEMERAL Rep #-}
data Rep = ...

This pragma would indicate that the programmer intends the Rep datatype not to
be present in the final generated core code. Its proposed semantics are the following:

1. Make the compiler very keen to inline any functions that produce or consume Rep.

2. If Rep is exported, make all functions that operate on Rep INLINABLE (that is, make
their code available for inlining in other modules).

3. Emit a warning if the generated core code still contains uses of Rep.

Are you restricting Rep to non-recursive uses?  Or has GHC's inliner finally learned how to behave well in the presence of recursion?

-Jan-Willem Maessen

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20121025/67c1b415/attachment.htm>


More information about the Glasgow-haskell-users mailing list