<div dir="ltr">Oh of course, I had inverted the hierarchy of modules. Your way is much more logical, thanks. I got too sidetracked into what exactly module+ does...</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Sep 5, 2014 at 6:29 PM, Greg Hendershott <span dir="ltr"><<a href="mailto:greghendershott@gmail.com" target="_blank">greghendershott@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The following approach works for me. Would that do what you need?<br>
<br>
;; ----- mod.rkt -----<br>
#lang racket<br>
<br>
(module private racket<br>
  (define (secret)<br>
    'foo)<br>
  (provide secret))<br>
<br>
(require 'private)<br>
<br>
(define (wrapper)<br>
  (secret))<br>
<br>
(provide (all-defined-out))<br>
;; Note that all-defined-out will not provide stuff from 'private.<br>
;; For that to happen, you would need to use (require (all-from-out<br>
;; 'private)). So ... don't do that.<br>
<br>
<br>
;; ----- use-mod.rkt -----<br>
#lang racket<br>
<br>
(require "mod.rkt")<br>
(wrapper) ;; => 'foo<br>
(secret)  ;; => error -- as desired<br>
</blockquote></div><br></div>