guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: string is read-only


From: Damien Mattei
Subject: Re: string is read-only
Date: Wed, 3 Aug 2022 12:55:02 +0200

interesting the ELF file argument :-) ,i understand the idea, like a Turing
machine that  protect some part of ribbon...
it is the same thing with arrays
scheme@(guile-user)> (define vct '#(1 2 3))
scheme@(guile-user)> vct
#(1 2 3)
scheme@(guile-user)> (vector-set! vct 1 7)
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure vector-set!: Wrong type argument in position 1 (expecting
mutable vector): #(1 2 3)

works in Chicken scheme:
(define vct '#(1 2 3))
(vector-set! vct 1 7)

but no restrictions with lists in Guile:
scheme@(guile-user)> (define lst '(1 2 3))
scheme@(guile-user)> (set-car! lst 7)
scheme@(guile-user)> lst
(7 2 3)
which seems not logic.(but i recognize the behavior of Scheme of '80 even
if i no more use set-car! and set-cdr!)
Damien

On Wed, Aug 3, 2022 at 11:41 AM Maxime Devos <maximedevos@telenet.be> wrote:

>
> On 03-08-2022 11:12, Damien Mattei wrote:
> > scheme@(guile-user)> (define str2 "hello")
> > scheme@(guile-user)> (string-set! str2 4 #\a)
> > ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> > string is read-only: "hello"
>
> It's not -- the existence of read-only strings is implied by
> substring/read-only, and also see:
>
> >   (guile)Object File format
> > Typically all segments of an ELF file are marked as read-only, except
> > that part that represents modifiable static data or static data that
> > needs load-time initialization.  Loading an ELF file is as simple as
> > mmapping the thing into memory with read-only permissions, then using
> > the segment table to mark a small sub-region of the file as writable.
> > This writable section is typically added to the root set of the garbage
> > collector as well.
>
> I'm not aware of explicit documentation that string literals may not be
> modified (and in this case, cannot be modified). However, see the
> following mail on string mutability and program text:
>
> https://lists.gnu.org/archive/html/guile-devel/2012-01/msg00135.html
>
> and maybe surrounding definitions.
>
> Greetings,
> Maxime.
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]