[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: module: How to specify indirect exports positively?

At Fri, 26 Apr 2002 14:16:30 +0200, Sebastian H Seidel wrote:
> (require
>  (rename A
>          (string->symbol 
>           (string-append 
>            (symbol->string (quote prefix.))
>            (symbol->string (quote var))))
>          var))
> ==> require: bad syntax (internal name is not an identifier)

The macro that generates the `require' expression must put in place of
`(string->symbol ...)' the actual symbol, instead of an expression tat
produces the symbol.

Here's an example with `provide':

(module m mzscheme

  (define-syntax (provide-prefixless stx)
    (syntax-case stx ()
      [(_ prefix: name)
       (with-syntax ([prefix:name (string->symbol
                                   (format "~a~a"
                                           (syntax-e #'prefix:)
                                           (syntax-e #'name)))])
         (syntax (provide (rename prefix:name name))))]))
  (provide-prefixless demo: thing)
  (define demo:thing 5))