I _think_ I've found what I need from https://github.com/ghc/ghc/blob/8843a39b3c941b1908a8d839f52bc323f3b45081/compiler/iface/LoadIface.hs#L994-L1002
On Sun, Dec 3, 2017 at 7:41 AM, Saurabh Nanda <saurabhna...@gmail.com> wrote: > > I would be cautious about using the ghc-api hi file interfaces; hi files > turn out to interact with a > > lot of low-level parts in complex ways (even to the extent that they're > a large part of why ghc > > can't parallelize builds itself and attempts to change that have mostly > failed). > > Are you cautioning against using the GHC API (as opposed to the > --show-iface command line interface) > or using HI files themselves? > > -- Saurabh. > > > On Sun, Dec 3, 2017 at 2:04 AM, Brandon Allbery <allber...@gmail.com> > wrote: > >> I would be cautious about using the ghc-api hi file interfaces; hi files >> turn out to interact with a lot of low-level parts in complex ways (even to >> the extent that they're a large part of why ghc can't parallelize builds >> itself and attempts to change that have mostly failed). >> >> But if you must do this, you *really* want to have >> https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler ready to hand >> --- and go through it first so you have some idea of how it works; much of >> it is links to the lower level details (often straight into the source). >> >> On Sat, Dec 2, 2017 at 10:59 AM, Saurabh Nanda <saurabhna...@gmail.com> >> wrote: >> >>> (GHC newbie alert -- is this the right mailing list for these kind of >>> questions?) >>> >>> I"m writing some code to figure out all the instances of particular >>> type-classes and after exploring a lot of options (hlint, haskell-src-exts, >>> annotations, doctests, etc), I realized that the compiler had already >>> figured it out and written it to disk for me! >>> >>> More digging led me to https://www.stackage.org/haddo >>> ck/lts-9.0/ghc-8.0.2/LoadIface.html#v:loadSrcInterface after which I >>> got stuck. How does one call this function? Specifically: >>> >>> * What is SDoc and how to construct a reasonable value for this argument? >>> * IsBootInterface would mostly be False, right? >>> * What does `Maybe FastString` represent and how does one construct it? >>> * Finally how does one evaluate the resulting monadic action to get >>> access to the underlying `ModIface`? >>> >>> -- Saurabh. >>> >>> >>> _______________________________________________ >>> ghc-devs mailing list >>> ghc-devs@haskell.org >>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >>> >>> >> >> >> -- >> brandon s allbery kf8nh sine nomine >> associates >> allber...@gmail.com >> ballb...@sinenomine.net >> unix, openafs, kerberos, infrastructure, xmonad >> http://sinenomine.net >> > > > > -- > http://www.saurabhnanda.com > -- http://www.saurabhnanda.com
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs