unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Andy Wingo <wingo@pobox.com>
Cc: guile-devel <guile-devel@gnu.org>
Subject: Re: syntax-local-binding
Date: Mon, 23 Jan 2012 21:11:51 -0500	[thread overview]
Message-ID: <878vkxsvbs.fsf@netris.org> (raw)
In-Reply-To: <87zkdem58t.fsf@pobox.com> (Andy Wingo's message of "Mon, 23 Jan 2012 23:19:30 +0100")

Andy Wingo <wingo@pobox.com> writes:

>> Your priorities are reversed from what they ought to be.
>>
>> What you _should_ be worried about is making commitments in our API that
>> we must continue to support forever.  This is a _real_ problem, since it
>> constrains our ability to modify our implementation in the future.
>
> I know I'm going to sound like Mr. Collins in Pride and Prejudice here,
> but I flatter myself that I know a thing or two about managing change --
> I mean, replacing the lazy-memoizing evaluator with the compiler,
> retrofitting psyntax into Guile, the whole subr mess, etc.

These are certainly impressive accomplishments, and I salute you for
this excellent work! :)

However, these accomplishments do not demonstrate that you understand
the importance of hiding implementation details so that future Guile
hackers can make similar transformations a decade or two from now.

For example, you seem unabashedly content to lock us into using psyntax
forever, despite the fact that it has known deficiencies having to do
with its phase story, as well as limitations in its handling of hygiene
in complex macros.  (c.f. "Improved hygiene", SRFI 72).  I don't mean to
suggest that we should replace psyntax anytime soon, but we might want
to replace it in a decade or two.  Therefore, it concerns me when I see
internal psyntax representations exported in our API.

> But frankly though, regarding change, while we do need the freedom to
> modify some things, some other practical freedoms just don't make the
> cost/benefit cut, for me.

I agree that sometimes practical necessity outweighs the need to hide
implementation details.  However, in this case, the only "benefit" is to
satisfy your desire to keep `the-environment' out of psyntax.

> This conservatism is preventing Guile from adding features.  And we do
> need features -- local-eval and syntax-parse among them.

For the record, I absolutely want Stefan to have what he needs to
implement `syntax-parse'.  My understanding is that all he needs is a
way to associate properties with syntactic keywords.  Toward that end, I
proposed that we should add something analogous to procedure properties
for macros.  This can be done without exposing internal details as you
have done.

> But what if they're the wrong interface?
>
> Well, then we use the normal deprecation mechanism to get rid of them,
> eventually (in the 2.2 series, for example).  We learned something.
> Users get warned off the code.  Life goes on.

Yes, this is always an option, but it is a _painful_ option for all
involved.  If we can already foresee the need to deprecate an interface,
wouldn't it be better not to add it in the first place?

* * * * *

Anyway, I can plainly see that your mind is set on this, and that all of
the above words were a waste of effort, so I'm going to try to drop it.

I just have one final request: please at least change the lexical
environments in your `local-eval' implementation to use the future-proof
`evaluator procedure' representation, as I have done in mine.

FWIW, criticisms aside, I _do_ very much appreciate that you heard my
plea for local-eval in 2.0.4, and that you have put so much time into
this.  Thanks for that, and for all the wonderful things you have done
for Guile and GNU.

      Mark



  reply	other threads:[~2012-01-24  2:11 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-15 17:00 syntax-local-binding Andy Wingo
2012-01-15 17:22 ` syntax-local-binding Andy Wingo
2012-01-19 11:41   ` syntax-local-binding Andy Wingo
2012-01-20 20:26     ` syntax-local-binding Mark H Weaver
2012-01-20 21:23       ` syntax-local-binding Andy Wingo
2012-01-20 22:03         ` syntax-local-binding Mark H Weaver
2012-01-22  0:03           ` syntax-local-binding Ludovic Courtès
2012-01-23 16:05           ` syntax-local-binding Andy Wingo
2012-01-23 21:03             ` syntax-local-binding Mark H Weaver
2012-01-23 22:19               ` syntax-local-binding Andy Wingo
2012-01-24  2:11                 ` Mark H Weaver [this message]
2012-01-24 11:42                   ` syntax-local-binding Andy Wingo
2012-01-24 17:29                     ` syntax-local-binding Noah Lavine
2012-01-24 10:30                 ` syntax-local-binding Peter TB Brett
2012-01-24 10:38                   ` syntax-local-binding David Kastrup
2012-01-24 11:26                   ` syntax-local-binding Andy Wingo
2012-01-24 13:25                     ` syntax-local-binding Mark H Weaver
2012-01-24 20:28                       ` mark uniqueness (Was: Re: syntax-local-binding) Andy Wingo
2012-01-25  0:26                         ` mark uniqueness Mark H Weaver
2012-01-25  9:02                           ` Andy Wingo
2012-01-24 21:22                       ` syntax-local-binding Andy Wingo
2012-01-25  2:30                         ` syntax-local-binding Mark H Weaver
2012-01-25  7:49                           ` syntax-local-binding Stefan Israelsson Tampe
2012-01-25 11:18                           ` syntax-local-binding Andy Wingo
2012-01-25 13:18                           ` syntax-local-binding Ludovic Courtès
2012-01-25 18:08                             ` syntax-local-binding Mark H Weaver
2012-01-26 11:21                             ` syntax-local-binding Andy Wingo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878vkxsvbs.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=guile-devel@gnu.org \
    --cc=wingo@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).