<div dir="ltr"><div>Thanks for the additional tips. I'm having very inconsistent results with unfolding definitions from other modules in ghci, even with all of these flags. I'll keep poking at it until I have some consistent info and questions.<br><br></div>-- Conal<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 20, 2016 at 7:46 AM, Simon Peyton Jones <span dir="ltr"><<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div link="blue" vlink="purple" lang="EN-GB">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Ah….It seems that to get unfoldings exposed in the
<b>module you are compiling</b> you need <b>both</b><u></u><u></u></span></p>
<p><u></u><span style="font-size:11.0pt;font-family:Symbol;color:#1f497d"><span>·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">-fno-omit-interface-pragmas<u></u><u></u></span></p>
<p><u></u><span style="font-size:11.0pt;font-family:Symbol;color:#1f497d"><span>·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">-fexpose-all-unfoldings<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">And GHCi and –O0 both imply –fomit-interface-pragmas.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">To see the unfoldings on
<b>imported</b> functions  you need –fno-ignore-interface pragmas.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Arguably –fexpose-all-unfoldings should override –fomit-interface-pragmas, which it doesn’t at the moment.  Open a ticket if you think
 that would be useful and important.  I can give guidance about the places.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Simon<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US"> <a href="mailto:conal.elliott@gmail.com" target="_blank">conal.elliott@gmail.com</a> [mailto:<a href="mailto:conal.elliott@gmail.com" target="_blank">conal.elliott@gmail.com</a>]
