[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: macroexpand-1
From: |
Catonano |
Subject: |
Re: macroexpand-1 |
Date: |
Tue, 5 Jun 2018 09:11:28 +0200 |
Mark,
thanks again for your remarks
> 2018-05-30 3:07 GMT+02:00 Mark H Weaver <address@hidden>:
>
>
You're right, it is problematic, and it's good that you noticed that.
> It exposes internal details of Guile's implementation, which is quite
> likely to change in the future. Do not use this interface if you can
> avoid it, and expect code that uses it to break in future versions of
> Guile. That said, it can be useful for writing things like macro
> steppers.
>
Well, if it's gonna change, than a macro stepper that relies on that is on
fragile ground, isn't it ?
Why do you say that it's likely going to change ?
Because the internal implementation is going to change ?
Has it ever changed alrready, in the past ?
I think a macro stepper is a fundamental tool. Macros are a unique feature
(as far as I understand) of lispy languages and there are some notable
libraries implemented as macros
The ability to step through them would allow for tinkerers to explore
I suppose this is exactly the reason why Racket has its macro stepping and
inspecting tools
I'm a bit surprised that such a fundamental functionality seems to be an
afterthought in Guile
> Will Guile have anything equivalent ? I asked myself
> >
> > Now you show me the "(system syntax)" namespace (or module)
> >
> > I didn't suspect it existed
> >
> > Does the manual mention it anywhere ? I didn' t see it
>
> Do you know how to search the manual or its index? Press 'i' from
> either the Emacs or standalone info browsers to search the index, where
> you can find 'syntax-local-binding'.
>
But how would I have known that I should have looed for
"syntax-local-binding" ?
And why not any other name ?
I mean, the manual doesn't even mention macro stepping
You can also search the entire manual text by pressing 's'. You can
> find (system syntax) that way.
>
Ok
But again: how would have I guessed that the namespace containing stuff I
was interested in was named (system syntax)" and not in any oher way ?
Of course I can search through a manual
> > Or maybe does it belong to any scheme standard ?
>
> No, certainly not.
>
> > Do any more (system ....) namespaces exist ?
> >
> > How would I know ?
>
> Look in the "module" subdirectory of the Guile source tree for modules
> that come with Guile itself, or more generally in the directories of
> %load-path after installation. The directory structure mirrors the
> module namespaces. The module (foo bar baz) is found in
> <DIR>/foo/bar/baz.scm, where <DIR> is a component of %load-path. For
> example, (system syntax) is in <DIR>/system/syntax.scm. In the Guile
> source tree, it's in module/system/syntax.scm.
Ok, I see those, now
Thanks