Nice, so only I get the corresponding IdInfo, my work is “done”. But I’m still missing how to thread everything together. Right now, what I have to work with are:
- The HieAst node I am searching information about, from which I can get the name, - The result of the parsing, renaming, and type checking phases. Is there a way, with that information only, to obtain the corresponding IdInfo? (This might be a very simple question, or just have a negative answer, but I’m not versed at all in how all this information flows within GHC). Thanks in advance, Alejandro El 13 ene 2022 16:50:01, Sebastian Graf <sgraf1...@gmail.com> escribió: > Yes, every imported identifier from a module that was compiled with > optimisations should have the proper analysis information in its IdInfo. > 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. > > 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. > > ------ Originalnachricht ------ > Von: "Alejandro Serrano Mena" <trup...@gmail.com> > An: "Sebastian Graf" <sgraf1...@gmail.com> > Cc: "GHC developers" <ghc-devs@haskell.org>; "Matthew Pickering" < > matthewtpicker...@gmail.com> > Gesendet: 13.01.2022 16:43:50 > Betreff: Re: Re[2]: Strictness/demand info for a Name > > Thanks for the pointers! :) > > Knowing this, let me maybe rephrase my question: is it possible to get > demand information of identifiers *without* running the analysis itself? > > Alejandro > > El 13 ene 2022 15:45:29, Sebastian Graf <sgraf1...@gmail.com> escribió: > >> Yes, Matt is right. >> >> `dmdSigInfo` describes the how a function Id uses its arguments and free >> variables, whereas >> `demandInfo` describes how a (local, mostly) Id is used. >> >> Note that if you wanted to go beyond type-checking, you could probably >> run the analysis on the desugaring of the current module quite easily. >> But the results would be misleading, as prior optimisations (that you >> probably don't want to run) may arrange the program in a way that demand >> analysis has an easier time. >> >> ------ Originalnachricht ------ >> Von: "Matthew Pickering" <matthewtpicker...@gmail.com> >> An: "Alejandro Serrano Mena" <trup...@gmail.com> >> Cc: "GHC developers" <ghc-devs@haskell.org> >> Gesendet: 13.01.2022 15:38:29 >> Betreff: Re: Strictness/demand info for a Name >> >> You look at `dmdSigInfo` in `IdInfo`. >> >> >> Matt >> >> >> On Thu, Jan 13, 2022 at 2:20 PM Alejandro Serrano Mena >> >> <trup...@gmail.com> wrote: >> >> > >> >> > Dear all, >> >> > >> >> > 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 :) >> >> > >> >> > Here’s my understanding; please correct me if I’m wrong: >> >> > >> >> > 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, >> >> > However, this analysis should somehow use known information about >> imported functions, which should be readily available somewhere, >> >> > 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. >> >> > >> >> > >> >> > 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`?) >> >> > >> >> > Regards, >> >> > Alejandro >> >> > _______________________________________________ >> >> > ghc-devs mailing list >> >> >ghc-devs@haskell.org >> >> >http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >> >> _______________________________________________ >> >> ghc-devs mailing list >> >> ghc-devs@haskell.org >> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >> >> >>
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs