From: David Kastrup <dak@gnu.org>
To: guile-devel@gnu.org
Subject: Re: Guile: What's wrong with this?
Date: Fri, 06 Jan 2012 20:19:00 +0100 [thread overview]
Message-ID: <87y5tkvduj.fsf@fencepost.gnu.org> (raw)
In-Reply-To: 4F074647.1020000@gnu.org
Bruce Korb <bkorb@gnu.org> writes:
> On 01/06/12 10:13, Mark H Weaver wrote:
>> Imagine that you were evaluating Scheme by hand on paper. You have your
>> program written on one page, and you have another scratch page used for
>> the data structures that your program creates during evaluation.
>> Suppose your program contains a very large lookup table, written as a
>> literal list. This lookup table is on your program page.
>>
>> Now, suppose....
>
> That is where my mental model diverges!!
The mental model of the computer is what counts.
>> sprintf(buf, "(define %s \"%s\")", "foo", my_str);
>> scm_eval_string(buf);
>> sprintf(buf, "(string-upcase! %s)", "foo")
>> // the string from my_str in "buf" is now scribbled over and completely gone
>> scm_eval_string(buf);
>
> Since I know the program I initially wrote (the define) is now gone,
Why would a define be gone?
> the string must have been copied off somewhere.
I don't think you understand the concept of garbage collection.
_Everything_ in Scheme exists permanently regarding all observable
semantics (well, weak hash tables are a somewhat weird exception).
Definitions, variables, continuations. There is no concept like a stack
of local values that would get erased. Thanks to call/cc, there is not
even a return stack that would get erased. Every object carries its own
lifetime with it. It dies when nobody remembers it, not because of
being in some scope or whatever else.
> I think one's first guess is that it was copied to someplace
> modifiable. However, that would be incorrect. It is copied off to
> writable memory, but marked as read-only for the purposes of Guile.
> Not intuitively obvious.
Also wrong.
--
David Kastrup
next prev parent reply other threads:[~2012-01-06 19:19 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-03 4:08 What's wrong with this? Bruce Korb
2012-01-03 15:03 ` Mike Gran
2012-01-03 16:26 ` Guile: " Bruce Korb
2012-01-03 16:30 ` Mike Gran
2012-01-03 22:24 ` Ludovic Courtès
2012-01-03 23:15 ` Bruce Korb
2012-01-03 23:33 ` Ludovic Courtès
2012-01-04 0:55 ` Bruce Korb
2012-01-04 3:12 ` Noah Lavine
2012-01-04 17:37 ` bytevector -- was: " Bruce Korb
2012-01-04 21:17 ` Ludovic Courtès
2012-01-04 22:36 ` Bruce Korb
2012-01-05 0:01 ` Ludovic Courtès
2012-01-05 18:36 ` non-reproduction of initial issue -- was: " Bruce Korb
2012-01-05 18:50 ` Mark H Weaver
2012-01-04 12:19 ` Ian Price
2012-01-04 17:16 ` Bruce Korb
2012-01-04 17:21 ` Andy Wingo
2012-01-04 17:39 ` David Kastrup
2012-01-04 21:52 ` Ian Price
2012-01-04 22:18 ` Bruce Korb
2012-01-04 23:22 ` Mike Gran
2012-01-04 23:59 ` Mark H Weaver
2012-01-05 17:22 ` Bruce Korb
2012-01-05 18:13 ` Mark H Weaver
2012-01-05 19:02 ` Mark H Weaver
2012-01-05 20:24 ` David Kastrup
2012-01-05 22:42 ` Mark H Weaver
2012-01-06 1:02 ` Mike Gran
2012-01-06 1:41 ` Mark H Weaver
2012-01-06 2:38 ` Noah Lavine
2012-01-06 13:37 ` Mike Gran
2012-01-06 14:11 ` David Kastrup
2012-01-06 18:13 ` Mark H Weaver
2012-01-06 19:06 ` Bruce Korb
2012-01-06 19:19 ` David Kastrup [this message]
2012-01-06 20:03 ` Mark H Weaver
2012-01-07 16:13 ` Mark H Weaver
2012-01-07 17:35 ` mutable interfaces - was: " Bruce Korb
2012-01-07 17:47 ` David Kastrup
2012-01-07 18:30 ` Mark H Weaver
2012-01-07 18:55 ` Mark H Weaver
2012-01-06 22:23 ` Guile BUG: " Bruce Korb
2012-01-06 23:11 ` Mark H Weaver
2012-01-06 23:35 ` Andy Wingo
2012-01-06 23:41 ` Bruce Korb
2012-01-07 15:00 ` Mark H Weaver
2012-01-07 15:27 ` Bruce Korb
2012-01-07 16:38 ` Mark H Weaver
2012-01-07 17:39 ` Bruce Korb
2012-01-09 15:41 ` Mark H Weaver
2012-01-09 17:27 ` Bruce Korb
2012-01-09 18:32 ` Andy Wingo
2012-01-09 19:48 ` Bruce Korb
2012-01-07 15:47 ` David Kastrup
2012-01-07 17:07 ` Mark H Weaver
2012-01-07 14:35 ` Mark H Weaver
2012-01-07 15:20 ` Mike Gran
2012-01-07 22:25 ` Ludovic Courtès
2012-01-10 9:13 ` The empty string and other empty strings Ludovic Courtès
2012-01-10 11:28 ` Mike Gran
2012-01-10 13:03 ` Mark H Weaver
2012-01-10 13:09 ` Mike Gran
2012-01-10 15:41 ` Mark H Weaver
2012-01-10 15:48 ` David Kastrup
2012-01-10 16:15 ` Mark H Weaver
2012-01-12 22:33 ` Ludovic Courtès
2012-01-13 9:27 ` David Kastrup
2012-01-13 16:39 ` Mark H Weaver
2012-01-13 17:36 ` David Kastrup
2012-01-16 8:26 ` Marijn
2012-01-16 8:47 ` David Kastrup
2012-01-20 21:31 ` Andy Wingo
2012-01-10 14:10 ` David Kastrup
2012-01-10 12:21 ` Mike Gran
2012-01-10 12:27 ` Mark H Weaver
2012-01-10 16:34 ` Ludovic Courtès
2012-01-10 17:04 ` David Kastrup
2012-01-06 23:28 ` Guile BUG: What's wrong with this? Bruce Korb
2012-01-07 20:57 ` Guile: " Ian Price
2012-01-08 5:05 ` Mark H Weaver
2012-01-06 9:23 ` David Kastrup
2012-01-05 7:22 ` David Kastrup
2012-01-04 22:46 ` Ludovic Courtès
2012-01-04 3:04 ` Mike Gran
2012-01-04 9:35 ` nalaginrut
2012-01-04 9:41 ` David Kastrup
2012-01-04 21:07 ` Ludovic Courtès
2012-01-04 10:03 ` Mark H Weaver
2012-01-04 14:29 ` Mike Gran
2012-01-04 14:45 ` David Kastrup
2012-01-04 16:47 ` Andy Wingo
2012-01-04 17:14 ` David Kastrup
2012-01-04 17:32 ` Andy Wingo
2012-01-04 17:49 ` David Kastrup
2012-01-04 18:09 ` Andy Wingo
2012-01-04 17:30 ` Bruce Korb
2012-01-04 17:44 ` David Kastrup
2012-01-04 18:26 ` Ian Price
2012-01-04 18:48 ` Mark H Weaver
2012-01-04 19:29 ` Bruce Korb
2012-01-04 20:20 ` David Kastrup
2012-01-04 23:19 ` Mark H Weaver
2012-01-04 23:28 ` Bruce Korb
2012-01-07 15:43 ` Fixed string corruption bugs (was Guile: What's wrong with this?) Mark H Weaver
2012-01-07 16:19 ` Fixed string corruption bugs Andy Wingo
2012-01-04 18:31 ` Guile: What's wrong with this? Mark H Weaver
2012-01-04 18:43 ` Andy Wingo
2012-01-04 19:29 ` Mark H Weaver
2012-01-04 19:43 ` Andy Wingo
2012-01-04 20:08 ` Bruce Korb
2012-01-04 20:14 ` David Kastrup
2012-01-04 20:56 ` Andy Wingo
2012-01-04 21:30 ` Bruce Korb
2012-01-04 17:19 ` Mark H Weaver
2012-01-05 4:24 ` Mark H Weaver
2012-01-04 22:37 ` Ludovic Courtès
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=87y5tkvduj.fsf@fencepost.gnu.org \
--to=dak@gnu.org \
--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).