I wrote:
>   (define-syntax define
>     (lambda (x)
>       (with-syntax ((orig-define #'(@ (guile) define)))
>         (syntax-case x ()
>           ((_ (proc arg ...) e0 e1 ...)
>            #'(orig-define proc (lambda (arg ...) e0 e1 ...)))
>           ((_ v e)
>            (identifier? #'v)
>            (if (string? (syntax->datum #'e))
>                #'(orig-define v (string-copy e))
>                #'(orig-define v e)))))))

In case you're planning to use this, I just realized that this syntax
definition has a flaw: it won't handle cases like this:

  (define (map f . xs) ...)

To fix this flaw, change the two lines after syntax-case to:

>           ((_ (proc . args) e0 e1 ...)
>            #'(orig-define proc (lambda args e0 e1 ...)))

The other macro I provided has the same flaw, and the same fix applies.

      Mark

Reply via email to