<html><head><style id="css_styles" type="text/css"><!--blockquote.cite { margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc }
blockquote.cite2 {margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc; margin-top: 3px; padding-top: 0px; }
a img { border: 0px; }
li[style='text-align: center;'], li[style='text-align: right;'] {  list-style-position: inside;}
body { font-family: Segoe UI; font-size: 12pt;   }--></style></head><body><div>Yes, every imported identifier from a module that was compiled with optimisations should have the proper analysis information in its IdInfo.</div><div>So if you have `base` somewhere in one of your compiled libraries and load it, then the identifier of `GHC.OldList.map` will have an `idDmdSig` that says it's strict in the list parameter.</div><div><br /></div><div>At least that's how it works in GHC, where these IdInfos are populated with the information from the loaded interface files. The situation with HLS might be different, although I wouldn't expect that.</div>
<div><br /></div>
<div>------ Originalnachricht ------</div>
<div>Von: "Alejandro Serrano Mena" <<a href="mailto:trupill@gmail.com">trupill@gmail.com</a>></div>
<div>An: "Sebastian Graf" <<a href="mailto:sgraf1337@gmail.com">sgraf1337@gmail.com</a>></div>
<div>Cc: "GHC developers" <<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a>>; "Matthew Pickering" <<a href="mailto:matthewtpickering@gmail.com">matthewtpickering@gmail.com</a>></div>
<div>Gesendet: 13.01.2022 16:43:50</div>
<div>Betreff: Re: Re[2]: Strictness/demand info for a Name</div><div><br /></div>
<div id="xbfc022d53bba49b"><blockquote cite="CAHnFXOsqFn1KWkAhzVw1sdDH0DyYnTJvLHu3KvEXO7ceZ2jCUg@mail.gmail.com" type="cite" class="cite2">
<div dir="ltr">Thanks for the pointers! :)</div><div dir="ltr"><br /></div><div dir="ltr">
    Knowing this, let me maybe rephrase my question: is it possible to get demand information of identifiers <i>without</i> running the analysis itself?</div><div dir="ltr"><br /></div><div dir="ltr">Alejandro<br /><br />
    <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">El 13 ene 2022 15:45:29, Sebastian Graf <<a href="mailto:sgraf1337@gmail.com">sgraf1337@gmail.com</a>> escribió:<br /></div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" type="cite">
            
<div>
<div>
    Yes, Matt is right.<br /><br />`dmdSigInfo` describes the how a function Id uses its arguments and free <br />variables, whereas<br />`demandInfo` describes how a (local, mostly) Id is used.<br /><br />Note that if you wanted to go beyond type-checking, you could probably <br />run the analysis on the desugaring of the current module quite easily.<br />But the results would be misleading, as prior optimisations (that you <br />probably don't want to run) may arrange the program in a way that demand <br />analysis has an easier time.<br /><br />------ Originalnachricht ------<br />Von: "Matthew Pickering" <<a href="mailto:matthewtpickering@gmail.com">matthewtpickering@gmail.com</a>><br />An: "Alejandro Serrano Mena" <<a href="mailto:trupill@gmail.com">trupill@gmail.com</a>><br />Cc: "GHC developers" <<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a>><br />Gesendet: 13.01.2022 15:38:29<br />Betreff: Re: Strictness/demand info for a Name<br /><br /><blockquote type="cite" class="cite">You look at `dmdSigInfo` in `IdInfo`.<br /></blockquote><blockquote type="cite" class="cite"><br /></blockquote><blockquote type="cite" class="cite">Matt<br /></blockquote><blockquote type="cite" class="cite"><br /></blockquote><blockquote type="cite" class="cite">On Thu, Jan 13, 2022 at 2:20 PM Alejandro Serrano Mena<br /></blockquote><blockquote type="cite" class="cite"><<a href="mailto:trupill@gmail.com">trupill@gmail.com</a>> wrote:<br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">>  Dear all,<br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">>  I’m trying to bring the information about demand and strictness to the Haskell Language Server, but I cannot find a way to do so. I was wondering whether you could help me :)<br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">>  Here’s my understanding; please correct me if I’m wrong:<br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">>  The analysis runs on Core, so getting this information for the current file would require to run the compiler further than type checking, which is quite expensive,<br /></blockquote><blockquote type="cite" class="cite">>  However, this analysis should somehow use known information about imported functions, which should be readily available somewhere,<br /></blockquote><blockquote type="cite" class="cite">>  If the above is true, what is the simplest way to get the information for imported things? As I mentioned above, I would prefer not to run the compiler further than the type checking phase, since otherwise it gets too expensive for IDE usage. Right now HLS uses the information from the .hie files.<br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">>  In fact, this goes into the more general question of how to show information from different analyses within the IDE; I guess solving the case for strictness/analysis may open the door to more (maybe everything recorded inside a `Id`?)<br /></blockquote><blockquote type="cite" class="cite">><br /></blockquote><blockquote type="cite" class="cite">>  Regards,<br /></blockquote><blockquote type="cite" class="cite">>  Alejandro<br /></blockquote><blockquote type="cite" class="cite">>  _______________________________________________<br /></blockquote><blockquote type="cite" class="cite">>  ghc-devs mailing list<br /></blockquote><blockquote type="cite" class="cite">><a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br /></blockquote><blockquote type="cite" class="cite">><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br /></blockquote><blockquote type="cite" class="cite">_______________________________________________<br /></blockquote><blockquote type="cite" class="cite">ghc-devs mailing list<br /></blockquote><blockquote type="cite" class="cite"><a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br /></blockquote><blockquote type="cite" class="cite"><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br /></blockquote><br />
</div>
</div>
        </blockquote>
    </div>
</div></blockquote></div>

</body></html>