bug#43025: re-export-public-interface fails on Guile 3

Leo Prikler <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
Am Mittwoch, den 26.08.2020, 12:51 -0400 schrieb Dale Smith:
> On 8/24/20, Leo Prikler <[email protected]> wrote:
> > My solution for this problem would be to build on some of the
> > module
> > "intrinsics", which sadly are not all that well documented.
> > 
> > (define-module (a))
> > 
> > (let ((obs (module-obarray (resolve-interface '(srfi srfi-1))))
> >       (iface (module-public-interface (current-module))))
> >   (hash-fold
> >    (lambda (key value seed)
> >      (module-add! iface key value)
> >      seed)
> >    *unspecified*
> >    obs))
> > 
> > If you want to make this a macro, you really only need to syntax-
> > unquote a module into the (resolve-interface ...) portion of this
> > snippet.
> 
> So with that in mind, how about something like this (currently no
> error checking):
> 
> (define-syntax re-export-public-interface
>   (syntax-rules ()
>     ((_ mod ...)
>      (let ((iface (module-public-interface (current-module))))
>        (module-for-each
>         (lambda (sym val)
>           (module-add! iface sym val)
>           (hashq-set! (module-replacements iface) sym #t))
>         (resolve-interface 'mod))
>        ...))))
LGTM, but don't forget to test it ;)
Also I'd call it `re-export-public-interface!', or even `re-export-and-
replace-interface!' but that's a personal preference.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.