unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Noah Lavine <noah.b.lavine@gmail.com>
Cc: guile-devel <guile-devel@gnu.org>
Subject: Re: CPS Update
Date: Sat, 16 Feb 2013 16:18:42 -0500	[thread overview]
Message-ID: <87txpcq7nx.fsf@tines.lan> (raw)
In-Reply-To: <CA+U71=MV7HU5XrbHC+okvL5eLJpS12r9uDphQiuwamx6UXzBRA@mail.gmail.com> (Noah Lavine's message of "Sat, 16 Feb 2013 14:36:54 -0500")

Hi Noah,

> On Sat, Feb 16, 2013 at 2:14 PM, Mark H Weaver <mhw@netris.org> wrote:
[...]
>     Noah Lavine <noah.b.lavine@gmail.com> writes:
[...]
>     > I have thought a bit about how to fix this. The module system already
>     > allows us to be notified whenever a variable changes, so it would be
>     > easy to watch all of the variables in (guile) and recompile procedures
>     > when they change. I might take a look at this soon.
>     
>     
>     This would be nice too, of course, but I warn you that it's a can of
>     worms.  In the general case, it involves on-stack replacement, because
>     you might need to recompile a procedure that's currently in the middle
>     of being run, and thus currently has activation records on the
>     stack(s).
>     
>
> You mean if a function modifies another function that called it.

There are many other cases.  Think multiple threads, coroutines, logic
programming systems, etc.  That's why I wrote "stack(s)".  Actually, I
should have written "(partial) continuation(s)".  There are any number
of ways that an activation record for some procedure you modify could
still be alive somewhere in the heap.  The issue can arise even with
simple lazy data structures.  I don't think it's something we should
punt on.  IMO anyway.

What do you think?

    Mark



  reply	other threads:[~2013-02-16 21:18 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-16  0:53 CPS Update Noah Lavine
2013-02-16  7:39 ` Stefan Israelsson Tampe
2013-02-16 16:29   ` Noah Lavine
2013-02-16 19:14     ` Mark H Weaver
2013-02-16 19:36       ` Noah Lavine
2013-02-16 21:18         ` Mark H Weaver [this message]
2013-02-19 15:51           ` Noah Lavine
2013-02-19 16:21             ` Mark H Weaver
2013-02-22  8:25               ` William ML Leslie
2013-02-23  7:49                 ` Mark H Weaver
2013-02-25  4:54                   ` William ML Leslie
2013-02-26 10:24                     ` Mark H Weaver
2013-02-19 17:29     ` Stefan Israelsson Tampe
2013-03-08 22:57 ` Noah Lavine
2013-03-09  8:31   ` Andy Wingo
2013-04-03 20:50     ` Noah Lavine

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=87txpcq7nx.fsf@tines.lan \
    --to=mhw@netris.org \
    --cc=guile-devel@gnu.org \
    --cc=noah.b.lavine@gmail.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).