unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Dirk Herrmann <dirk@sallust.ida.ing.tu-bs.de>
Cc: guile-devel@gnu.org
Subject: Re: memoization and error messages
Date: Sun, 24 Nov 2002 17:49:27 +0100 (CET)	[thread overview]
Message-ID: <Pine.GSO.4.05.10211241703440.28618-100000@sallust.ida.ing.tu-bs.de> (raw)
In-Reply-To: <20021124125745.GA31397@www>

On Sun, 24 Nov 2002 tomas@fabula.de wrote:

> That means that macros aren't anymore `first class objects'? What
> consequences does this have for meta-programming?

I don't know.  Can you be a little more specific about what you want to
accomplish that you can only accomplish with macros as first-class objects
(or rather said "accomplish cleanly")?  If so, please provide code
examples that show your approaches.

[rambling on]
It may make sense to point out the following:  Separate in-advance
memoization brings the possibility to speed up evaluation, it allows to
store pre-compiled code and thus speed up loading time, and it is a great
way to clean up guile's internals and achieve better R5RS conformance.

However, it does impose some restrictions:  Guile will be stricter with
respect to certain R5RS demands.  Further, macro expansion is no longer as
dynamic as it was before.  That is, the point of time when expansion is
handled is known in advance - this was not the case before.

But, for those who depend on dynamic code expansion (i. e. re-expansion of
code whenever a macro changes) there is always eval.  People say they
don't like eval.  But, they like dynamic code expansion, huh?  And, what
are their problems with eval?  Performance considerations?  Isn't it
better to improve speed and cleanliness for 99,9% of the cases, where
dynamic re-expansion is not necessary, instead of inhibiting performance
improvements in order to be able to avoid using eval?

IMO, instead of depending on dynamic code expansion (a, well, not-so-clean
and performance-inhibiting implementation detail of guile), the use of
eval is better, because it is standard and it makes parts of the code
obvious where you depend on dynamic re-expansion.
[rambling off]

Well, don't feel angry for my ramblings above, I was a little bit carried
away when I wrote it :-)  I actually very much appreciate all kinds of
comments with respect to separation of memoization and execution.  I have
learned a lot from your and other people's comments.

Friendly greetings
Dirk



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


  reply	other threads:[~2002-11-24 16:49 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-24 10:43 memoization and error messages Dirk Herrmann
2002-11-24 12:57 ` tomas
2002-11-24 16:49   ` Dirk Herrmann [this message]
2002-11-24 22:25     ` Daniel Skarda
2002-11-28 18:02       ` Dirk Herrmann
2002-12-02 20:45         ` Daniel Skarda
2002-12-03  0:09           ` Lynn Winebarger
2002-11-26 10:42     ` tomas
2002-11-28 19:34     ` Neil Jerram

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=Pine.GSO.4.05.10211241703440.28618-100000@sallust.ida.ing.tu-bs.de \
    --to=dirk@sallust.ida.ing.tu-bs.de \
    --cc=guile-devel@gnu.org \
    /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).