Functions for builtin operators (?)
Simon Peyton-Jones
simonpj at microsoft.com
Sun May 10 13:52:09 EDT 2009
sorry, got diverted by paper writing.
GHC desugars Hsakell into Core, and it's Core that you are consuming in the ESC stuff. However, Core for an *overloaded* function contains dictionary applications and abstractions. Furthermore, overloaded operators turn into selectors, which pick out a particular field from a dictionary. See any description of how to compile type classes for examples of this.
So here you've got something like
(>) d x y
where (>) is defined like this
(>) (MkOrd _ _ gr _) = gr
That is, (>) picks out the gr field from the dictionary. So it's all very higher-order in reality. And that is what is giving trouble to the ESC stuff. After all, what do we know about *all* implementations of (>) at *all* types? Not much!
Dana and I did not explore much how to give a good treatment to overloaded functions. I would not expect it to "just work".
I hope this helps a bit
Simon
| -----Original Message-----
| From: Colin Paul Adams [mailto:colin at colina.demon.co.uk]
| Sent: 08 April 2009 11:04
| To: Simon Peyton-Jones
| Cc: glasgow-haskell-users at haskell.org
| Subject: Re: Functions for builtin operators (?)
|
| >>>>> "Simon" == Simon Peyton-Jones <simonpj at microsoft.com> writes:
|
| Simon> Nowhere. It's a name generated by GHC itself during
| Simon> compilation.
|
| OK.
| Is there some way to recognise what the function is?
|
| The problem is with ESC/Haskell. I have managed to get the code
| integrated into the 6.11 tree, and it works up to a point.
|
| It produces output like:
|
| Len.hs:4:0:
| Len.pos does not satisfy its contract!
| Counter example:
| Len.pos with argument(s) x
| (Inside _GHC.Classes.>_ ( tpl_B6 )) x ((GHC.Types.I# 0))
|
| which is basically saying that it can't trust _GHC.Classes.>_ ( tpl_B6
| ) to do anything in particular, as it doesn't know anything about it.
|
| So it would be good to add code that recognises these functions. At
| best, to know the semantics of each one.
|
| Colin> | Where is a function with a name like the following
| Colin> defined in the ghc source | code?
| Colin> |
| Colin> | .Classes.>_ ( tpl_B6 )
|
|
|
| --
| Colin Adams
| Preston Lancashire
More information about the Glasgow-haskell-users
mailing list