Hi Edward, I'm sorry to have to bother you with this again, but I seem to be stuck with this approach. I think I don't really understand what 'load the interfaces' means.
Here's what I tried: ``` Haskell getInstancesFromTcmodule :: GhcMonad m => TypecheckedModule -> m () getInstancesFromTcmodule tmod = do let (tcenv, md) = tm_internals_ tmod let insts = tcg_insts tcenv printO insts printO $ md_insts md printO $ tcg_inst_env tcenv graph <- depanal [] True printO graph forM_ graph $ \mod_ -> do forM_ (ms_textual_imps mod_) $ \(_, imp) -> do let modname = unLoc imp addTarget (Target { targetId = TargetModule modname , targetAllowObjCode = True , targetContents = Nothing }) loadSuccessfully $ LoadUpTo modname getModSummary (unLoc imp) >>= printO tcmod <- parseModule mod_ >>= typecheckModule >>= loadModule let (tcenv', md') = tm_internals_ tcmod printO $ tcg_insts tcenv' printO $ md_insts md' printO $ tcg_inst_env tcenv' ``` I just wanted to see if I could find all the relevant instances. I do find all the instances in the current `TypecheckedModle`, but none of the others because at `loadSuccessfully $ loadUpTo modname`, I get an error saying that `Test.QuickCheck a package module`. I think that means that it's not locally defined, but rather part of a package that I'm using. Unfortunately that means that I don't really understand how I can load it to find the instances. Would you please hint me at the next step? Thank you for your time. On 19-05-17 23:00:41, Tom Sydney Kerckhove wrote: > On 19-05-17 08:35:32, Edward Z. Yang wrote: > > Excerpts from Tom Sydney Kerckhove's message of 2017-05-19 11:05:17 +0200: > > > > But if you > > > > really need all instances, you will have to first arrange to load > > > > the interfaces of ALL modules transitively imported by your module. > > > > > > I don't really mind the time it takes to do this, but that's annoying to > > > write. > > > > > > Thank you for your help! I will look into it. > > > > Another possibility is, if you can programatically list the types that > > you are interested in, you can load all of those, and then the instances > > for those types will be ready. > > That's probably the most feasible approach. > Then I'd have to find all the types in scope, and find their interfaces. > > I know how to get all the TyThing's in scope, so it should be easy-ish > to get started. > > Thanks! > > -- > Tom Sydney Kerckhove -- Tom Sydney Kerckhove
signature.asc
Description: PGP signature
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs