[Haskell] Expecting more inlining for bit shifting

Simon Peyton-Jones simonpj at microsoft.com
Wed Oct 18 04:48:31 EDT 2006


| I would think the easiest way to go about this would be to extend the
| rules pragma.
| 
| {-# RULES "shift/const-inline"  forall x y# . shift x y# = ... #-}
| 
| where variables ending in # will only match constants known at compile time

Interesting idea.  GHC can do that *internally* using a "BuiltinRule", and it's internal precisely because there's no obvious way to say "match only a literal".

I suppose that you might also want to say "match only a constructor"?  To have a rule for 'f' that would fire only when you saw
		f (Just x)
or		f Nothing
but not	f (g y)

For that, a # would not really be appropriate.  


Would this be valuable?  If so, think of a nice syntax.  It's not trivial to implement, but not hard either.

Simon

| -----Original Message-----
| From: glasgow-haskell-users-bounces at haskell.org [mailto:glasgow-haskell-users-bounces at haskell.org]
| On Behalf Of John Meacham
| Sent: 18 October 2006 06:37
| To: glasgow-haskell-users at haskell.org
| Subject: Re: [Haskell] Expecting more inlining for bit shifting
| 
| On Mon, Oct 09, 2006 at 03:54:41PM +0100, Ian Lynagh wrote:
| > It might be possible, but it sounds tricky. I guess it would have to go
| > something like "try inlining this, run the simplifier, see if it got
| > small enough, if not back out", which could waste a lot of work if it
| > fails in lots of cases.
| 
| I would think the easiest way to go about this would be to extend the
| rules pragma.
| 
| {-# RULES "shift/const-inline"  forall x y# . shift x y# = ... #-}
| 
| where variables ending in # will only match constants known at compile
| time. or perhaps..
| 
| {-# RULES "shift/const-inline"  forall x (y::const Int) . shift x y# = ... #-}
| 
| or something like that.
| 
| I imagine such a thing would have other uses as well...
| 
|         John
| 
| --
| John Meacham - ⑆repetae.net⑆john⑈
| _______________________________________________
| Glasgow-haskell-users mailing list
| Glasgow-haskell-users at haskell.org
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


More information about the Glasgow-haskell-users mailing list