This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: how to write macroexpand


* Per Bothner [2010-10-17 23:53] writes:

> Nice - I'd like to include this in gnu/kawa/slib.  A couple of issues:
>
> (1) I need some kind of copyright statement (as part of the source file):
> preferably either that you're releasing the code to the public domain,
> or you're assigning copyright to me on behalf of the Kawa project.

Attached is an updated version with public domain tag and
updated with IfExp accessors.

> (2) I was trying to figure out if there is a standard name for this kind
> of function.  SRFI-96 http://srfi.schemers.org/srfi-96/srfi-96.html does
> have macroexpand, but only in the context of supporting defmacro. I see that
> Guile has a macroexpand, but I haven't found the documentation, and it
> doesn't seem to do as much.  Racket has expand-syntax and related forms,
> but these yield syntax objects, not sexprs.  Common Lisp has macroexpand,
> but it doesn't seem like it does a full expansion - just at the toplevel.
>
> The name macroexpand is fine - I just wonder if someone knows if other
> Schemes
> use a different name.

It's called expand in Chez, Ikarus and Scheme48.

> (3) We should have at least a handful of test-cases to make sure I
> don't inadvertently break macroexpand, given that it reaches into
> implementation internals.

Also attached.

Helmut

Attachment: macroexpand.scm
Description: application/emacs-lisp

Attachment: macroexpand-tests.scm
Description: application/emacs-lisp


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]