<b>On Behalf Of </b>Conal Elliott<br>
<b>Sent:</b> 18 January 2016 17:47<br>
<b>To:</b> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>><br>
<b>Cc:</b> Edward Z. Yang <<a href="mailto:ezyang@mit.edu" target="_blank">ezyang@mit.edu</a>>; Andrew Farmer <<a href="mailto:afarmer@ittc.ku.edu" target="_blank">afarmer@ittc.ku.edu</a>>; <a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a></span></p><div><div class="h5"><br>
<b>Subject:</b> Re: ghci and unfoldings?<u></u><u></u></div></div><p></p>
</div>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm">
That's the flag I would expect. It doesn't seem to help or hinder availability of unfoldings in GHCi. Do you think it should?<u></u><u></u></p>
</div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm">
And Happy Birthday, Simon!<u></u><u></u></p>
</div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
Warmly, - Conal<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
<br>
On Monday, January 18, 2016, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6.0pt;margin-left:0cm">
Or -fexpose-all-unfoldings?<br>
<br>
Simon<br>
<br>
|  -----Original Message-----<br>
|  From: ghc-devs [<a href="mailto:ghc-devs-bounces@haskell.org" target="_blank">mailto:ghc-devs-bounces@haskell.org</a>] On Behalf Of<br>
|  Edward Z. Yang<br>
|  Sent: 18 January 2016 06:37<br>
|  To: Conal Elliott <<a href="mailto:conal@conal.net" target="_blank">conal@conal.net</a>><br>
|  Cc: Andrew Farmer <<a href="mailto:afarmer@ittc.ku.edu" target="_blank">afarmer@ittc.ku.edu</a>>;
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
|  Subject: Re: ghci and unfoldings?<br>
|<br>
|  Does passing -fobject-code solve your problem?<br>
|<br>
|  Edward<br>
|<br>
|  Excerpts from Conal Elliott's message of 2016-01-17 22:18:49 -0800:<br>
|  > Hi Brandon. Thanks for the reply. I’m not sure that it addresses<br>
|  what<br>
|  > I was trying to ask. GHCi *does* invoke plugins and even reloads<br>
|  those<br>
|  > plugins dynamically when their source code changes. So in this sense<br>
|  > ghci does enable optimization, even if it doesn’t perform much<br>
|  > optimization on its own. And of course plugins and unfolding are not<br>
|  just about optimization.<br>
|  ><br>
|  > I’m not looking for ghci to do optimization, but rather to enable me<br>
|  > to more easily develop my GHC plugins. It’s *almost* there already.<br>
|  I<br>
|  > just need access to unfoldings from other modules for my plugin’s<br>
|  use.<br>
|  ><br>
|  > For context, I’m rebuilding my Haskell-to-hardware compiler<br>
|  > <<a href="https://github.com/conal/talk-2015-haskell-to-hardware" target="_blank">https://github.com/conal/talk-2015-haskell-to-hardware</a>>, which<br>
|  relies<br>
|  > on giving a non-standard but principled interpretation of Haskell<br>
|  > programs via a conversion through the language of cartesian closed<br>
|  categories (CCCs).<br>
|  > The first back-end is hardware generation (e.g., via Verilog), and I<br>
|  > have plans for several other CCC-based interpretations.<br>
|  ><br>
|  > In addition to facilitating my plugin development, hosting in ghci<br>
|  > will make it much more pleasant for others to *use* the plugin<br>
|  during<br>
|  > exploratory programming, just as with ghci use in general. With<br>
|  access<br>
|  > to unfoldings, users will be able to generate circuit diagrams and<br>
|  > Verilog like those in my compiler talk immediately and directly from<br>
|  > within ghci. I also intend to make a GPU back-end for fast<br>
|  interactive<br>
|  > graphics etc, which would be much more fun in ghci than with batch<br>
|  compilation.<br>
|  > I hope this explanation clarifies my goals and motivation. I hope<br>
|  > there’s a way to access unfoldings from ghci currently or with a<br>
|  small<br>
|  > amount of effort.<br>
|  ><br>
|  > Regards, - Conal<br>
|  ><br>
|  > On Sun, Jan 17, 2016 at 7:00 PM, Brandon Allbery<br>
|  <<a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>><br>
|  > wrote:<br>
|  ><br>
|  > > On Sun, Jan 17, 2016 at 9:40 PM, Conal Elliott <<a href="mailto:conal@conal.net" target="_blank">conal@conal.net</a>><br>
|  wrote:<br>
|  > ><br>
|  > >> I'm developing a GHC plugin (using HERMIT), and I'd like to use<br>
|  > >> ghci to speed up development. I'm able to do so, except that my<br>
|  > >> plugin critically needs access to unfoldings, which appear to be<br>
|  > >> unavailable in ghci. A little experimenting with ghc shows me<br>
|  that<br>
|  > >> "-O" is the key, but "-O" is incompatible with "--interactive"<br>
|  (as<br>
|  > >> in ghci). Is there any way to persuade ghci to make unfoldings<br>
|  available?<br>
|  > ><br>
|  > ><br>
|  > > I think unfoldings are only done as part of optimization, and the<br>
|  > > bytecode backend doesn't support optimization at all.<br>
|  > ><br>
|  > > --<br>
|  > > brandon s allbery kf8nh                               sine nomine<br>
|  > > associates<br>
|  > > <a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a><br>
|  > > <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a><br>
|  > > unix, openafs, kerberos, infrastructure, xmonad<br>
|  > ><br>
|  <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fsine" target="_blank">
https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fsine</a><br>
|  > ><br>
|  <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fnomine.net&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=7lx6Ayz03bCdiHv1O0TkKOrwNQNFYRUhHRCZR%2bAEPmg%3d" target="_blank">
nomine.net</a>&data=01%7c01%7csimonpj%<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2f40064d.mgd.microsoft.com&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=nLmnL5PxzSjH%2bo8TnPLfoWgC0ySSaNIYXxfY6gKBGLA%3d" target="_blank">40064d.mgd.microsoft.com</a>%7cbaf2ef5<br>
|  > ><br>
|  5f8af447b42e608d31fd1cec1%7c72f988bf86f141af91ab2d7cd011db47%7c1&sda<br>
|  > > ta=qMNmL5LmkgMp0ebkr6SzPQIwhySqOicZgEdW%2fhe6Q%2b0%3d<br>
|  > ><br>
|  _______________________________________________<br>
|  ghc-devs mailing list<br>
|  <a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
|  <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.h" target="_blank">
https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.h</a><br>
|  <a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2faskell.org&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=0GhykVs2C40ykmJwU2Yrq2D4kxV4hd%2bAtVoV%2b%2bMptPo%3d" target="_blank">
askell.org</a>%2fcgi-bin%2fmailman%2flistinfo%2fghc-<br>
|  devs%0a&data=01%7c01%7csimonpj%<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2f40064d.mgd.microsoft.com&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=nLmnL5PxzSjH%2bo8TnPLfoWgC0ySSaNIYXxfY6gKBGLA%3d" target="_blank">40064d.mgd.microsoft.com</a>%7cbaf2ef55f8af<br>
|  447b42e608d31fd1cec1%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=veoz<br>
|  Ab6M7N9jZaJZ9tgXZ%2fI8jq7U%2b4YM1FcSXvqTcaw%3d<u></u><u></u></p>
</blockquote>
</div>
</div>
</div>
</div></div></div>
</div>
</div>

</blockquote></div><br></div>