ghc feature request: core notes
Hal Daume III
hdaume@ISI.EDU
Tue, 4 Feb 2003 08:44:24 -0800 (PST)
Simon,
I wasn't suggesting extending the Core datatype. Part of the Core Exp
datatype is these notes. From ExternalCore.hs:
> data Exp
> ...
> | Note String Exp
> ...
My suggestion is simply to allow pragmas to fill in these Note
values. I've actually implemented it in my copy of GHC and it's a very
very small addition. It requires essentially modifying slightly the
parser and lexer to accept '{-# CORE' as a pragma and then to pass this
value down through all the passes (typechecking, renaming, etc.). I think
it's about 20 additional lines of code in all.
It doesn't seem that these get thrown away anywhere in the AbsSyn -> Core
piping process. I'm not sure the extend to which this de-simplifies
Core. Currently these Notes are only used to store SCC information for
profiling and INLINE information.
- Hal
--
Hal Daume III
"Computer science is no more about computers | hdaume@isi.edu
than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
On Tue, 4 Feb 2003, Simon Peyton-Jones wrote:
> I have to say that I'm not very keen. There is an annotation facility
> in Core, but it's easy for the notes to be discarded. So if they are
> conveying important info, it might easily get lost... and if not, what's
> it doing there in the first place. What do you expect to happen to
> these annotations?
>
> So just now I'm a bit sceptical. Core is a data type that I'm trying
> hard to keep simple.
>
> Simon
>
> | -----Original Message-----
> | From: Hal Daume III [mailto:hdaume@ISI.EDU]
> | Sent: 03 February 2003 23:24
> | To: GHC Users Mailing List
> | Subject: ghc feature request: core notes
> |
> | I'm not sure how "generally useful" this would be, but I would find it
> | useful to be able to attach notes to core expressions from the Haskell
> | code. The idea being something along the lines of a code annotation
> like
> | a pragma. For instance, in my Haskell program I would have something
> | like:
> |
> | f x y =
> | case {-# CORE "my first note" #-} g x of
> | ...
> |
> | then, the core would come out with, instead of:
> |
> | case g x of ...
> |
> | we would have
> |
> | case {note "my first note"} g x of ...
> |
> | The reason I would find this useful is somewhat obscure, but the basic
> | idea is that I need to be able to both preprocess code and then change
> | core based on how it was preprocessed. I'd like to send annotations
> like
> | these out of the preprocessor so they can then be picked up later by
> my
> | core transformer.
> |
> | If this sounds like a good enough idea to go in, but no one has time
> to
> | implement it, I could do it myself (probably), but I thought I'd ask
> the
> | experts first (or if there's anything like this in there currently)...
> |
> | - Hal
> |
> | --
> | Hal Daume III
> |
> | "Computer science is no more about computers | hdaume@isi.edu
> | than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
> |
> | _______________________________________________
> | Glasgow-haskell-users mailing list
> | Glasgow-haskell-users@haskell.org
> | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>