librelist archives

« back to archive

Why are some macros defined in core.lisp and others in macros.lisp?

Why are some macros defined in core.lisp and others in macros.lisp?

From:
Evan R. Murphy
Date:
2010-12-15 @ 18:54
Is there a consistent rule of thumb for deciding whether a macro should be
defined in core.lisp or in macros.lisp? I get the sense that only the most
fundamental operators are defined in the core and all others elsewhere, but
is there a clear place to draw the line? Could some definitions be moved
between core.lisp and macros.lisp without breaking it?

Still trying to understand how Sibilant ticks. :)

Evan

Re: [sibilant] Why are some macros defined in core.lisp and others in macros.lisp?

From:
Jacob Rothstein
Date:
2010-12-15 @ 21:20
Sibilant bootstraps from the macros defined in core.lisp.  Probably
some of the macros in core.lisp can be moved into macros.lisp and
should be, but I think the core that can't be are defmacro, lambda,
and anything that those macros need.  Everything else can and should
be moved to macros.lisp.  Similarly, the order of macros in
macros.lisp is important, because many of the macros towards the
bottom are defined in terms of the macros above.

I added an issue on github:
https://github.com/jbr/sibilant/issues/issue/29. If you feel like it,
I'd love a patch that applies cleanly.  If not, I'll get to it soon,
as I agree there should be as few macros in core.lisp as possible.

–Jacob

On Wed, Dec 15, 2010 at 10:54 AM, Evan R. Murphy <evanrmurphy@gmail.com> wrote:
> Is there a consistent rule of thumb for deciding whether a macro should be
> defined in core.lisp or in macros.lisp? I get the sense that only the most
> fundamental operators are defined in the core and all others elsewhere, but
> is there a clear place to draw the line? Could some definitions be moved
> between core.lisp and macros.lisp without breaking it?
> Still trying to understand how Sibilant ticks. :)
>
> Evan

Re: [sibilant] Why are some macros defined in core.lisp and others in macros.lisp?

From:
Evan R. Murphy
Date:
2010-12-15 @ 21:28
Great, thanks for the super-clear explanation!

On Wed, Dec 15, 2010 at 3:20 PM, Jacob Rothstein
<jacob.rothstein@gmail.com>wrote:

> Sibilant bootstraps from the macros defined in core.lisp.  Probably
> some of the macros in core.lisp can be moved into macros.lisp and
> should be, but I think the core that can't be are defmacro, lambda,
> and anything that those macros need.  Everything else can and should
> be moved to macros.lisp.  Similarly, the order of macros in
> macros.lisp is important, because many of the macros towards the
> bottom are defined in terms of the macros above.
>
> I added an issue on github:
> https://github.com/jbr/sibilant/issues/issue/29. If you feel like it,
> I'd love a patch that applies cleanly.  If not, I'll get to it soon,
> as I agree there should be as few macros in core.lisp as possible.
>
> –Jacob
>
> On Wed, Dec 15, 2010 at 10:54 AM, Evan R. Murphy <evanrmurphy@gmail.com>
> wrote:
> > Is there a consistent rule of thumb for deciding whether a macro should
> be
> > defined in core.lisp or in macros.lisp? I get the sense that only the
> most
> > fundamental operators are defined in the core and all others elsewhere,
> but
> > is there a clear place to draw the line? Could some definitions be moved
> > between core.lisp and macros.lisp without breaking it?
> > Still trying to understand how Sibilant ticks. :)
> >
> > Evan
>