[GHC] #9252: Generalize hs-boot files to be more like module signatures

GHC ghc-devs at haskell.org
Tue Apr 7 18:55:32 UTC 2015


#9252: Generalize hs-boot files to be more like module signatures
-------------------------------------+-------------------------------------
        Reporter:  ezyang            |                   Owner:  ezyang
            Type:  feature request   |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.8.2
      Resolution:                    |                Keywords:  backpack
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:  Phab:D130
-------------------------------------+-------------------------------------

Comment (by Edward Z. Yang <ezyang@…>):

 In [changeset:"a7524eaed33324e2155c47d4a705bef1d70a2b5b/ghc"]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="a7524eaed33324e2155c47d4a705bef1d70a2b5b"
 Support for multiple signature files in scope.

 Summary:
 A common pattern when programming with signatures is to combine multiple
 signatures together (signature linking).  We achieve this by making it
 not-an-error to have multiple, distinct interface files for the same
 module
 name, as long as they have the same backing implementation.  When a user
 imports a module name, they get ALL matching signatures dumped into their
 scope.

 On the way, I refactored the module finder code, which now distinguishes
 between exact finds (when you had a 'Module') and regular finds (when
 you had a 'ModuleName').  I also refactored the package finder code to
 use a Monoid instance on LookupResult to collect together various results.

 ToDo: At the moment, if a signature is declared in the local package,
 it completely overrides any remote signatures.  Eventually, we'll want
 to also pull in the remote signatures (or even override the local
 signature,
 if the full implementation is available.)  There are bunch of ToDos in the
 code for what to do once this is done.

 ToDo: At the moment, whenever a module name lookup occurs in GHCi and we
 would have seen a signature, we instead continue and return the Module
 for the backing implementation.  This is correct for most cases, but there
 might be some situations where we want something a little more fine-
 grained
 (e.g. :browse should only list identifiers which are available through
 the in-scope signatures, and not ALL of them.)

 Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

 Test Plan: validate

 Reviewers: simonpj, hvr, austin

 Subscribers: carter, thomie

 Differential Revision: https://phabricator.haskell.org/D790

 GHC Trac Issues: #9252
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9252#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list